如何在Linux中的桥梁之间进行路由?

我想创build我的虚拟机的梁。 而且我想通过我的虚拟桥接进入互联网。 我做了什么:

DEVICE=br1 TYPE=Bridge ONBOOT=yes BOOTPROTO=static IPADDR=192.168.1.1 NETMASK=255.255.255.0 

我在我的networking(通过dhcp)桥接,与eth0链接:

 br0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 192.168.110.14 netmask 255.255.255.0 broadcast 192.168.110.255 

BR0:

 DEVICE=br0 TYPE=Bridge ONBOOT=yes BOOTPROTO=dhcp 

为eth0:

 TYPE=Ethernet BOOTPROTO=dhcp DEFROUTE=yes PEERDNS=yes PEERROUTES=yes NAME=eth0 DEVICE=eth0 ONBOOT=yes BRIDGE=br0 

iptables命令:

 iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -j SNAT --to-source 192.168.110.14 

但它不工作。

 ping -I br1 8.8.8.8 PING 8.8.8.8 (8.8.8.8) from 192.168.1.1 br1: 56(84) bytes of data. ^C --- 8.8.8.8 ping statistics --- 61 packets transmitted, 0 received, 100% packet loss, time 59999ms 

我做错了什么? 请帮忙。

桥接在第二层,路由在第三层,iptables在第三层而不是第二层。 在网桥运行的第二层没有路由的概念。 网桥使用第2层(例如MAC)地址,并将帧直接传送到目标第2层地址。 桥接发生在一个局域网上。 路由发生在局域网之间,它使用第3层(例如IP)地址将数据包从局域网发送到另一局域网。 在局域网中,帧封装了数据包,用于将帧从一台主机直接发送到另一台主机。

局域网中的主机将屏蔽目的地的第3层地址,以查看目的地是否在其局域网上。 如果是,它将为目标主机创build一个框架。 如果没有,它将为其configuration的网关(路由器)创build一个框架。 在二层,网关只是局域网中的另一台主机。 这是执行路由的网关,而不是网桥。 帧是否传递到目标主机或网关取决于源主机,而不是网桥。