OpenVPN は tun0 に入るすべてのトラフィックをどのように規制しますか?

OpenVPN は tun0 に入るすべてのトラフィックをどのように規制しますか?

まず、カーネルルーティングテーブルは、すべてのアウトバウンドトラフィックをtun0tun0ローカルインターフェイスが所有するIPアドレスにはアクセスしません。(例10.13.10.6:)を宛先アドレス(例10.13.10.5:)の代わりに使用します。この場合、OpenVPNはすべての着信トラフィックをどのように接続しますかtun0?私が知る限り、これには生ソケットというものが含まれます。しかし、これがどのように具体的にこれらの動作を保証するかを理解したいと思います。

ベストアンサー1

ルーティングテーブル(ip route)をもう一度見てください。defaultへのパスまたは/へ10.13.10.5のパスのペアがあることがわかります(これは、OpenVPNが無効になってもデフォルトのパスを維持できるようにするトリックにすぎません)。0.0.0.0/1128.0.0.0/110.13.10.5このパスは通過します。 tun0

あなたがどのIPを持っているかは問題ではありませんtun0ゲートウェイ10.13.10.5の反対側にあるIPですtun0

それでは、OpenVPNはどのようにすべてのトラフィックを許可しますかtun0?ルートを提供すると、OpenVPNが存在しない場合と同様に、すべてのトラフィックがeth0(またはデフォルトルートで指定されているように)移動します。wlan0

OpenVPNは特別な作業を行いません。特に、rawソケットを使用せずにtun / tapインターフェースを作成します。

編集する

OpenVPNは「相手に向かうトラフィックを受信する」ことはありません。

いつ。 。 。いつLinuxカーネルネットワークパケットを見て相談します。ルーティングテーブルパケットの処理方法を決定します。ルーティングテーブルに「10.13.10.5すべてのパケットを以下を介してゲートウェイに転送するtun0」と表示されている場合、これはLinuxカーネルが実行するアクションです。 OpenVPNはいかなる方法でも関与しません。

OpenVPNが作成されたので、カーネルがパケットを入れると、tun0OpenVPNはtun0パケットを読み取ることができます。これが tun/tap インタフェースが行うことです。これにより、アプリケーションはカーネルによってこのインターフェイスに入力されたパケットを読み取り、このインターフェイスで送信されるパケットを書き込むことができます(これはカーネルによって処理されます。パケットは実際のネットワークカードから来ます)。

無差別モードは含まれません。問題は、tun / tapインターフェースがどのように機能するかを理解していないことです。

おすすめ記事