我们在Ubuntu上build立了一个桥梁,将我们的LAN连接到位于同一子网上的网关。 我们需要这个能够控制stream量,并且目前不能改变子网,所以我们不能仅仅路由它。
网关由我们的ISP控制,它们为192.168.0.0/16内的其他/ 24个子网提供MPLS。
目前的设置如下:
192.168.10.1(gw)·eth0·br0(192.168.10.3)·eth1·LAN(192.168.10.0/24)
br0 Link encap:Ethernet HWaddr .. inet addr:192.168.10.3 Bcast:192.168.10.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 ... eth0 Link encap:Ethernet HWaddr .. UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 eth1 Link encap:Ethernet HWaddr .. UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
这是行之有效的,不会造成任何问题。
我们在同一台服务器(192.168.10.3)上的数据中心基础设施上也有一个Tinc VPN,它不属于网桥的一部分。 即:
tincvpn Link encap:Ethernet HWaddr .. inet addr:192.168.10.3 Bcast:192.168.255.255 Mask:255.255.0.0 ...
我们想覆盖从LAN通过网桥的数据包的路由为某些目的地(例如192.168.5.0/24),使他们通过tinc去。 即:局域网上的192.168.10.x到192.168.5.x应该通过tinc而不是网关。
我们希望这可以在局域网中的所有机器上工作,而不必configuration任何东西,但是现在已经find了一种解决方法,即将以下静态路由添加到LAN上的每台PC /服务器:
route add -net 192.168.5.0/24 via 192.168.10.3 dev eth0
为了使静态路由起作用,我们还必须为192.168.10.3上的所有接口启用proxy_arp。
我们尝试了以下configuration,但没有奏效:
ip rule add fwmark 20 lookup 20 ip route add 192.168.0.0/16 dev tincvpn table 20 ebtables -t broute -I BROUTING -i eth1 -p ipv4 --ip-dst 192.168.5.0/24 -j REDIRECT --redirect-target DROP iptables -t mangle -I PREROUTING -i eth1 -d 192.168.5.0/24 -j MARK --set-mark 20
有了这个设置,数据包到达了mangle规则并被标记了,但是没有路由到tincvpn接口
我们的理解是,我们需要使用ebtables将数据包丢弃到网桥之外,然后使用基于策略的路由来使数据包通过tinc。 这种理解是否正确?
如果有人有任何想法,为什么这不起作用,将不胜感激。
非常感谢,
汤姆