Вопрос или проблема
Иногда, случайным образом, мой MacBook Pro с установленной Mint Linux подключается к моей домашней сети с использованием порта Thunderbolt и док-станции с Ethernet, но НЕ позволяет получить ответ на ping из интернета.
Я обнаружил, что причиной этой потери ping является невероятно высокий метрический показатель 20100 в таблице маршрутизации ядра IP…
default via 192.168.0.1 dev enp11s0 proto dhcp metric 20100
169.254.0.0/16 dev enp11s0 scope link metric 1000
192.168.0.0/24 dev enp11s0 proto kernel scope link src 192.168.0.222 metric 100
… если я перезагружусь, то получу тот же IP-адрес из DHCP, но метрический показатель будет 100 и ping будет работать идеально из интернета.
default via 192.168.0.1 dev enp11s0 proto dhcp metric 100
Есть ли у кого-нибудь идеи, что вызывает это и какие быстрые решения вместо перезагрузки?
Спасибо,
Paully
Спасибо, да, я попробовал удалить и заново добавить маршрутизацию, но это не помогло.
Тем не менее, я сегодня нашёл решение и исправление.
Я просто снова нажимаю на выпадающее меню “Ethernet Network” (во второй раз) в XCFE и выбираю свою “Док-станцию”, что перенастраивает DHCP и маршрутизацию сети.
После этого, метрический показатель возвращается к 100 и ping из интернета работает!
Странно, но хорошо 🙂
Ответ или решение
Вопрос об аномально высоком значении метрики маршрута IP, что приводит к потере ping-пакетов в интернете, является весьма актуальным для специалистов в области ИТ. Проблема, описанная в вашем примере, связана с использованием MacBook Pro под управлением Mint Linux и подключением к домашней сети через порт Thunderbolt и док-станцию с Ethernet. В этом случае маршрутизация сетевого трафика зачастую оказывается некорректной из-за высокого значения метрики в таблице IP-маршрутизации, что и приводит к невозможности получения ответов на ping-запросы из интернета.
Теория
Метрика в IP-маршрутизации представляет собой числовое значение, используемое для определения приоритета маршрута, когда возможно наличие нескольких маршрутов к одной и той же сети. В общем случае, чем ниже метрика, тем предпочтительнее считается маршрут. Разница в метрике может определяться исходя из различных параметров, таких как пропускная способность сети, надежность канала, задержка и т.д.
В вашей ситуации метрика маршрута по умолчанию завышена до значения 20100, что его делает менее предпочтительным. Это объясняет, почему вы не можете получить ответы от внешних источников при наличии других, более предпочтительных маршрутов с нормальной метрикой.
Пример
Рассмотрим вывод таблицы маршрутизации, когда существует проблема с высоким значением метрики:
default via 192.168.0.1 dev enp11s0 proto dhcp metric 20100
169.254.0.0/16 dev enp11s0 scope link metric 1000
192.168.0.0/24 dev enp11s0 proto kernel scope link src 192.168.0.222 metric 100
Здесь видно, что маршрут по умолчанию имеет метрику 20100, что делает его одним из наименее предпочтительных, и это может являться причиной потери ping-запросов из интернета.
После перезагрузки системы или повторного выбора Ethernet-соединения через графический интерфейс Xfce, метрика изменяется на 100:
default via 192.168.0.1 dev enp11s0 proto dhcp metric 100
Это изменение делает данный маршрут по умолчанию более предпочтительным, что позволяет получать ответы на ping.
Применение
Для решения проблемы без перезагрузки системы, как вы уже отметили, можно выполнить повторное подключение по Ethernet через графический интерфейс, что приводит к обновлению параметров маршрутизации. Однако стоит также рассмотреть возможности автоматизации или устойчивого изменения поведения системы, чтобы исключить необходимость вмешательства пользователя.
Один из подходов заключается в настройке сетевого менеджера (например, NetworkManager или systemd-networkd) для установки предпочтительной метрики вручную. Это может быть выполнено путем редактирования конфигурационных файлов сети, задавая нужное значение метрики напрямую.
Пример конфигурации для NetworkManager может выглядеть следующим образом:
[connection]
id=DockingStationConnection
...
[ipv4]
method=auto
route-metric=100
Другой подход — скрипт автоматизации, который бы проверял действующую метрику и корректировал ее при обнаружении высоких значений. Такой скрипт может постоянно или периодически запускаться в фоновом режиме, обеспечивая актуальность сетевых маршрутов.
#!/bin/bash
TARGET_METRIC=100
CURRENT_METRIC=$(ip route | grep '^default' | awk '{print $5}')
if [ "$CURRENT_METRIC" -gt 1024 ]; then
sudo ip route change default via 192.168.0.1 dev enp11s0 metric $TARGET_METRIC
fi
Этот скрипт проверяет текущую метрику и, если она превышает 1024, изменяет значение на более предпочтительное.
Таким образом, зная теорию о метрике маршрута и возможные примеры изменений, вы можете эффективно управлять сетевыми подключениями, обеспечивая стабильную работу вашего устройства в сети.