私はインターネットに接続された有線 (enp59s0u2u1i5) と無線インターフェースの両方を持っており、さらに VPN (wg-mullvad) を使用しています。
VPN インターフェイスがトラフィックをルーティングするためにどのインターフェイス (有線または無線) を使用しているかを確認するにはどうすればよいですか?
これは次の出力ですip link
:
2: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DORMANT group default qlen 1000
link/ether xx:xx:xx:xx:xx:xx brd ff:ff:ff:ff:ff:ff
4: enp59s0u2u1i5: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000
link/ether xx:xx:xx:xx:xx:xx brd ff:ff:ff:ff:ff:ff
6: wg-mullvad: <POINTOPOINT,UP,LOWER_UP> mtu 1380 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
link/none
出力netstat -r
:
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
default _gateway 0.0.0.0 UG 0 0 0 enp59s0u2u1i5
default _gateway 0.0.0.0 UG 0 0 0 wlan0
10.64.0.1 0.0.0.0 255.255.255.255 UH 0 0 0 wg-mullvad
192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 enp59s0u2u1i5
192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 wlan0
答え1
ip route get
正確なパラメータ、つまりトンネル エンドポイントのリモート IP アドレスと、コマンドによって表示される場合に wg-mullvad によって使用される重要な fwmark とともに使用しますwg
。
# wg show wg-foo
interface: wg-foo
fwmark: 0x52
peer:
endpoint: 1.2.3.4
# ip r get 1.2.3.4 mark 0x52
1.2.3.4 via 192.168.10.1 dev rtl0 table 82 mark 0x52
fibmatch
(実際に使用されているルート エントリを直接確認するために追加できます。)
一般的に、ip route
Linux 上のルーティング テーブルを一覧表示するには を使用します。複数のルーティング テーブルが存在する可能性があるためです。WireGuard によって設定されたパケット マークは、ip rule
暗号化されたトラフィックの代替テーブルを選択するために使用されます。手動で解決することもできますが、一部の VPN クライアントでは少し複雑なルールが生成されるため、ip r get
カーネルに答えを提供させる方が簡単です。
# ip rule
501: from all fwmark 0x52 lookup 82 proto static
# ip r ls table 82
default via 192.168.10.1 dev rtl0 proto dhcp
netstat -r
(ただし、メイン テーブルだけの場合でも、最も単純なルート エントリを超えて表示する方法がわからないため、Linux では通常は使用しないようにします。)
tcpdump
各インターフェースを通じて送信されるパケットを文字通り表示できることを忘れないでください。