
弊社の VPN に接続してルーティング テーブルを確認すると、次のことがわかります。
172.16.0.0 10.8.0.241 255.255.0.0 UG 0 0 0 tun0
10.8.0.241 0.0.0.0 255.255.255.255 UH 0 0 0 tun0
10.8.0.0 10.8.0.241 255.255.255.0 UG 0 0 0 tun0
最初の行は次のように理解していると思います: 172.16 ネットワークへのパケットは tun0 インターフェイスにドロップされますが、残りの処理はゲートウェイ 10.8.0.241 にアドレス指定されて処理されます。
2 行目では、10.8.0.241 にアクセスするには、tun0 にドロップするだけでよいことが明示的に示されています。
私が理解できないのは、最後の2行をなぜ結合できないのかということです。
10.8.0.0 0.0.0.0 255.255.255.0 UG 0 0 0 tun0
10.8 宛てのパケットは、トンネルにドロップするだけで、適切なマシンがそれを受け取ることができると言いたいのですが、10.8 宛てのパケットは、なぜ最初に同じネットワークのゲートウェイに明示的に渡されなければならないのでしょうか。10.8.0.251 は、実際には tun0 のもう一方の端に直接接続され、10.8 宛てのパケットを転送する方法を知っている唯一のマシンであるため、ここではスイッチとして誤用されているのでしょうか。
答え1
この質問に答える前に、リンクされているフラグについて説明させてください。
- U (ルートはアップ)
- H (ターゲットはホスト)
- G (ゲートウェイを使用)
ルート2
と を3
組み合わせることはできません。これは、ソース マシンに10.8.0.241
直接 ( metric 0
) 到達するように通知し、ネットワーク ID を持つマシンに到達するには10.8.0.0/24
ゲートウェイ を使用するように10.8.0.241
通知しているためです。パケットをデフォルト ゲートウェイに転送する理由がわかりませんが、これがゲートウェイ ルーター/ファイアウォールに逆ルートを挿入するためのトリックである可能性があります。
答え2
推測すると、ネットワークのトポロジは次のようになります。
クライアント => インターネット => 10.8.0.241 => 10.8.0.0/24
VPN が確立されると、tun0 経由で VPN エンドポイント以外のホストに直接接続することはできません。10.8.0.0/24 の範囲内の他のものにデータを送信するには、データを GW (10.8.0.241) に送信する必要があります。その後、GW はデータを正しいホストに転送します。
これにより、リモート エンドポイントのサーバーと同じネットワーク上の IP が提供され、他の VPN クライアントに接続できるようになります。