ICMP-перенаправление: как проверить с помощью icmpush

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, с последней стабильной версией ядра, брандмауэр не установлен.

Итак, вопрос: что может пойти не так?

решение1

В соответствии сДокументация/Сеть/ip-sysctl.txtпо умолчанию перенаправления принимаются только для тех шлюзов, которые уже указаны в таблице маршрутизации.

secure_redirects - BOOLEAN
    Принимать сообщения о перенаправлении ICMP только для шлюзов,
    указан в списке шлюзов по умолчанию.
    secure_redirects для интерфейса будет включен, если хотя бы один из
    conf/{all,interface}/secure_redirects имеет значение TRUE,
    в противном случае он будет отключен
    по умолчанию ИСТИНА

решение2

Предположение: вызов icmpushне использует внешний интерфейс eth1, а использует локальный, loтак что ядро ​​не распознает, что это корректное перенаправление со шлюза. Кроме того, в очень старых версиях ядра Linux эти маршруты не отображались в ответе route -n. Как я уже отметил, ответ route -nCможет быть правильным способом включить также временный маршрут перенаправления.

@grawity, по поводу принятия перенаправлений, отправленных в ответ на другой пакет: вы где-то это читали? Мне это было бы очень интересно.

Связанный контент