Хост VPN отвечает на одном интерфейсе и отказывается отправлять ответы обратно через туннель, а маршрут по умолчанию выглядит правильно. Именно здесь основная таблица перестаёт быть всей историей. Linux может выбирать таблицу маршрутизации для каждого пакета с помощью правил политики, и VPN, возможно, установил одно. Прочитайте правила, прежде чем трогать маршрут по умолчанию.

Порядок важен: сначала правила, затем таблица, которую выбирает каждое правило.

Читайте правила в порядке приоритета

Выполните ip rule show и читайте сверху вниз. Номер приоритета управляет порядком проверки, и меньшее число проверяется раньше. Правило по умолчанию на 32766 обычно последнее, которое имеет значение. Если список длинный, сохраните его в файл, прежде чем что-то менять.

Для каждого правила запишите приоритет, совпадение (источник, метка, интерфейс или назначение) и таблицу, на которую оно ссылается. Правило без пригодной таблицы — это тупик, а не маршрут.

Сделайте то же для IPv6 с помощью ip -6 rule show. Политика, существующая только в семействе IPv4, оставляет другое семейство на основной таблице.

Читайте таблицу, которую выбирает каждое правило

Используйте ip route show table <name or number> для каждой упомянутой таблицы. Сравните её маршруты с интерфейсом и следующим узлом, которые вы ожидаете. Пустая или неполная таблица объясняет сбой, который основная таблица объяснить не может.

В основной таблице всё ещё может быть маршрут по умолчанию, и это нормально. Если правило сначала отправляет ваш поток в таблицу 51820, основной маршрут по умолчанию для этого пакета несуществен.

Найдите имя таблицы в /etc/iproute2/rt_tables, если номер незнаком. Этот поиск занимает секунду и предотвращает долгий обход.

Выясните, кто установил правило

NetworkManager, wg-quick и другие скрипты могут устанавливать правила динамически. Удаление одного во время работы может быть отменено при следующем переподключении. Проверьте конфигурацию менеджера, прежде чем добавлять конкурирующее правило.

Например, wg-quick добавляет помеченное правило и таблицу для разрешённых адресов туннеля. Именно из-за этого правила трафик к этим адресам обходит основной маршрут по умолчанию. Если удалить его, не изменив конфигурацию, следующий up его восстановит.

Сохраняйте внешний маршрут конечной точки и доступ управления во время проверки. Не очищайте все правила на работающем удалённом шлюзе, чтобы упростить вывод. Сеанс управления, который переживает изменение, — часть теста.

Проверьте важный контекст источника

Общий ip route get отвечает на другой вопрос, чем поток приложения. Добавьте адрес источника и метку, если VPN её использует, чтобы увидеть путь, который проходит настоящий пакет. Проверьте включённое и исключённое назначение с одним и тем же контекстом источника. Затем повторите для IPv6, если хост работает с двойным стеком.

После одобренного исправления повторно выполните те же две проверки и сравните. Запишите задуманное правило, таблицу и то, сколько правило переживает перезапуск. Эта запись делает следующий перезапуск службы объяснимым, а не загадочным. страница руководства ip-rule документирует селекторы совпадений и синтаксис таблиц.

Похожие статьи