具有相同IP的多个VPN设备

那么,这是一个相当尴尬的调查,我对此非常悲观,但让我们看看社区有什么话要说。

场景:
一个服务器连接到多个VPN端点做各种各样的东西。

问题:
相同的IP可以分配给多个设备。

挑战:
能够通过具有相同IP地址的每台设备成功路由stream量。

在以下情况下:

     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

问题来了。 有没有一种方法来控制每个接口的路由表,而不pipeIP?

目前,每个上行的接口都在/ etc / iproute2 / rt_tables中获得另一个条目,例如:

     100 tun0
     101 tun1
     102 tun2

然后为每个设备以下:

     ip规则添加从192.168.200.X iif tunX表tunX
     IP路由添加默认通过192.168.200.1表tunX

为了testing它,我使用了“curl –interface tunX”。
第一个接口或多或less地“赢”了路由决策。
我想要正确的界面取胜。
从理论上讲,我很清楚自己正在做的事情很多人会认为是错误的。 不过,我想知道是否有解决办法,因为我认为是有的。
有关它的任何想法? 也许iptables fwmark可以帮助,如果有的话?

您不能在两个不同的接口上使用相同的IP地址,而不会有任何中断,并且没有好的“解决方法”。 一个或多个networking将不得不重新编号。

(哦,现在是时候让自己一些IPv6,这没有这个问题。)