Как получить сетевой интерфейс, через который маршрутизируется трафик

Как получить сетевой интерфейс, через который маршрутизируется трафик

Я пытаюсь выяснить, через какой интерфейс маршрутизируется мой трафик, и получить локальный IP-адрес, связанный с этим интерфейсом. Это позволит мне различать случаи, когда доступ vpn отключен (все проходит через wlan0 -> чтение IP с этого интерфейса) или когда vpn активирован (все проходит через tun0, получение IP с этого интерфейса).

Я знаю команду route, но не могу понять, как ее разобрать, чтобы извлечь нужную мне информацию.

Вот мой список IP-маршрутов без VPN:

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

Получение этих данных состоит из двух этапов: во-первых, определение того, какие подсети выходят напрямую через определенный интерфейс; а во-вторых, определение «маршрута по умолчанию» для вашего трафика в Интернет.

(перейдите к разделу Ваши маршруты для моего анализа вывода ваших маршрутов)

В обоих случаях нам нужны 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

Как вы видите, в моей сети есть несколько разных вещей. У меня есть две подсети Docker, две другие сети ( static-localи InternalDHCPдля моих контейнеров LXD), мой беспроводной интерфейс 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.

Теперь маршрут по умолчанию:

  • Весь остальной трафик, который не соответствует ни одному из вышеупомянутых маршрутов, должен направляться через адрес шлюза/маршрутизатора 172.18.0.1 через устройство wlp59s0(которым является моя карта Wi-Fi).

Вот как вы бы расчленили 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 идет через 182.168.26.1 напрямую через ваш интерфейс Wi-Fi.
  • Трафик к 172.17.0.0/16 (172.17.0.0-172.17.255.255) идет напрямую через сетевое соединение docker0 с исходным IP-адресом 172.17.0.1.
  • Что-то не так с вашим сетевым соединением, поэтому 169.254.0.0/16 (169.254.0.0-169.254.255.255) выходит через подключенное к сети Wi-Fi-устройство.
  • Для любых других обозначений подсети, когда вы не подключены к VPN, ваш трафик проходит через ваш интерфейс Wi-Fi через IP-адрес шлюза 192.168.26.1 (ваш маршрутизатор)

Теперь, когда вы используете VPN, он добавляет МНОГО маршрутов в вашу таблицу, которые не имеют смысла, но мы можем сжать их в один простой способ оценки правил. Обратите внимание, что предыдущие правила без VPN-подключения все еще применяются:

  • При подключении к VPN весь трафик, не обработанный предыдущими правилами on-link (включая правила, которые действуют, когда вы не находитесь в VPN), направляется через устройство tun0 и ссылку VPN через 192.168.31.1 по туннелю. Таким образом, весь трафик в Интернет (кроме адресов on-link, как указано выше) сначала будет проходить по туннелю VPN. Если туннель VPN выйдет из строя и трафик не сможет пройти по этому туннелю, он вернется к использованию вашего стандартного соединения Wi-Fi (однако это произойдет только тогда, когда туннель VPN выйдет из строя и НЕ переподключится, поэтому интерфейс tun0исчезнет)

  • Трафик между вашей системой и конечной точкой VPN проходит через стандартное соединение Wi-Fi для достижения удаленного сервера VPN. (Это поведение «по умолчанию», поскольку для подключения к серверу VPN будет использоваться стандартное соединение Wi-Fi).

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