好吧,这是一个相当尴尬的询问,我对此非常悲观,但让我们看看社区有什么要说的。
场景:
连接到多个 VPN 端点的服务器执行各种操作。
问题:
同一个 IP 可以分配给多个设备。
挑战:
能够通过具有相同 IP 地址的这些设备中的每一个成功地路由流量。
在以下场景中:
tun0: 192.168.200.10 192.168.200.1 tun1: 192.168.200.11 192.168.200.1 tun2: 192.168.200.12 192.168.200.1
没问题。使用 Linux 的基于源的路由非常有用。但是,由于我无法从客户端控制要分配的 IP 地址,因此我可能会得到:
tun0: 192.168.200.10 192.168.200.1 tun1: 192.168.200.10 192.168.200.1 tun2: 192.168.200.10 192.168.200.1
问题来了。有没有办法控制每个接口的路由表而不考虑 IP?
目前,每个上行的接口都会在/etc/iproute2/rt_tables中获得另一个条目,例如:
100吨0 101屯1 102屯2
然后为每个设备执行以下操作:
ip 规则从 192.168.200.X 添加 iif tunX 表 tunX ip route add default via 192.168.200.1 table tunX
为了测试它,我正在使用“curl --interface tunX”。
第一个接口或多或少地“赢得”路由决策。
我想要正确的界面取胜。
从理论上讲,我很清楚我正在做一些很多人认为是错误的事情。但是我想知道是否有解决方法,因为我认为有。
有什么想法吗?也许 iptables fwmark 可以提供帮助吗?