我们曾经有1个VPN隧道通过1个Internet连接,将2个数据中心连接到1个虚拟LAN(10.xxx)。 路线表等非常简单
现在我们在第二个独立的物理连接上增加了另一个通道,处理路由变得非常困难。 将新的连接全部路由很容易,但是如果我们只想将特定的主机路由到主机或子网到子网呢?
eg client1-site1 <--> vpn-on-site1 <--tun1--> vpn-on-site2 <--> service1-on-site2 client2-site1 <--> vpn-on-site1 <--tun2--> vpn-on-site2 <--> service2-on-site2
请注意,每边只有1个VPN节点。 我们设法做的是将数据包从client2-site1正确路由到service2-on-site2,但是返回的数据包有时会传送到tun1 …
你需要ip规则+ iptables和ip路由表。 2路线表:
1st -- with default output via tun1. 2nd -- with default output via tun2.
当在tun1 – > iptables mangle上接收到数据包时,将其标记为0x1,然后ip规则将它通过标记0x1路由到第一个路由表。 所以当答案将被给予包将通过接口去接收它,而不是默认的一个。
tun2的相同逻辑。
我不知道,如果这有帮助,但也尝试与rp_filter = 0(这个内核选项接收数据包接收,有助于局域网)
我做了类似的事情,这里是文章发现并重新发布在我的老lj。 没有发现源。
检查这篇文章,我转贴在lj上