
Я пытаюсь выяснить, через какой интерфейс маршрутизируется мой трафик, и получить локальный 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).