VirtualBox支持各种虚拟网络:NAT, Bridge Adapter, Internal Network和Host-only Adapter等。其中Bridged Adapter最为简单和常用,它几乎是0配置,直接桥接有线或无线物理网卡就可以与互联网通信。
然而,我工作场所内部网和家里内部网的网段不相同,DHCP存在一定租赁时间,如果使用Bridged Adapter并DHCP获取IP地址的时候,虚拟机地址经常会改变。为此,我将笔记本电脑的VirtualBox虚拟机都修改为Host-only Adapter模式。
存在2个问题:
- Host-only Adapter(网段为192.168.56.0/24)默认不能与互联网通信。
- VirtualBox内置DHCP的IP租赁时间设置,也无法将MAC地址与IP地址静态绑定,这造成虚拟机IP地址每隔一段时间改变一次,给使用带来诸多不方便。另一方面,我也不想静态设置IP地址,因为如果这样做,我必须每安装一次虚拟机都要重新设置IP地址。
以前就听说过dnsmasq,不仅集成DNS、DHCP和TFTP功能,而且占用资源很少,设置也相对简单。
安装dnsmasq
1
|
|
创建/etc/dnsmasq.d-available/vboxnet0
,针对vboxnet0配置DHCP。
1 2 3 4 5 |
|
dhcp-option
: 192.168.56.1是默认网关 (host机器的vboxnet0地址). 208.67.222.222和208.67.220.220是DNS地址 (这里使用了OpenDNS).dhcp-range
: 192.168.56.2和192.168.56.254为分配地址范围. infinite表示IP永远不过期.
创建/etc/network/interfaces.d/vboxnet0
1 2 3 4 5 6 7 8 9 10 11 |
|
allow-hotplug
: 当启动VirtualBox图形界面时,它将创建vboxnet0. 这将触发NetworkManager自动执行ifup vboxnet0
post-up
- 启用
/etc/dnsmasq.d-available/vboxnet0
- 重启dnsmasq,让它监听192.168.56.1
- 删除
/etc/dnsmasq.d-available/vboxnet0
. vboxnet0通常不会随系统启动而自动创建,若默认配置vboxnet0于dnsmasq中,将导致dnsmasq启动失败。 - 路由192.168.56.0/24网段,使VirtualBox虚拟机与外网通讯。
- 启用
激活vboxnet0
1
|
|
重启动dnsmasq
1
|
|
静态地址绑定
在 /etc/dnsmasq.d/dhcp-host
中针对MAC地址08:00:27:81:51:85,分配机器名vbox-xp,分配IP地址192.168.56.2
1
|
|
最后,不要忘了重启动dnsmasq。