現在、2 つのサイトで環境を設定しています。すべてのサーバーは Linux/Ubuntu です。最初のサイトは私のオフィスで、2 番目のサイトは AWS です。サイト間 VPN を備えた VPC 内に AWS のサーバーが 2 つあります。Web01 - 172.31.24.106 Revproxy01 - 172.31.17.216
オフィスにはサーバー 1 台と IP カメラ 1 台があります。サーバー 1 - 192.168.102.1 カメラ 1 - 192.168.102.79
VPN は Server1 (IPSec Strongswan) 上にあり、AWS 側で AWS サイト間 VPN に接続するように構成されています。
多くの調査と時間をかけ、すべてを稼働させることができました。Web01 と Revproxy01 は Server1 に ping でき、Server1 は Web01 と Revproxy01 に ping できます。
次のステップは、Web01 と RevProxy01 から Camera1 に ping できるようにすることです。最終的には、web01 と Revproxy01 からカメラの http フィードにアクセスしたいと考えています。
Web01 から Server1 経由で Camera01 にデータを渡すには、ルーティング (Server01 上) を設定する必要があると思います。
誰かの助けと、これを行う方法の学習をいただければ幸いです。
答え1
わかりました。ルーティングの仕組みをどの程度理解しているかわかりませんので、説明して、私の説明がどの程度理解できるか見てみましょう。実際にはもっと多くの車輪が回転しているので、この説明は正確ではありませんが、十分なはずです。
ネットワークの各ホップで、IPスタックは各着信IPパケットを調べます。行き先IP アドレスとそのルーティング テーブル。ルーティング テーブルは で確認できますip route
。
まず、パケットの IP が自身のインターフェースの 1 つに対応しているかどうかを確認します。対応している場合、パケットはホップ自体に宛てられており、ホップはパケットを「飲み込みます」(スタック内でパケットをプッシュします (たとえば、TCP スタックに向かって))。
パケットがホップ自体宛てでない場合、ホップは自身のルーティング テーブルをチェックし、最も重要なルートから最も重要でないルートまでトラバースします。A は、/24
32 ビットのうち 24 ビットが重要であることを示しています。A は、/16
その場合重要度が低くなります。IP スタックの場合、ip route
パケットの IP アドレスと表示されたルートを下から上へ比較します。パケットの IP に一致する最初のルートが優先されます。したがって、宛先 IP 192.168.102.10 でルーティング テーブルをトラバースすると、ルート 192.168.0.0/16 がパケットと一致します。ルート 192.0.0.0/16 は一致しません。このsipcalc
ツールを使用して、ネットワーク アドレス情報を表示できます。
最後に一致したルートは、すべてに一致するデフォルト ルートになります。
各ルートには、パケットが送信される次のホップが含まれています。次のホップは、 でよりよく確認できます/sbin/route -n
。ルートが表すネットワークがホップ上に存在するネットワーク インターフェイスに直接接続されているかどうかに応じて、「ルーター」列または「インターフェイス」列になります。
パケットが VPN トンネルを通過すると、IP パケットは別のパケットでラップされます。したがって、VPN エントリと出口ポイントの内部 IP のみがカウントされます。パケットはエントリ ポイントに飛び込み、出口ポイントから「魔法のように」飛び出します。
これで、送信元ホップと宛先ホップを含め、各ホップでパケットがどのパスを取るべきかを判断できるようになります。希望するパスを取らない場合は、対応するルートを追加する必要があります。これは、単一ホスト ルート、つまり192.168.102.79/32
(すべてのビットが重要です。単一のホストのみに一致します) のようなものになります。の例をいくつか調べてくださいip route add
。
また、ホップを通過するパケットを観察することも必要です。そのためには を使用できますtcpdump -n -i interface
(例: tcpdump -n -i eth0
)。したがって、ホップ 1 を通過するパケットを確認し、ホップ 2 に移動するはずであると考えても、ホップ 2 を通過しているのが確認できない場合は、ホップ 1 のルートが間違っている可能性があり、パケットを間違った宛先に送信しています。
この方法では、送信元から宛先までの各ルーティングテーブルをホップごとに分析し、パケットがどのルートを通るかを確認できるはずです。すべき各ホップで実行し、パケットが正しいパスを取るようにルートを追加し、実際に正しいパスを取ることを確認しますtcpdump
。
出発地から目的地までのルートは両方ともそして正しく設定する必要があります。
間違ったルートにより、ネットワーク経由でマシンにアクセスできなくなる可能性があることに注意してください。そのため、ネットワーク経由ではなく独立したメカニズムを使用してマシンを再起動する方法が必要になる場合があります。
ルーティングが機能したら、再起動後もルーティングが機能することを確認します。たとえば、新しいルートを書き込みます/etc/network/interfaces
(これを登録する必要がある場所は、そのマシンでネットワーク スタックがどのように構成されているかによって異なります。これは、Unix、Linux ディストリビューションなどによって大きく異なります)。
これがさらに役立つことを願っています。