嗯,这是一个相当尴尬的询问,我对此非常悲观,但让我们看看社区会怎么说。
场景:
一个服务器连接到多个 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 tun0 101 tun1 102 tun2
然后针对每个设备执行以下操作:
ip 规则从 192.168.200.X iif tunX 表 tunX 添加 ip route 通过 192.168.200.1 表添加默认 tunX
为了测试它,我使用了“curl --interface tunX”。
第一个接口或多或少“赢得”了路由决策。
我希望正确的接口获胜。
从理论上讲,我很清楚我正在做一些很多人认为错误的事情。但是我想知道是否有办法解决这个问题,因为我认为有。
有什么想法吗?也许 iptables fwmark 可以提供帮助?
答案1
你不能在两个不同的接口上使用相同的 IP 地址,除非某物中断,并且没有好的“解决方法”。一个或多个网络将必须重新编号。
(哦,现在是时候为自己获取一些没有这个问题的 IPv6 了。)