>В man ipfw в разделе BUGS читаем:
>
>Packets diverted to userland, and then reinserted by a userland process
>(such as natd(8)) will lose various packet attributes, including their
>source interface. If a packet is reinserted in this manner, later
>rules
>may be incorrectly applied, making the order of divert rules in the
>rule
>sequence very important.
>
>Однако как показывает практика, после прохождения через natd входящие пакеты не теряют
>source интерфейс. Ошибка в документации?
Теряет.
192.168.0.0/24 - локальная сеть
192.168.0.8 - машина в этой сети
192.168.0.1 (xl0) - интерфейс роутера, смотрящий во внутреннюю сеть
211.107.250.132 (xl1) - интерфейс роутера, смотрящий в Internet
пингуем со 192.168.0.8 хост в Internet 211.107.250.129
accept icmp:8.0 192.168.0.8 211.105.250.129 in via xl0 (пакет вошел (in) в ipfw через xl0 (via xl0))
divert natd icmp:8.0 192.168.0.8 211.107.250.129 out via xl1 (пакет ушел из ipfw в natd (divert natd) ; natd поменял ему source адрес (про эту способность даже написано в man 8 natd :) ; natd вернул пакет в поток пакетов)
accept icmp:8.0 211.107.250.132 211.107.250.129 out via xl1 (пакет ушел (out) из ipfw через xl1 (via xl1))
А представь, source адрес остался 192.168.0.8. И куда пингуемый будет ответы слать?
man 8 natd и man 4 divert