しばらく前にフォーラムを読み、VPNがオンになっているときに内部でSSHにアクセスできるようにする次の行を見つけました。 VPNの外部で追加のトラフィックを許可するように調整できるように誰かを説明できますか?マニュアルページを読みましたが理解できません。
ip rule add table 128 from 192.168.10.123
ip route add table 128 to 192.168.10.0/24 dev eth0
ip route add table 128 default via 192.168.10.1
ベストアンサー1
この質問は少し古くなっていることを知っていますが、私は数時間問題を解決しました。したがって、他の人がここで道を見つけるのに役立つ場合は、あまり技術的な答えを試してみましょう。
これらのコマンドとその機能を理解するには、いくつかの点を知る必要があります。
まず、トラフィックをキャプチャしてVPN経由で転送するためにコンピュータでVPNクライアントを実行している場合するすでにカスタムルーティングルールがあります。お客様が直接制御するVPNサーバー以外のVPNサービスに接続する場合、通常、リモートサービスは接続時にopenvpnを介してコンピュータにルーティングルールをプッシュします。ip route show
VPNに接続した状態でコマンドを実行して表示できます。ここに含まれるすべての行はtun0
VPN接続を表します。
これがtun0
重要です。カーネルの観点から見ると、ネットワークカード(eth0
またはenp1s0
何でも)は1つのネットワークインターフェイスであり、VPN接続は2番目の「仮想」ネットワークインターフェイスです。 VPNの起動時にコマンドを実行すると、ip address
それぞれ別々のIPアドレスが定義されていることがわかります。仮想ネットワークインターフェイスを介してルーティングされたすべてのトラフィックはtun0
VPNを介して送信され、インターフェイスを介してルーティングされたすべてのトラフィックeth0
はVPNをバイパスして直接送信されます。
のようにOpenVPN Wiki、コンピュータによって生成されたトラフィックの「発信」IPアドレスは、デフォルトでトラフィックをルーティングするデバイスに設定されます。つまり、VPNに割り当てられたIPアドレスを意味しますtun0
。しかし!一般的な物理ネットワークデバイス(例:いいえVPN経由で)、応答は次のとおりですそれデバイスのIPアドレスは「発信」アドレスとして機能します。これで、VPNプロバイダがどのルーティングルールをプッシュするかは問題ではありません。彼らは出て行くトラフィックを見てVPNにリダイレクトするだけですtun0
。したがって、ボックスにsshを試みると、要求を受け取り、応答しますが、応答はVPNを介して転送されます。その後、SSHクライアントは「と、その応答は私が接続しようとしているIPアドレスとはまったく異なるIPアドレスから来ました」と言って無視します。したがって、ip rule
コマンドip route
が着信 VPN クライアントを実行しているコンピューターへのインバウンド接続を確立できません。
このコマンドの設定は次のとおりです。ポリシーベースのルーティング、これは複雑なトピックです。できるだけ簡単にするために、カーネルは「ルーティングテーブル」を使用して、このシステムに残っているトラフィック(これはlo
「ループバック」の略語であり、IPアドレスが127.0.0.1のネットワークデバイスです)とどのトラフィックを区別します。同じシステムLANにあるため、ルーター(ゲートウェイとも呼ばれます)を経由せずに宛先に直接送信され、トラフィックは他の場所に移動しません。インターネットにアクセスするには、コンピュータにすべての「その他」トラフィックを外部の世界に接続されているルーターに接続する「デフォルトゲートウェイ」ルーティングエントリが必要です。これはすべて基本ルーティングテーブルは、一般的に関心を持たなければならない唯一のテーブルです。
ただし、VPNルーティング設定はデフォルトルートテーブルを上書きし、tun0
VPN接続(デバイス)を「他の場所」に向かうすべてのトラフィックのデフォルトルートに設定します。幸いなことに、Linuxでは複数のルーティングテーブルを持ち、さまざまなルール(ポリシーとも呼ばれます)に基づいてどのルーティングテーブルをどのトラフィックに適用するかを選択できるため、「ポリシーベースのルーティング」という名前が付けられました。
ip
それでは、上記の文脈で関連する特定のコマンドを見てみましょう。
ip rule add table 128 from 192.168.10.123
これにより、アドレス 192.168.10.123 で「発信」されるすべてのトラフィックが、デフォルトのルーティング テーブルではなくルーティング テーブル 128 に従ってルーティングされる必要があることを指定するポリシー ベースのルーティング ルールが生成されます。 [1]ip route add table 128 to 192.168.10.0/24 dev eth0
これにより、ローカル192.168.10 *サブネットの「宛先」アドレスにすべてのトラフィックを転送するルートが表128に追加されますeth0
。ip route add table 128 default via 192.168.10.1
これにより、VPN ゲートウェイの代わりに通常のローカルゲートウェイを使用するように表 128 のデフォルトパスが設定されます。
接続に応答するすべてのトラフィックeth0
(したがって自動的に「発信」アドレスがある192.168.10.123
)は、まず表128を見てみましょう。表128は、実際に宛先がLAN上にある場合は直接ルーティングされeth0
、それ以外の場合はVPNではなく通常のゲートウェイを介してルーティングされることを示しています192.168.10.1
。しかし、包括的なこのコンピュータで発生するトラフィックのデフォルトは、tun0
プライマリルーティングテーブルのプライマリインターフェイスであるため、「送信」アドレスをコンピュータから取得することです。みんなそれトラフィックがルールと一致しないため、from 192.168.10.123
表128は適用されず、VPNを介したルーティングを表す「デフォルト」テーブルに移動します。
メモ:128はここでは特別なものではありません。ランダムに選択した番号で新しいルーティングテーブルを作成するだけです。デフォルトのルーティングテーブルの番号は253です。カスタムテーブルには1〜252の番号を使用できます。
- 技術的には、番号順に各テーブルのポリシールールのパケットを確認し、最初の一致に基づいてルーティングするため、252より前に128が参照され、パケットはカスタムルーティングテーブルに送信されます。失敗し、その後のルールをチェックし、他の一致がない場合は、最終的にデフォルトのルートテーブルへのルートを探します。しかしながら、テーブル128にはデフォルトパスが存在するので、そのテーブルに転送される全てのパケットは失敗しないことが保証される。