Переадресация 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, о принятии перенаправлений, которые были отправлены в ответ на другой пакет: вы читали это где-нибудь? потому что я был бы действительно заинтересован в этом.

Другие вопросы по тегам