一部のトラフィックをVPN経由で送信するためのルーティングの設定

一部のトラフィックをVPN経由で送信するためのルーティングの設定

サービスとして設定されたDD-WRTルーターがありますOpenVPN。 VPN接続を介して特定の送信元IPのみを送信したいと思います。

私の現在のルーティングテーブル(図を参照 netstat -rn)は、インターフェイスのVPNを介してすべてのトラフィックを送信すると思いますtun1。私が理解したところ、ルーティングテーブルは「失敗」テーブルなので、この場合、すべてのトラフィックは最初のエントリのためにインターフェイスを0.0.0.0通過しますtun1

Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
0.0.0.0         10.182.1.5      128.0.0.0       UG        0 0          0 tun1
0.0.0.0         10.0.1.1        0.0.0.0         UG        0 0          0 br0
10.0.1.0        0.0.0.0         255.255.255.0   U         0 0          0 br0
10.182.1.1      10.182.1.5      255.255.255.255 UGH       0 0          0 tun1
10.182.1.5      0.0.0.0         255.255.255.255 UH        0 0          0 tun1
46.23.68.178    10.0.1.1        255.255.255.255 UGH       0 0          0 br0
127.0.0.0       0.0.0.0         255.0.0.0       U         0 0          0 lo
128.0.0.0       10.182.1.5      128.0.0.0       UG        0 0          0 tun1
169.254.0.0     0.0.0.0         255.255.0.0     U         0 0          0 br0

私の目標は、特に次のIPマッピングa1505.g2.akamai.netに基づいてWebサイトを介して1〜2個のWebサイトのみをルーティングすることです。NSLookup

  • 住所:195.59.150.43
  • 住所:195.59.150.26

私は3つのステップが必要だと思います。

1)iptables最初のルーティングエントリを削除するコマンドを実行します。これにより、VPNを介したトラフィック転送が中断されます。tun1 2)宛先195.59.150.43195.59.150.26パスを知らせる2つのコマンドを実行します。tun1

しかし、正直なところ、iptablesはかなり混乱しています。

これは正しいアプローチですか?もしそうなら、誰かが私に1つまたは2つのサンプルコマンドを与えることができますか?

ありがとうございます!

ベストアンサー1

ルーティングテーブルが「失敗」テーブルであることを理解しています。

まさか。ルーティングテーブルは、「最も具体的な経路」から「最も具体的でない経路」までソートされる。デフォルトパスは経由であり、ネットマスク(つまり)がbr0ないため、最後の手段パスとして定義されます。genmask0.0.0.0

最初のエントリは 0.0.0.0 なので、すべてのトラフィックは tun1 インターフェイスを通過します。

これは正しい結論ですが、残念ながら間違った推論です。以下は、ルーティングに使用される順序を示すために視覚的にソートされたルーティングテーブルです(上部が最も一致しています)。

Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
10.182.1.1      10.182.1.5      255.255.255.255 UGH       0 0          0 tun1
10.182.1.5      0.0.0.0         255.255.255.255 UH        0 0          0 tun1
46.23.68.178    10.0.1.1        255.255.255.255 UGH       0 0          0 br0

10.0.1.0        0.0.0.0         255.255.255.0   U         0 0          0 br0

169.254.0.0     0.0.0.0         255.255.0.0     U         0 0          0 br0

127.0.0.0       0.0.0.0         255.0.0.0       U         0 0          0 lo

0.0.0.0         10.182.1.5      128.0.0.0       UG        0 0          0 tun1
128.0.0.0       10.182.1.5      128.0.0.0       UG        0 0          0 tun1

0.0.0.0         10.0.1.1        0.0.0.0         UG        0 0          0 br0

デフォルトのパスはまだ経由して行われますbr0。ただし、2つの具体的なルート(ネットマスクを含む)があり128.0.0.0、各ルートは利用可能なIPv4アドレス空間の半分と一致するため、ローカル以外のすべてのトラフィックと一致します。


nslookup私の目標は、次のIPへのマッピングに基づいて1〜2つのウェブサイト、特にa1505.g2.akamai.netのみをルーティングすること195.59.150.43です195.59.150.26

「ウェブサイト」がどういう意味なのかよくわかりません。tun1その方向へのすべてのトラフィックをブロックしたいとします。

route-gateway def1OpenVPNでこれを行うには、設定ファイルからディレクティブを削除するだけです。 (NetworkManagerなどを使用している場合は、接続をデフォルトパスとして表示する選択を解除するオプションが必要です。)

これを完了したら、ゲートウェイを介して各ホストに1つずつ2つのパスを追加するだけですtun1

route add -host 195.59.150.43 gw 10.182.1.5
route add -host 195.59.150.26 gw 10.182.1.5

これはホストパスであるため、ネットマスクは暗黙的/32(たとえば255.255.255.255)なので、すべてのものよりも優先されます。ビジュアルソートテーブルでは、これら3つの項目がリストの上部に表示されます。

実際、OpenVPN構成ファイルでもこれを行うことができます。これにより、VPN自体が自動的にルートを開始および削除できます。設定に応じて、構成はパスがクライアントに「プッシュ」されているサーバー上にあるか、クライアントのOpenVPN構成ファイル内のディレクティブで行われます。

route 195.59.150.43
route 195.59.150.26

おすすめ記事