Переадресация ICMP: как проверить это с помощью icmpush
Я хочу посмотреть, как меняется таблица маршрутизации в системе Linux, когда получено перенаправление ICMP. Для этого я использую
icmpush -v red -sp current-gateway -gw new-gateway -dest google.com -c host -prot tcp my-eth1-ip-address
(который возвращает успех), но результат
route -n
остается такой же. Конечно, я проверил вывод
cat /proc/sys/net/ipv4/conf/eth1/accept_redirects
это 1. Это машина с Ubuntu 12, с последней стабильной версией ядра, без брандмауэра.
Итак, вопрос: что может пойти не так?
2 ответа
Согласно http://www.kernel.org/doc/Documentation/networking/ip-sysctl.txt, перенаправления по умолчанию принимаются только для тех шлюзов, которые уже перечислены в таблице маршрутизации.
secure_redirects - BOOLEAN Принимать сообщения перенаправления ICMP только для шлюзов, указан в списке шлюзов по умолчанию. secure_redirects для интерфейса будет включен, если хотя бы один из conf/{all,interface}/secure_redirects имеет значение TRUE, иначе он будет отключен по умолчанию TRUE
Предположение: зов icmpush
не использует внешний интерфейс eth1
, а точнее локальный lo
так что ядро не распознает, что это правильное перенаправление со шлюза. Кроме того, в очень старых версиях ядра Linux эти маршруты не отображались в ответе route -n
, Как я уже отметил, ответ route -nC
может быть правильным способом включить также временный маршрут перенаправления.
@ grawity, о принятии перенаправлений, которые были отправлены в ответ на другой пакет: вы читали это где-нибудь? потому что я был бы действительно заинтересован в этом.