在兩個 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 隧道從 server1 到 server2 的流量都是由 server1 發起的,具體來說有您的 tun1 介面的 IP,以便回覆到達 server1,並且可以正確路由回客戶端。這就是規則的作用。相較之下,您的規則只會偽裝所有進入公共網路的流量,而不是透過任何 VPN。

相關內容