先安裝一些工具
apt-get install uml-utilities(tunctl要用到)
tunctl可以產生一個tap,我的理解是虛擬網卡
apt-get install bridge-utils (brctl要用到)
brctl就是設定一個橋接器了
主機是debian,IP是192.168.1.2
就一張網卡eth0
客戶機是XP
路由上開通了dhcp功能,地址是192.168.1.1
virtualBox上網方式有三種
nat
這種方式在客戶機上不用做設定,直接自動捕獲就行了,得到的地址也和外部地址不一樣.
我這裡是
IP:10.0.2.15
gw:10.0.2.2
可以訪問外網,但主客機不能互訪。
Host Interface
這個是最複雜的,leemars更出了四種方案,直接引用這四種方案了
--------------------------------------------------------------------------
方案一:
其實是利用iptables的nat功能來實現主客機通訊的引用自leemars,這個我沒試
Host :
#echo 1 > /proc/sys/net/ipv4/ip_forward #開啟轉寄功能
#iptables -t nat -A POSTROUTING -j MASQUERADE #利用iptables完成NAT功能
#chmod 0666 /dev/net/tun #設定存取權限
#tunctl -t tap0 -u leemars #建立一個tap裝置, 名字為tap0, 所有者為leemars
#ifconfig tap0 up #啟用tap0
#ifconfig tap0 10.10.10.1 netmask 255.255.255.0 #為tap0指定IP和網段, 為10.10.10.1/24.
Guest :
網卡設定如下:
IP : 10.10.10.10
Netmask : 255.255.255.0
Gateway : 10.10.10.1
Guest -> WAN :
由Linux的iptables完成NAT功能, 提供WAN的訪問服務.
Guest -> Host :
10.10.10.1是真實的Host. Guest對Host的任何訪問都可以通過訪問10.10.10.1來完成.
Host -> Guest :
10.10.10.10是真實的Guest. Host對Guest的任何訪問都可以通過訪問10.10.10.10來完成.
--------------------------------------------------------------------------
方案二 : Transparent Bridge (Layer 2)
我用這個方案的,其實是產生一個橋接器,然後將虛擬網卡和物理網卡用橋接器串連起來.
Host :
#chmod 0666 /dev/net/tun #設定存取權限
#tunctl -t tap0 -u leemars #建立一個tap裝置, 名字為tap0, 所有者為leemars
#ifconfig eth0 0.0.0.0 promisc #使eth0進入promiscuous模式
#ifconfig tap0 0.0.0.0 promisc #使tap0進入promiscuous模式
#brctl addbr br0 #增加一個橋接器
#brctl addif br0 eth0 #將eth0加入橋接器
#ifconfig eth0 up #啟用eth0
#dhclient br0 #為br0設定IP地址
#brctl addif br0 tap0 #將tap0加入橋接器
#ifconfig tap0 up #啟用tap0
Guest :
網卡設定為DHCP. 或者在設定為Host的Subnet中的一個IP地址, 如下例:
IP : 192.168.1.201
Netmask : 255.255.255.0
Gateway : 192.168.1.1
可以實現主客機直接互訪
--------------------------------------------------------------------------
方案三 : Transparent IP (Layer 3) proxy ARP bridge (by parprouted)
這個我沒試,因為需要parprouted這個軟體的
Host :
#echo 1 > /proc/sys/net/ipv4/ip_forward #開啟轉寄功能
#chmod 0666 /dev/net/tun #設定存取權限
#tunctl -t tap0 -u leemars #建立一個tap裝置, 名字為tap0, 所有者為leemars
#ip link set tap0 up #啟用tap0
#ip addr add 169.1.1.1/32 dev tap0 #為tap0任意指定一個私人地址
#parprouted [-d] ath0 tap0 #啟動parprouted監聽ath0和tap0. -d參數為Debug模式
Guest :
網卡設定如下:
IP : 192.168.1.201
Netmask : 255.255.255.0
Gateway : 192.168.1.1
Guest -> WAN :
由網關來提供WAN的訪問服務.
Guest -> Host :
直接存取Host的IP地址即可.
Host -> Guest :
直接存取Guest的IP地址即可.
--------------------------------------------------------------------------
方案四 : ARP Proxy(by Linux) + Route
通過路由來進行主客機通訊的
Host :
#echo 1 > /proc/sys/net/ipv4/ip_forward #開啟轉寄功能
#chmod 0666 /dev/net/tun #設定存取權限
#tunctl -t tap0 -u leemars #建立一個tap裝置, 名字為tap0, 所有者為leemars
#ip link set tap0 up #啟用tap0
#route add -host 192.168.1.201 dev tap0 #增加一個路由, 將192.168.1.201定向到tap0
#echo 1 > /proc/sys/net/ipv4/conf/ath0/proxy_arp #開啟ath0上的ARP Proxy
#echo 1 > /proc/sys/net/ipv4/conf/tap0/proxy_arp #開啟tap0上的ARP Proxy
Guest :
網卡設定如下:
IP : 192.168.1.201
Netmask : 255.255.255.0
Gateway : 192.168.1.1
直接可以互訪了
3.Internal network
這個不知道是什麼樣的。