ubuntu 12.04下如何将物理网卡加入bridge连接外网

7020阅读 0评论2014-09-21 embeddedlwp
分类:LINUX

refer to: 
Linux有很多发布版,即便是同一种发布在不同的版本间对某些配置的设定方式也可能会有不同,这是Linux相对windows操作系统而言做得比较失分的方面。最近因为在ubuntu 12.04下要配置一个bridge,然后通过物理网卡(eth0)去连接外部的internet,验证成功之后感觉有必要记录一下。

第一部分:手动完成
假设你的机器已经有了一个物理网络接口eth0,其IP地址为192.168.10.46, 缺省的gateway是:192.168.10.1
在创建一个新的bridge设备(本文用br0来命名该设备)出来前,先清除掉eth0上原有的ip地址信息,因为当eth0接入到bridge设备后,自身将不再需要ip地址,它原来的ip地址我将把它分配给创建出来的br0设备(因为环境限制,我没试过将一个不同于eth0原有的ip地址分配给br0的情况,但我认为是可以的)。
ubuntu 12.04下执行下面的命令:
#ip addr flush dev eth0
该命令执行后通过ifconfig会发现该eth0的ip地址已经没有了。
我们通过下面的命令创建br0:
#brctl addbr br0
接着把eth0接入到br0设备中:
#brctl addif br0 eth0
现在br0有了,我们通过ifconfig命令给其设定ip地址和子网掩码:
#ifconfig br0 192.168.10.46/24 up
(使用以下命令也可以达到同样的效果:#ifconfig br0 192.168.10.46 netmask 255.255.255.0 up)
这个命令执行成功后,br0已经被激活,同时也有了ip地址,这样这台机器在局域网里已经可以ping通同网段的其他机器了,但是遗憾的是无法连接外网。ip route list的输出是:
# ip route list
192.168.10.0/24 dev br0  proto kernel  scope link  src 192.168.10.46
我们用下面的命令给br0指定一个缺省的Gateway ip地址:
#ip route add default via 192.168.10.1
(估计用下面这条命令也可以,没试 #route add -net 0.0.0.0 netmask 0.0.0.0 gw 192.168.10.1)

这个命令成功执行后,至少我这边已经可以成功连接到外网上了。此时ip route list的输出变成了:
# ip route list
default via 192.168.10.1 dev br0

192.168.10.0/24 dev br0  proto kernel  scope link  src 192.168.10.46

第二部分:持久化
第一部分配置的东西在系统reboot之后就会丢失,所以需要第二部分。
refer to: 
我自己试验成功后的/etc/network/interfaces文件内容如下:
# The loopback network interface
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet manual

auto br0
# Bridge configuration (static)
iface br0 inet static
        address 192.168.10.46
        netmask 255.255.255.0
        network 192.168.10.0
        gateway 192.168.10.1
        dns-nameservers 192.168.1.251
        bridge_ports eth0
# Bridge configuration (dhcp), comment out the below lines if dhcp is
# the case...
#iface br0 inet dhcp
#       bridge_ports eth0
#       bridge_stp off
#       bridge_fd 0
#       bridge_maxwait 0

环境限制,dhcp部分没试验过。总之这些步骤使用下来是可行的。
上一篇:KVM+QEMU世界中的pci总线与virtio总线
下一篇:关于x86_64架构下atomic、mutex、rwlock的性能对比