2007年12月16日星期日

把你的Linux变做网桥

网桥的确是过时了,现在哪个单位没有交换机啊,不过研究研究总是没有坏处的,有人就用它在一台电脑上组建自己的虚拟网络。再说Linux已经超越Windows98了,下一个目标就是WindowsXP,而XP有的功能我们Linux怎么能没有呢?

可以很轻松的在Linux上实现网桥的功能。网桥功能自2.4开始已经集成进内核,不过我们还是要安装一个工具brctl

sudo aptitude install bridge-utils
使用起来也很简单。如果你是Ubuntu,你需要将/etc/network/interfaces配置成这样
auto eth0
iface eth0 inet static
address 0.0.0.0

auto eth1
iface eth1 inet static
address 0.0.0.0

auto br0
iface br0 inet static
address 192.168.1.89
netmask 255.255.255.0
network 192.168.0.0
broadcast 192.168.1.255
gateway 192.168.1.1
dns-nameservers 192.168.1.1
bridge_ports eth0 eth1
br0就是网桥的名称,它桥接了eth0和eth1。注意eht0和eht1的IP地址都被设为0.0.0.0,如果这台机器你只想把它作为网桥使用,也可以将br0的地址设为0.0.0.0(当然网关,子网掩码之类的也统统不要),那我们就组建了一台透明网桥,它对于网络中的其它机器是不可见的(没有IP)。

顺便帮助理解一下网桥的概念。启用网桥后,可以看做网桥对外代替了被桥接的适配器,如果网络中的机器要与网桥服务器通讯,不管它从哪个适配器进出,使用的是网桥的ip。启用网桥
sudo ifup br0
那么我们安装的工具在哪儿呢?其实这背后的机制就是/etc/network/if-*目录中的bridge文件,我们仔细看看就知道其实它调用了brctl,这就是我们一开始安装的工具。

我们也可以自己手工使用brctl,比如创建和删除一个网桥:
brctl addbr bridgename
brctl delbr bridgename
关于brctl的用法和更多实例可以参见Net:Bridge

没有评论: