3

Я хочу посмотреть, как меняется таблица маршрутизации в системе 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 ответа2

1

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

secure_redirects - BOOLEAN
    Accept ICMP redirect messages only for gateways,
    listed in default gateway list.
    secure_redirects for the interface will be enabled if at least one of
    conf/{all,interface}/secure_redirects is set to TRUE,
    it will be disabled otherwise
    default TRUE
0

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .