トラフィックがルーティングされるネットワークインターフェースを取得する方法

トラフィックがルーティングされるネットワークインターフェースを取得する方法

私は、トラフィックがどのインターフェースを経由してルーティングされるかを把握し、そのインターフェースに関連付けられたローカル IP アドレスを取得しようとしています。これにより、VPN アクセスが無効になっている場合 (すべてが wlan0 を経由してそのインターフェースから IP を読み取る) と、VPN が有効になっている場合 (すべてが tun0 を経由してそのインターフェースの IP を取得する) とを区別できるようになります。

ルート コマンドはわかっていますが、それを解析して必要な情報を抽出する方法がわかりません。

これは VPN なしの IP ルート リストです:

default via 192.168.26.1 dev wlp0s20f3 proto dhcp metric 600 
169.254.0.0/16 dev wlp0s20f3 scope link metric 1000 
172.17.0.0/16 dev docker0 proto kernel scope link src 172.17.0.1 linkdown 
192.168.26.0/23 dev wlp0s20f3 proto kernel scope link src 192.168.26.254 metric 600 

VPNに接続した後

default via 192.168.31.1 dev tun0 proto static metric 50 
default via 192.168.26.1 dev wlp0s20f3 proto dhcp metric 600 
10.0.0.0/8 via 192.168.31.1 dev tun0 proto static metric 50 
13.224.73.0/24 via 192.168.31.1 dev tun0 proto static metric 50 
18.135.151.3 via 192.168.31.1 dev tun0 proto static metric 50 
40.114.41.40 via 192.168.31.1 dev tun0 proto static metric 50 
52.95.0.0/16 via 192.168.31.1 dev tun0 proto static metric 50 
104.18.4.20 via 192.168.31.1 dev tun0 proto static metric 50 
104.18.5.20 via 192.168.31.1 dev tun0 proto static metric 50 
104.18.25.245 via 192.168.31.1 dev tun0 proto static metric 50 
104.27.148.109 via 192.168.31.1 dev tun0 proto static metric 50 
104.27.149.109 via 192.168.31.1 dev tun0 proto static metric 50 
143.204.190.0/24 via 192.168.31.1 dev tun0 proto static metric 50 
149.11.92.90 via 192.168.26.1 dev wlp0s20f3 proto static metric 600 
150.2.20.0/24 via 192.168.31.1 dev tun0 proto static metric 50 
150.2.22.0/24 via 192.168.31.1 dev tun0 proto static metric 50 
150.2.34.0/24 via 192.168.31.1 dev tun0 proto static metric 50 
169.254.0.0/16 dev wlp0s20f3 scope link metric 1000 
172.16.0.0/12 via 192.168.31.1 dev tun0 proto static metric 50 
172.17.0.0/16 dev docker0 proto kernel scope link src 172.17.0.1 linkdown 
192.168.0.0/16 via 192.168.31.1 dev tun0 proto static metric 50 
192.168.26.0/23 dev wlp0s20f3 proto kernel scope link src 192.168.26.254 metric 600 
192.168.26.1 dev wlp0s20f3 proto static scope link metric 600 
192.168.31.0/24 dev tun0 proto kernel scope link src 192.168.31.56 metric 50 

一番上のデフォルト ルートが使用されていると想定しても安全でしょうか?

答え1

このデータを見つけるには、2 つの部分があります。まず、特定のインターフェースを介して直接送信されるサブネットを特定します。次に、インターネットへのトラフィックの「デフォルト ルート」を特定します。

(ルート出力の分析については、「ルート」セクションに進んでください)

どちらの場合もip route list出力が必要ですが、私の場合はラップトップを確認します (自宅のネットワーク上にいるため、現在は VPN されていません)。

default via 172.18.0.1 dev wlp59s0 proto dhcp metric 600 
10.10.0.0/16 dev static-local proto kernel scope link src 10.10.0.1 
10.73.252.0/24 dev InternalDHCP proto kernel scope link src 10.73.252.1 
10.74.0.0/24 dev docker0 proto kernel scope link src 10.74.0.1 linkdown 
169.254.0.0/16 dev docker0 scope link metric 1000 linkdown 
172.18.0.0/16 dev wlp59s0 proto kernel scope link src 172.18.2.0 metric 600

