我正在尝试使用两个openvpn客户端来公开服务器的服务,正如标题中已经提到的那样。 我可能会玩的力量远远超出我目前的理解,但请忍受我:-)
这是我目前的设置:
INTERNET eth0 | | VPN tun0 /----- perimeter-a -----\ internet clients-: :------ server \----- perimeter-b -----/
server也是这种情况下的VPN服务器。 perimeter-a和perimeter-b是VPN客户端。
server有eth0(公共接口),eth1(另一个公共接口)和tun0(vpn接口)。 每个perimeter都有eth0(公共接口)和tun0(vpn接口)。
目标是任何internet client都能够与perimeter-a或perimeter-b进行通话,并且让他们看起来像是被任何一个服务的,而事实上,您正在服务于server 。 连接到perimeter-a上的游戏服务器(例如)并连接到perimeter-b上的游戏服务器,每次都会让server停止运行。
这个规则的唯一例外应该是当perimeter-a或perimeter-b不转发相应的端口时。 端口应该在这两台机器上显式转发。 UDP和TCP都应该被处理。
我以前的尝试依赖于通过iptables的NAT,但有失去在server上的实际internet client的地址的问题。 应该保留internet client的地址 – 这就是为什么我决定使用VPN,主要是通过server来访问server 。
我目前的尝试是使用perimeter-a和perimeter-b作为server互联网网关。 问题是,我不确定当两个perimeters是VPN客户端而不是服务器时是否可以设置。
我可以将数据包从任何一个perimeters传递到server而不必重写数据包源,然后通过tun0发现它到达server ,然后将其发送回任何perimeters ? 但是接下来我需要在两个perimeters之间有两个不同的tun接口,对吧? 然后,当这些数据包到达perimeter-XY ,我需要让该机器将源重写到自己,并将其发送到internet client ,因为数据包来自tun0 – 正确吗?
我完全失去了这一点,我找不到任何描述我的实际情况。 我离解决scheme有多远? 我是否以错误的方式去做? 这一切甚至可能吗?
实质上,我试图build立两个伪网关和一台机器来使用它们,取决于连接的来源。
编辑1 :有问题的三台服务器不在同一个LAN上 – 它们分别位于完全不同的位置。
如果我已经正确地理解了你的问题,你想要实现的是Linux虚拟服务器项目 – http://linuxvirtualserver.org/ 。 至less它会给你指点的问题。