两个 OpenVpn 服务器之间的路由流量

两个 OpenVpn 服务器之间的路由流量

我正在尝试在两个 openvpn 服务器之间路由流量;我希望有以下连接:

客户端 --> OpenVpnServer1 --> OpenVpnServer2 --> 互联网

我有两台服务器在单独运行和工作,但我尝试配置 OpenVpnServer1 以使用 iptables 将其所有客户端流量转发到 OpenVpnServer2,但失败了。

OpenVpnServer1 接口和配置:

eth0——公共互联网

tun0——用于连接到此服务器的客户端

tun1——第二台服务器的连接接口(使用 openvpn 客户端连接时处于活动状态)

*nat
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING -s 10.10.0.0/8 -o eth0 -j MASQUERADE
COMMIT

OpenVpnServer2 接口和配置:

ens33——公共互联网

tun0——用于连接到此服务器的客户端

*nat
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING -s 10.8.0.0/8 -o ens33 -j MASQUERADE
COMMIT

更新:

我已经测试了 server1 和 sever2 之间的连接,server1 可以从其 tun1 适配器 ping google。问题是我不知道如何在不更改 server1 上的默认路由的情况下转发流量。如果我将默认路由更改为 tun1,则客户端无法连接到 server1。

答案1

好的,首先介绍一些基础知识。客户端打开与 Server1 的 VPN 连接。服务器与 server2 有活动连接,并且此连接配置为默认路由(您这样做了,对吗?)

首先,我会将 server1 和 server2 之间的这个隧道配置为站点到站点的 VPN - 但这是另一个主题。

在 server1 上,你的 iptables 规则是错误的。正确的规则应该是:

iptables -t nat -A POSTROUTING -o tun1 -j MASQUERADE

为什么?

如果希望此设置有效,您需要假装所有通过 VPN 隧道从服务器 1 到服务器 2 的流量都是由服务器 1 发起的,具体来说,具有您的 tun1 接口的 IP,以便回复到达服务器 1,并可以正确路由回客户端。这就是规则的作用。相比之下,您的规则只会伪装所有进入公共互联网的流量,而不会伪装通过任何 VPN 的流量。

相关内容