私は2つのサイトを接続するためのopenVPNセットアップと戦っています。これはシナリオがどのように見えるかです
Office 1(サーバー):
Office 2(クライアント):
openvpnクライアントの内部IP:tun0の192.168.0.6
openvpn内部ネットワーク:192.168.0.0/24
クライアントとサーバーの両方が、動的に割り当てられたIPアドレスを持つNATルーターの背後にあります。
基本的に、どちらかのオフィスに関係するマシンは、お互いを「見る」ことになっています。トンネルを設定し、両方のサイトでルーティングテーブルを適切に構成した後、両方のネットワークの通常のホストは、これら2つのネットワーク上のすべてにpingを実行できます。これまでのところ良い。
ただし、エンドポイントは相互にしか認識できず、それぞれの遠端ネットワーク上のホストは認識できません。たとえば、
ping 192.168.178.2
vPNエンドポイント192.168.177.2からは、問題なく機能し、他のアドレスは機能しません。ホストは応答しません。
別のアドレスにpingを実行したときのtcpdumpの出力を見てみましょう。 192.168.178.3。
11:11:28.104640 IP 192.168.0.6> 192.168.178.3:ICMPエコー要求、ID 2130、シーケンス1、長さ64
ソースIPは完全に正しくないようです。 OpenVPNの内部ネットに属しており、ICMP応答がありません。
適切なソースIPを使用するようにpingに明示的に指示すると、動作が開始されます。
ping 192.168.178.3 -I 192.168.177.2
これで、tcpdumpの出力も問題ありません。
11:20:08.266271 IP 192.168.177.2> 192.168.178.3:ICMPエコー要求、ID 7883、シーケンス17、長さ64 11:20:08.316037 IP 192.168.178.3> 192.168.177.2:ICMPエコー応答、ID 7883、シーケンス17長さ64
クライアントのルーティングテーブルの重要なエントリを見ると、送信元アドレスが内部ネットワークからのものであることがわかります。
default via 192.168.177.1 dev p2p1 192.168.0.1 via 192.168.0.5 dev tun0 192.168.0.5 dev tun0 proto kernel scope link src 192.168.0.6 192.168.177.0/24 dev p2p1 proto kernel scope link src 192.168.177.2 192.168.178.0/24 via 192.168.0.5 dev tun0
OpenVPNに適切なsrcでそのエントリを作成させる可能性はありますか?
これが私のopenVPN設定ファイルです。トンネル自体は期待どおりに機能するため、TLSの部分はスキップします。
オフィス1のサーバー:
local 192.168.178.2 server 192.168.0.0 255.255.255.0 proto tcp-server port 1194 dev tun mssfix user nobody group nogroup keepalive 20 120 ping-timer-rem persist-tun persist-key float comp-lzo Push "comp-lzo" Push "route 192.168.178.0 255.255.255.0" route 192.168.177.0 255.255.255.0 client-config-dir client-configs
次のようなクライアント構成が1つあります。
iroute 192.168.177.0 255.255.255.0 Push "route 192.168.178.0 255.255.255.0 vpn_gateway"
オフィス2のクライアント:
client dev tun0 remote <server address> proto tcp-client port 1194 connect-retry 15 comp-lzo user nobody group nogroup persist-tun persist-key
私はここで本当に途方に暮れています...あなたの助けは非常にありがたいです。
表示されている動作は仕様によるものです。ネットワーク上のホストは、デフォルトで、トラフィックが存在するインターフェイスのIPアドレスを送信元IPとして使用します。
いずれかのLAN上のクライアントマシンは、マルチホームではないため、たとえば192.168.178.10をソースIPとして使用します。その後、ゲートウェイはパケットをOpenVPNボックスにルーティングし、問題なくトンネルを通過します。
ただし、OpenVPNボックス自体からアクセスする場合は、OpenVPNインターフェイスのIPアドレスが使用されます。これは、そこからパケットが送信されるためです。
どちらでも構いません。リモートサイトに到達します。しかし、リモートサイトは192.168.0.6へのping応答のパケットを送信したいと考えています。応答はゲートウェイに送信されますが、ゲートウェイ(ゲートウェイのルーティングテーブルをネットワークに投稿しなかったため)にはそのネットワークへのルートがないため、その方法がわかりません。続行します。
これを解決する最も簡単な方法は、192.168.0.0/24(OpenVPNネットワーク)のルートを両方のネットワークのゲートウェイに追加することです。
別のオプションとして、オペレーティングシステムがサポートしている場合(OpenVPNを実行しているOSを指定しなかった場合)、ルートの「src」パラメーターを使用して、IPアドレスを選択するこのデフォルトの動作をオーバーライドできるかどうかを確認します。出力インターフェイスの。詳細については、 openvpnでカスタムルートソースを設定する方法 というタイトルの質問を参照してください。