Какой сетевой интерфейс использует мой VPN?

Какой сетевой интерфейс использует мой VPN?

У меня есть как проводной (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-адресом конечной точки туннеля и, что важно, с меткой fwmark, используемой wg-mullvad, если она отображается командой 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буквально может показать вам пакеты, отправляемые через каждый интерфейс.

Связанный контент