ICMP-пакеты не могут быть перенаправлены
Машина A 10.167.27.10 Маршрут на A похож на:
0.0.0.0 10.167.27.1 0.0.0.0 UG 0 0 0 eth0
10.167.28.20 10.167.27.11 255.255.255.255 UGH 0 0 0 eth0
10.167.27.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
Машина B 10.167.27.11 Маршрут на B похож на:
default 10.167.27.1 0.0.0.0 UG 0 0 0 eth0
10.167.27.0 * 255.255.255.0 U 0 0 0 eth0
Для ip_forward и accept_redirects установлено значение 1 на B.
И машина C 10.167.28.20. Я могу пропинговать C из B. Поскольку существует маршрут для C, использующий B в качестве шлюза на A, я подумал, что если я пропингую C из A, я получу сообщение перенаправления ICMP. Но на самом деле я не получил никакого ответа.
Я взял tcpdump на eth0 на B и увидел, что пришли ICMP. Но почему они не были отправлены?
Обновить:
В BI использовались функции подключения Netfilter для вывода журналов во время обработки пакетов ICMP. Журнал, который я добавил к точке подключения FORWARD, был напечатан, и результат маршрутизации был правильным. Но журнал в точке подключения POST ROUTING не был напечатан. Я не совсем понимаю...
1 ответ
Машина C знает, как ответить на A? Машина A знает, как связаться с C (вот почему вы видите, что IMCP прибывает в B), но если устройство C не знает, как достичь A, оно не будет отвечать на A (и эхо-запрос не будет выполнен).
Попробуйте пропинговать A из C. Если это не удалось, добавьте маршрут к машине A в устройстве C.
Надеюсь, это поможет.
редактировать
Это ваша топология, верно?
Поскольку B подключен ко всем другим устройствам, он будет знать, как их достичь. Вы должны включить пересылку на B и определить шлюз по умолчанию для A и C как B.