Недавно столкнулся с проблемой, о причине которой давно забыл. Итак, имеем схему
мир ---> (igb0) маршрутизатор А (ng0) --> / / --> (ng0) маршрутизатор В (vlan101) -> (re0) хост.
На интерфейсе re0 конечного хоста присутствует IP-адрес 192.168.0,32, его необходимо транслировать от «реального» адреса, допустим 193.0.0.32. Маршрутизаторы А и В связаны между собой по «узкому» каналу и, в принципе, нежелательно осуществлять трансляцию адреса именно на маршрутизаторе В, тем более, что номер интерфейса ng может изменяться. Пишу на внешнем интерфейсе маршрутизатора А правило для пакетного фильтра ipnat
map igb0 192.168.0.32/32 -> 193.0.0.32/32
и маршрутизирую сеть 192.168,0.0 на маршрутизатор В. Запускаю на хосте ping на 8.8.8.8, ответов нет, запускаю на один из IP-адресов, присвоенных маршрутизатору А, – ответы приходят! Проверяю с помощью tcpdump наличие запросов/ответов на всех, указанных на схеме, интерфейсах, оказывается на внешнем интерфейсе маршрутизатора А есть и запросы и ответы, а на внутреннем – только запросы. Добавляю везде первым правилом ipfw разрешение icmp-пакетов – ответы не появляются. Никакого объяснения не нахожу, даже сгоряча заменил внутренний сетевой адаптер маршрутизатора В с re на проверенный sk (малоли, какие глюки с vlan) – результат не изменяется. Через несколько дней догадался запустить tcpdump с волшебными ключами -vvv
router-B# tcpdump -vvv -n -i ng0 host 8.8.8.8 and icmp