linux双网卡做网桥


linux双网卡做网桥
 
若将virtual box的网络连接方式设为NAT,则虚拟机可以直接与外网相连,但不能与宿主机相连。以下将virtual box的网络连接方式设为host interface方式。实现了虚拟机可以与宿主机相连,同时也可以连接互联网。 
一、主机上已有网卡ip为192.168.1.3。在主机上做以下步骤新建一张虚拟网卡以供与虚拟机网络数据交换使用。 
(1)、安装提供tunctl与brctl工具的软件包 
yum install tunctl-1.5-1.fc10 bridge-utils -y 
(2)、设置允许转发 
echo 1 > /proc/sys/net/ipv4/ip_forward 
(3)、利用iptables完成ip数据包转发功能 
iptables -t nat -A POSTROUTING -j MASQUERADE 
(4)、设定允许Virtual Box访问/dev/net/tun文件 
chmod 0666 /dev/net/tun 
(5)、tap设备tap0当作虚拟网卡,其所有者设为mygod用户,这里要注意一定要将所有者设成自己的帐户,否则运行虚拟机会出错 
tunctl -t tap0 -u mygod 
(6)、激活虚拟网卡 
ifconfig tap0 up 
(7)、设定虚拟网卡的ip与掩码 
ifconfig tap0 10.0.2.3 netmask 255.255.255.0 
 
二、打开Virtual Box,在虚拟机的网络设置中,将连接方式设为host interface,并且将Host Interface Settings中的Interface Name填为tap0。 
 
三、进入虚拟机CentOS-5.2后,运行以下命令。 
(1)、运行system-config-network,对eth0网卡作以下设置: 
ip:10.0.2.4 
netmask:255.255.255.0 
gate way:10.0.2.3 
(2)、重新激活eth0网卡 
ifdown eth0 
ifup eth0 
 
四、解决问题: 
以上步骤做完之后,在虚拟机上能够正确ping到宿主机192.168.1.3,但却无法连接外网,并且ping网关192.168.1.1收到From 10.0.2.3 icmp_seq=1 Destination Host Prohibited的提示。 
使用iptables -t filter --list命令后发现filter表中的FORWARD链里有一条 
“REJECT     all  --  anywhere             anywhere            reject-with icmp-host-prohibited”。 
想想应该就是这一条规则作怪,于是执行以下命令:iptables -t filter -F FORWARD。 
OK,现在可以ping通网关了,但ping www.163.com还是得到unknown host www.163.com的提示。看来是虚拟机的DNS设置的问题。于是打开/etc/resolv.conf文件,填加“nameserver 192.168.3.1”。搞定! 
 
五、宿主机重启后只要以root帐户再次运行以下脚本即可: 
#!/bin/bash 
tunctl -d tap0 
tunctl -t tap0 -u mygod 
ifconfig tap0 up 
ifconfig tap0 10.0.2.3 netmask 255.255.255.0 
iptables -t filter -F FORWARD 
iptables -t nat -A POSTROUTING -j SNAT -s 10.0.2.0/24 --to-source 192.168.3.3 
echo 1 > /proc/sys/net/ipv4/ip_forward

相关内容

    暂无相关文章