TAG

首都機能移轉 (2) 歌詞 (2) 靠北文 (40) 戲言 (30) 糟糕 (7) ACG (23) Assembly (2) Boost (2) C (31) C++ (69) CMake (4) CSIE (67) Debian (34) Design_Pattern (2) Django (1) Eclipse (1) en_US (13) FFmpeg (3) FoolproofProject (26) FreeBSD (2) Git (4) GNU_Linux (65) IDE (5) Java (11) JavaScript (19) KDE (15) Khopper (16) KomiX (3) Kubuntu (18) Life (1) Lighttpd (2) Mac_OS_X (2) Opera (1) PHP (2) PicKing (2) Programing (21) Prolog (1) Python (7) QSnapshot (2) Qt (30) Qt_Jambi (1) Regular_Expression (1) Shell_Script (7) Talk (98) VirtualBox (7) Visual_Studio (13) Windows (18) zh_TW (36)

2011年11月15日 星期二

Setting host-only adapter on Linux host

在虛擬機器上我一直是 VirtualBox 的支持者, 儘管我並不賞識 Sun 或是 Oracle.
要讓 host OS 和 guest OS 可以透過網路互相溝通, 比較簡單的方式是使用 bridged adapter, 而用這種方式拿到的 guest IP 會跟 host IP 處在同一個網域. 也就是說和 host 處在同一個區網的其他機器都看得到這個 guest, 如果本來的用途就是要分享給區網使用, 那這就是最直接的方法.
但如果你只希望 guest OS 只被 host 看到, 那就得用點迂迴的方式, 那就是在 guest 使用兩個網路卡介面, 一個使用 NAT, 另一個使用 Host-only adapter.
NAT 的概念就不多說了, 總之對外連線時會經由 host 的介面轉換為 host adapter 的封包, 對外來說就只看得到 host, 裡面連得出去, 外面無法定址進來.
而 host-only adapter 則會在 host 建立一個 VirtualBox 專用的虛擬網路卡, host OS 和 guest OS 之間的通道就是靠這張網路卡. 由於 host OS 上的這張網路卡並未接上網際網路, 所以所有 guest OS 分配到的 IP 都只有 host 知道.
設定好之後, 這兩個網路卡介面剛好形成互補: NAT 可對外但不能對內, host-only 可對內但不能對外.
但是筆者在 Linux 上使用時卻發現 host-only adapter 無法互連, 在查看 log 之後, 發現是防火牆的問題, 調整一下防火牆設定即可.
筆者是使用 Shorewall 做為 iptables 設定的前端, 以下直接解釋我做的調整:
首先要在 /etc/shorewall/zones 裡新增一個 zone, 以和其他區網做分別:
#ZONE TYPE OPTIONS IN      OUT
#                  OPTIONS OPTIONS
hoa   ipv4
接著在 /etc/shorewall/interfaces 定義哪些網路卡介面屬於這個 zone:
#ZONE INTERFACE BROADCAST OPTIONS
hoa   vboxnet0  detect    dhcp,tcpflags,logmartians,nosmurfs
最後在 /etc/shorewall/policy 定義 zone 跟防火牆之間的連線方針:
#SOURCE DEST POLICY LOG LEVEL LIMIT:BURST
$FW     hoa  ACCEPT
hoa     $FW  ACCEPT
這樣就完成啦. 最後記得重啟 shorewall:
# shorewall safe-restart

沒有留言:

張貼留言