サーバーからクライアントへの OpenVPN ルーティング

サーバーからクライアントへの OpenVPN ルーティング

それぞれパブリック IP を持つ 2 つの離れた場所があり、これらの場所の LAN ネットワークを 1 つのネットワークのようにしたいと考えています。つまり、場所 A のマシンは場所 B のマシンと通信でき、場所 B のマシンは場所 A のマシンと通信できます。

Place A (10.0.2.1) には、ASUS AC 1200g+ と、OpenVPN サーバーを備えた Raspberry pi (10.0.2.60) があります。新しいクライアントは、インターフェイス tun0 (10.8.0.1) に留まります。この時点で、クライアント (Place B) は Place A の LAN と通信でき、宛先が 10.0.1.0/24 のトラフィックのみがサーバー側にリダイレクトされます。

ここで、Place A (サーバー) のマシンが Place B の LAN と通信できるようにしたいと考えています。ルーターにルートを配置して、10.0.1.0/24 のすべての宛先要求を Raspberry Pi VPN サーバーにリダイレクトするようにしましたが、サーバーはそのトラフィックをどう処理すればよいかわかりません。

Place B (10.0.1.1) では、ASUS Merlin ファームウェアを搭載した ASUS AC86U があり、「受信ファイアウォール」有効化オプションを使用して OpenVPN クライアントをアクティブ化しています。

ネットワークスキーマ

答え1

私は、Raspberry Pi がクライアントである同様のセットアップを持っていますが、それはあまり問題にならないはずです。免責事項: これはセットアップが最も簡単なものではありません。

私はこの/etc/iptables/iptables.rulesファイルを使用して、OpenVPN 接続 (通常は ですtun0が、tun+すべてをカバーします) からのトラフィックをローカル ネットワークに NAT します。

*nat
:PREROUTING ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING -j MASQUERADE
COMMIT

*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A FORWARD -i eth+ -o tun+ -j ACCEPT
-A FORWARD -i tun+ -o eth+ -j ACCEPT
COMMIT

OpenVPNの設定には、いわゆるクライアント間の構成サーバーの OpenVPN-config 内の次の 2 行により、この機能が有効になります。

# use ccd-folder (per host configs)
client-to-client
# routing to office lan:
client-config-dir ccd

は、設定があるclient-config-dir-path の下に手動で作成する必要があります/etc/openvpn/...。そのフォルダ内に、ホストごとのテキスト ファイルを作成できます。ファイルの命名は重要です。システム ログで OpenVPN がクライアントを呼び出す方法を再確認してください (ファイルjournalctl -xef --unit openvpn-server@somehost内またはなどopenvpn-status.txt)。ファイルの内容はシンプルです。

ifconfig-push 10.10.99.18 255.255.255.255
iroute 192.168.0.0 255.255.0.0

は、接続するたびに同じ IP を取得するように構成し ( 10.10.99.18)、VPN サーバーが192.168.0.0/16このファイル名と IP アドレスを使用してクライアントへのトラフィックを内部的にルーティングするように構成します。これで、まだ有効なネットワーク接続がない理由が理解できます。つまり、VPN サーバーのホスト システムは、VPN トンネルを使用してそのネットワーク ( ) へのトラフィックをルーティングできることを認識していないためですnetstat -rn4。そのため、VPN サーバーを再度構成し、以下を追加する必要があります。

route       192.168.0.0 255.255.0.0
push "route 192.168.0.0 255.255.0.0"

サーバーにトラフィックをルーティングするように指示し192.168.0.0/16、サーバーに接続しているすべてのクライアントにもルートについて通知する必要があります。ルートはクライアントにプッシュされます。


私の設定では上記のリンクを使用しましたが、この回答を書いているときに、このトピックに関する興味深いリンクを 2 つ見つけました。

幸運を :)

関連情報