目的: 用bridage模式在主机跟虚拟机间建立一个10.0.1.0的网段,mask为255.255.255.0
主机的tap0网卡地址为10.0.1.1,也作为该虚拟网的网关
虚拟机的eth0网卡地址为10.0.1.2 默认网关 10.0.1.1
如果成功的话,虚拟机是可以通过一个虚拟网上英特网的;
如果哪里有误解的,很高兴大家给我指出
1. 在主机新建一个虚拟网卡tap0,安装 tunctl
命令
root$ apt-get install uml-utilities
$ tunctl -u root
2. 配置tap0网卡
/etc/init.d/procps restart
重启服务让文件改变立即生效
3. 配置VirtualBox的虚拟系统网卡(如何安装ViritualBox可以参考我的另一篇文章)
设置 => 网络 =>
连接方式选 Britage
, 网卡选tap0
如图
4. 确认后启动该虚拟系统,打开一个终端来手动配置网卡eth0
* 选择你喜欢的一种编辑器打开 /etc/network/interfaces
$vi /etc/network/interfac
es
/*在lo的下面加入一下内容*/
auto eth0
iface eth0 inet static
address 10.0.1.2
netmask 255.255.255.0
/*保存退出*/
*重启network服务,
$/etc/init.d/networking restart
* 然后用ifconfig命令查看eth0 ip设置是否成功
*再给给虚拟机添加一条默认网关
$route add default gw 10.0.1.1
*用route命令查看网关设置是否成功
*最后如果都设置OK, 我们来测试是否可以成功将虚拟机的数据包发送到外网
在主机上输入
$tcpdump -i eth0 icmp
/*监听主机网卡eth0上的icmp协议数据包接发情况*/
在虚拟机上输入
$ping 8.8.8.8
/*任意一个因特网IP*/
如果在主机上收到类似的信息,就代表设置OK
21:03:12.030315 IP ubuntu.local > google-public-dns-a.google.com: ICMP echo request, id 4602, seq 14, length 64
PS:现在你已经建立一个10.0.1.0的虚拟网,网内有一台主机和你的虚拟机,虚拟机可以向外网发送数据包,但是可能永远无法收到回应(如果你是以路由器上连接在主机的eth0网卡的话,路由不知道如何处理回应的数据包,不会发给我们的主机)
但是我们可以再在路由器上加一条规则,让它将10.0.1.0/24网段的数据包发送到你的物理机上
在主机上输入:
$route add -net 10.0.1.0 netmask 255.255.255.0 gw 主机的公共IP
这样我们的虚拟机就可以正常上网咯