2 つの openvpn サーバー間でトラフィックをルーティングしようとしています。次の接続を確立したいと考えています。
クライアント --> OpenVpnServer1 --> OpenVpnServer2 --> インターネット
両方のサーバーを別々に実行して動作させていますが、iptables を使用してすべてのクライアント トラフィックを OpenVpnServer2 に転送するように OpenVpnServer1 を構成しようとしましたが、失敗しました。
OpenVpnServer1 インターフェースと設定:
eth0 -- パブリックインターネット
tun0 -- このサーバーに接続するクライアント用
tun1 -- 2 番目のサーバーの接続インターフェイス (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 アダプタから google に ping できました。問題は、server1 のデフォルト ルートを変更せずにトラフィックを転送する方法がわからないことです。デフォルト ルートを tun1 に変更すると、クライアントは server1 に接続できなくなります。
答え1
さて、まずは基本的なことから始めましょう。クライアントは Server1 への VPN 接続を開きます。サーバーは server2 へのアクティブな接続を持っており、この接続はデフォルト ルートとして構成されています (そうしましたか?)
まず、server1 と server2 間のこのトンネルをサイト間 VPN として構成しますが、これは別のトピックです。
server1 の iptables ルールが間違っています。正しいルールは次のようになります。
iptables -t nat -A POSTROUTING -o tun1 -j MASQUERADE
なぜ?
この設定を機能させるには、server1 から server2 への VPN トンネルを通過するすべてのトラフィックが server1 によって開始され、詳細には tun1 インターフェイスの IP を持っていると仮定する必要があります。これにより、応答が server1 に到達し、クライアントに正しくルーティングされます。これがルールの機能です。対照的に、ルールは、VPN を経由せずに、パブリック インターネットに送信されるすべてのトラフィックをマスカレードするだけです。