Клиент WireGuard подключается и пингует адрес на совершенно другом интерфейсе, и ответ приходит. Записи показывают запрос только на туннеле. Ничего не сломано, и аккуратно отключённая настройка пересылки здесь ни при чём. Это сравнение двух путей, которые на схеме выглядят похоже, а в ядре полностью различаются.

Один путь пересылает пакеты за кого-то другого; другой доставляет их самому хосту.

Пакет, адресованный хосту, остаётся в хосте

Удалённый клиент отправляет IP-пакет на адрес, которым владеет хост. Маршрутизация задаёт один вопрос об этом пакете: является ли этот адрес назначения локальным? Каждый адрес, который держит хост, появляется в локальной таблице маршрутизации, и эта таблица проверяется раньше основной, поэтому пакет уходит в собственный стек хоста, а не наружу через другой интерфейс. Ответ создаётся локально, и он возвращается через туннель, потому что запрос пришёл оттуда.

Это весь механизм. Пересылка не происходит, изменение состояния интерфейса не участвует, и рассматриваемому адресу не нужно быть достижимым откуда-либо ещё.

Почему ip_forward не применяется

Пересылка управляет пакетами, которые должны выйти через другой интерфейс, отличный от того, на который они пришли. Пинг к самому хосту никогда не идёт этим путём: пакет потребляется локально, и ответ создаётся локально. Поэтому установка net.ipv4.ip_forward=0 здесь ничего не меняет, и правило в цепочке пересылки никогда не видит этот трафик. Правильный контроль находится на входном пути, ограниченный входящим интерфейсом или источником.

Вот почему отключение пересылки и предположение, что хост изолирован, создаёт ложное чувство безопасности.

Прочитайте локальную таблицу, которая решила

ip rule show обычно сообщает о правиле с нулевым приоритетом, которое отправляет все поиски сначала в локальную таблицу, а ip route show table local перечисляет собственные адреса хоста с локальной областью. Эта таблица включает адреса на интерфейсах, которые административно отключены, но всё ещё настроены. Статически назначенные адреса IPv4 обычно переживают обрыв связи, и именно поэтому пинг к отключённому мосту может всё ещё успешно пройти и удивить оператора.

IPv6 расходится именно в этом пункте. Его адреса обычно отзываются при обрыве связи, если не задан keep_addr_on_down. Сравнивайте семейства, а не предполагайте, что одно правило покрывает оба.

Чего на самом деле достигает пир

Ответ с собственного адреса маршрутизатора в сегменте ничего не говорит о машинах за этим сегментом. Пир не может достичь хоста за другим интерфейсом этим путём; он достигает только адресов, которыми владеет сам маршрутизатор. Проверка службы на отдельном хосте LAN, а не пинг адреса маршрутизатора, — это то, что устанавливает, разрешена ли пересылка вообще.

Ограничение пира службами, привязанными к адресу туннеля, — вопрос входной политики. Разрешите нужную службу на интерфейсе туннеля и ограничьте источники, которым можно ею пользоваться, потому что пакет действительно приходит туда.

Проверьте и адреса, которые вы собирались вывести из эксплуатации. Удалить адрес с интерфейса надёжнее, чем нагромождать правила межсетевого экрана поверх устаревшего.

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