VirtualBox虚拟网卡经验总结
关于虚拟网卡与vlanif
虚拟机如果要用vlanif,貌似必须是在宿主机里配好vlanif,然后在虚拟机管理界面里将该vlanif以桥接方式连到虚拟机里。直接将物理网卡桥接到虚拟机里,然后再在虚拟机里配置vlanif时,该vlanif无法工作。
虚拟机网卡的各种工作模式的理解
Bridged Adapter #虚机网卡连接到宿主机的物理网卡,此时物理网卡相当于二层交换机
NAT  #虚机网卡连接到宿主机的物理网卡,此时物理网卡相当于有NAT功能的路由器
Host-only Adapter #虚机网卡连接到宿主机的Host-Only虚网卡(VirtualBox Host-Only Ethernet Adapter)
Internal Network #虚机网卡不连接外部网络(包括宿主机)
Not attached #虚拟网卡不接线,相当于没有接线
虚拟机网卡的各种工作模式的实测情况
在宿主机连接外部网络,通过DHCP方式获得地址时,进行了系列测试。宿主机地址为192.168.27.14,如下:
以太网适配器本地连接:
连接特定的DNS 后缀 . . . . . . . :
描述. . . . . . . . . . . . . . . : Realtek PCIe GBE Family Controller
物理地址. . . . . . . . . . . . . : D8-D3-85-E9-3A-FA
DHCP 已启用 . . . . . . . . . . . : 是
自动配置已启用. . . . . . . . . . : 是
IPv4 地址 . . . . . . . . . . . . : 192.168.27.14(首选)
子网掩码 . . . . . . . . . . . . : 255.255.255.0
获得租约的时间 . . . . . . . . . : 2010年12月6日19:17:18
租约过期的时间 . . . . . . . . . : 2010年12月12日19:17:17
默认网关. . . . . . . . . . . . . : 192.168.27.1
DHCP 服务器 . . . . . . . . . . . : 192.168.2.5
DNS 服务器 . . . . . . . . . . . : 192.168.2.5
TCPIP 上的NetBIOS  . . . . . . . : 已启用
测试1:虚拟机网卡设为DHCP方式,选NAT模式时,
虚拟机(CentOS)的eth0网卡设为DHCP方式时,获得10.0.2.15的地址,如下:
IP: 10.0.2.15
GW: 10.0.2.2
DNS: 192.168.2.5(/f文件由dhclient-script脚本自动配置为与宿主机OS的一致)
虚拟机可访问公网(虚拟机发出的包的源地址被NAT为宿主机的地址192.168.27.14)。
测试2:虚拟机网卡设为DHCP方式,选Host-only Adapter模式时,
虚拟机(CentOS)的eth0网卡设为DHCP方式时,可获得192.168.56.x的地址,如下:
IP: 192.168.56.101
GW: 没有配置
DNS: 没有配置
虚拟机只能访问宿主机的VirtualBox Host-Only Ethernet Adapter网卡地址(缺省是192.168.56.1),而不能访问其它的网络,这也是为什么叫Host-only Adapter的原因。
如果将宿主机的VirtualBox Host-Only Ethernet Adapter网卡地址修改成其它的非192.168.56.x的地址,则虚拟机将无法访问宿主机的VirtualBox Host-Only Ethernet Adapter网卡地址。
如果将宿主机的VirtualBox Host-Only Ethernet Adapter网卡设到其它物理网卡的"共享"连接里,或者桥接到其它物理网卡,则虚拟机就可以访问其它网络的。
测试3:虚拟机网卡设为DHCP方式,选Bridged Adapter模式时
虚拟机(CentOS)的eth0网卡设为DHCP方式时,可获得192.168.27.x的地址,如下:
IP: 192.168.27.36
GW: 192.168.27.1
DNS: 192.168.2.5(/f文件,由/sbin/dhclient-script脚本自动配置为与宿主机OS的一致)
虚拟机可访问外网。虚拟机发出的包是直接从物理网卡发出,在物理网卡上抓包,宿主机是Windows时看不见,宿主机是Linux 时能看见。
在此模式下,从网络层面看,虚拟机网卡与宿主机网卡的网络地位是一样的,都可以从物理网络DHCP获得192.168.27.x的地址。
测试4:虚拟机网卡设为静态地址方式,选NAT模式时,
虚拟机网卡地址手工设为如下就能出公网:
IP: 10.0.2.15 (10.0.2.x/24的任一地址都可以)
GW: 10.0.2.2
DNS: 192.168.2.5(/f文件,与宿主机OS的一致)
测试5:虚拟机网卡设为静态地址方式,选Host-only Adapter模式时,
虚拟机网卡地址手工设为如下就能访问宿主机的VirtualBox Host-Only Ethernet Adapter网卡(缺省为192.168.56.1):IP: 192.168.56.101(192.168.56.x/24的任一地址都可以)
GW: 没有配置
DNS: 没有配置
测试6:虚拟机网卡设为静态地址方式,选Bridged Adapter模式时
虚拟机网卡地址手工设为与宿主机同一个网段就可出外网,例如:
IP: 192.168.27.36 (必须是宿主机所在物理网络上没被占用的,否则会地址冲突)
GW: 192.168.27.1
DNS: 192.168.2.5(/f文件,与宿主机的一致)
关于Host-Only网卡
VirtualBox软件安装完后,会在宿主机中自动生成一个虚拟网卡(VirtualBox Host-Only Ethernet Adapter),其缺省地址为192.168.56.1/24。
Host-Only网卡缺省开启了DHCP服务。DHCP服务自用192.168.56.100地址,从192.168.56.101开始分配给DHCP客户机。如下
以太网适配器VirtualBox Host-Only Network:
连接特定的DNS 后缀 . . . . . . . :
描述. . . . . . . . . . . . . . . : VirtualBox Host-Only Ethernet Adapter
物理地址. . . . . . . . . . . . . : 08-00-27-00-A4-03
DHCP 已启用 . . . . . . . . . . . : 否
自动配置已启用. . . . . . . . . . : 是
tcpip报文抓包详解
IPv4 地址 . . . . . . . . . . . . : 192.168.56.1 (首选)
子网掩码 . . . . . . . . . . . . : 255.255.255.0
默认网关. . . . . . . . . . . . . :
TCPIP 上的NetBIOS  . . . . . . . : 已启用
注意:不要直接修改宿主机上的Host-Only虚拟网卡配置,而应该使用VirtualBox图形界面来修改,否则可能会出现Host-Only网卡不受控的现象。
菜单:管理->全局设定->网络
关于Host-Only 网卡的"Inertnet 连接共享"功能
Win7中,在"控制面板\网络和 Internet\网络连接"中,
打开"本地连接"(物理网卡)的属性,在"共享"选项卡下,设置"Inertnet 连接共享", 选中 VirtualBox Host-Only Network ,单击"确定"。
此时,VirtualBox Host-Only Network 的IP 地址会被Win7重新自动设置为192.168.137.1/24。
Vbox 虚拟机网卡桥接模式和Linux Bridge 功能合用问题
虚拟机网卡桥接到宿主机,虚拟机客户系统里的Linux Bridge 功能无法工作。
方式二无法工作
方式三无法工作
方式一可以工作
方式一)虚拟机网卡桥接到宿主机的br0时才能工作
操作:略
方式二)虚拟机网卡桥接到宿主机的物理网卡时,虚拟机里的br0无法工作
操作:虚拟机网卡桥接到宿主机的物理网卡,再在虚拟机里用brctl将两个网卡加入到br0组。
结果:宿主机并不会将收到的报文交给虚拟机,而是丢弃了。
原因:宿主机的vboxnetflt模块会过滤收到的报文,只将目的MAC是虚拟机网卡或广播地址的报文上传给虚拟机,其它的丢弃,从而导致虚拟机无法收到报文。
在70.168上ping 70.120时,在宿主机的eth2网卡上抓包,能看到如下报文的ARP报文和ICMP报文,但在虚拟机的eth1网卡上抓包,只能看到2个ARP报文(请求和响应),说明被宿主机滤掉了。
17:27:27.775966 00:14:4f:49:df:71 > ff:ff:ff:ff:ff:ff, ARP, length 42: Request who-has 192.168.70.120 tell 192.168.70.168, length 28
17:27:27.786263 4a:79:33:ed:15:a3 > 00:14:4f:49:df:71, ARP, length 60: Reply 192.168.70.120 is-at 4a:79:33:ed:15:a3, length 46
08:55:50.522551 00:14:4f:49:df:71 > 4a:79:33:ed:15:a3, IPv4, length 98: 192.168.70.168 > 192.168.70.120: ICMP echo request, id 29229, seq 1362, length 64
08:55:51.522553 00:14:4f:49:df:71 > 4a:79:33:ed:15:a3, IPv4, length 98: 192.168.70.168 > 192.168.70.120: ICMP echo request, id 29229, seq 1363, length 64
08:55:52.522544 00:14:4f:49:df:71 > 4a:79:33:ed:15:a3, IPv4, length 98: 192.168.70.168 > 192.168.70.120: ICMP echo request, id 29229, seq 1364, length 64
方式三)虚拟机网卡桥接到宿主机的物理网卡时,宿主机里的Linux Bridge功能也无法工作
操作:虚拟机网卡桥接到宿主机的物理网卡,再在宿主机里用brctl将两个网卡加入到br0组。
结果:宿主机不会将报文通过br0发出。在70.168上ping 70.120时,连ARP都无法完成。
原因:宿主机上的vboxnetflt模块与Linux Bridge模块冲突。vboxnetflt模块优先于Linux Bridge模块,这样ARP请求广播被劫持到虚拟机里,Linux Bridge模块收不到。
VBoxManage操作网卡
VBoxManage list natnets | intnets | bridgedifs | hostonlyifs | dhcpservers
VBoxManage showvminfo wsv01 |egrep '^NIC'
VBoxNetAdpCtl: Error while adding new interface: failed to open /dev/vboxnetctl: No such file or directory
检查是否正常:
正常应该如下:
$ lsmod|grep vbox
vboxnetadp 5587 0
vboxnetflt 16481 0
vboxdrv 1806371    2 vboxnetadp,vboxnetflt
$ ls -l /dev/vbox*
crw------- 1 root vboxusers 10, 58 2010-08-19 08:19 /dev/vboxdrv
crw------- 1 root root 10, 57 2010-08-19 08:19 /dev/vboxnetctl
$ ls -l /etc/init.d/vboxdrv
-rwxr-xr-x 1 root root 12680 Jul 10 20:05 /etc/init.d/vboxdrv
解决办法:
重新生成启动项:
# /etc/init.d/vboxdrv setup

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。