VirtualBox支持各種虛擬網絡:NAT, Bridge Adapter, Internal Network和Host-only Adapter等。其中Bridged Adapter最為簡單和常用,它幾乎是0配置,直接橋接有線或無線物理網卡就可以與互聯網通信。
然而,我工作場所內部網和家裡內部網的網段不相同,DHCP存在一定租賃時間,如果使用Bridged Adapter並DHCP獲取IP地址的時候,虛擬機地址經常會改變。為此,我將筆記本電腦的VirtualBox虛擬機都修改為Host-only Adapter模式。
一個問題是Host-only Adapter(網段為192.168.56.0/24)默認不能與互聯網通信。google之後發現網上早有人遇到類似問題,他們給出的解決辦法是在/etc/rc.local中加入:
iptables -t nat -I POSTROUTING -s 192.168.56.0/24 -j MASQUERADE
另一個問題是VirtualBox內置DHCP的IP租賃時間設置,也無法將MAC地址與IP地址靜態綁定,這造成虛擬機IP地址每隔一段時間改變一次,給使用帶來諸多不方便。另一方面,www.linuxidc.com我也不想靜態設置IP地址,因為如果這樣做,我必須每安裝一次虛擬機都要重新設置IP地址。
以前就聽說過dnsmasq,不僅集成DNS、DHCP和TFTP功能,而且占用資源很少,設置也相對簡單。
- 安裝dnsmasq
sudo apt-get install dnsmasq
- 打開/etc/dnsmasq.conf,針對vboxnet0配置DHCP。
interface=vboxnet0
# 192.168.56.1是默認網關(host機器的vboxnet0地址)
# 208.67.222.222和208.67.220.220是DNS地址(www.linuxidc.com這裡使用了OpenDNS)
dhcp-option=vboxnet0,option:dns-server,192.168.56.1,208.67.222.222,208.67.220.220
# 192.168.56.2和192.168.56.254為分配地址范圍
# infinite表示IP永遠不過期
dhcp-range=vboxnet0,192.168.56.2,192.168.56.254,infinite
- 重啟動dnsmasq
sudo service dnsmasq restart
當然,dnsmasq也支持MAC地址與IP地址靜態綁定。比如,在/etc/dnsmasq.conf中針對MAC地址08:00:27:81:51:85,分配機器名vbox-xp,分配IP地址192.168.56.2
dhcp-host=vbox-xp,08:00:27:81:51:85,192.168.56.2
最後,不要忘了重啟動dnsmasq。