ご覧のとおり、私のネットワークにはさまざまなものがあります。2 つの Docker サブネット、2 つの他のネットワーク (static-localおよびInternalDHCPLXD コンテナー用)、ワイヤレス インターフェイスwlp59s0、および上部の「デフォルト ルート」があります。

これをコンポーネント部分に分解してみましょう。まず、デフォルト以外のルートを見てみましょう。これは次のように読み取られます。

  • 10.10.0.0/16 (10.10.0.0-10.10.255.255) へのすべてのトラフィックはstatic-local、送信元 IP が 10.10.0.1 のネットワーク リンクを介して直接送信されます。
  • 10.73.252.0/24 (10.73.252.0-10.73.252.255) へのすべてのトラフィックはInternalDHCP、10.73.252.1 を送信元とするネットワーク リンクを介して直接送信されます。
  • 10.74.0.0/24 (10.74.0.0-10.74.0.255) へのすべてのトラフィックは、docker0送信元が 10.74.0.1 のネットワーク リンクを直接経由します。同じネットワーク リンクは のトラフィックも受け入れます169.254.0.0/16が、このリンクはオフラインで機能していません。
  • 172.18.0.0/16 (172.18.0.0-172.18.255.255) へのすべてのトラフィックは、wlp59s0送信元 IP が 172.18.2.0 のネットワーク リンクを介して直接送信されます。

デフォルトのルートは次のようになります。

  • 前述の他のルートのいずれにも一致しない他のすべてのトラフィックは、デバイスwlp59s0(私の Wi-Fi カード) を介してゲートウェイ/ルーター アドレス 172.18.0.1 経由でルーティングされます。

これが、ip route list上記のような出力を分析する方法です。ip route listご希望であれば、出力の分析をお手伝いできますが、出力の読み方は次のようになります。


あなたのルート

これは、VPN が接続されているときと接続されていないときの両方におけるルートの分析です。

まず、VPN を使用していない場合:

  • 192.168.26.0/23 (192.168.26.0-192.168.27.255) へのトラフィックは、wlp0s20f3 (wifi) インターフェース リンクを介して直接送信されます。これには、192.168.26.1 (デフォルト ルート) への直接送信も含まれます。
  • 149.11.92.90 へのトラフィックは、Wi-Fi インターフェース リンクを介して 182.168.26.1 経由で直接送信されます。
  • 172.17.0.0/16 (172.17.0.0-172.17.255.255) へのトラフィックは、送信元 IP アドレスが 172.17.0.1 の docker0 ネットワーク リンクを直接経由します。
  • ネットワーク リンクに問題があったため、169.254.0.0/16 (169.254.0.0-169.254.255.255) が Wi-Fi デバイスのオンリンク経由で送信されます。
  • VPNに接続していないときの他のサブネット指定の場合、トラフィックはゲートウェイIP 192.168.26.1(ルーター)を介してWi-Fiインターフェースから流出します。

VPN を使用すると、意味のないルートが大量にテーブルに追加されますが、それらを 1 つの簡単な方法にまとめ、ルールを評価することができます。以前の VPN 接続されていないルールは引き続き適用されることに注意してください。

  • VPN に接続すると、以前のオンリンク ルール (VPN に接続していないときのルールを含む) で対処されていないすべてのトラフィックは、tun0 デバイスと VPN リンクを経由して、トンネル経由で 192.168.31.1 経由でルーティングされます。したがって、インターネットへのすべてのトラフィック (上記で指定したオンリンク アドレス以外) は、最初に VPN トンネルを通過します。VPN トンネル リンクに障害が発生し、トラフィックがそのトンネルを通過できない場合は、標準の Wi-Fi 接続にフォールバックします (ただし、これは VPN トンネルに障害が発生し、再接続されない場合にのみ発生し、インターフェイスはtun0なくなります)。

  • システムと VPN エンドポイント間のトラフィックは、デフォルトの Wi-Fi リンクを経由してリモート VPN サーバーに到達します (これは、VPN サーバーに接続するためにデフォルトの Wi-Fi リンクを使用するという「デフォルト」の動作です)。

関連情報