>чем отличаются devirt от fwd и наоборот?
Смотрим man ipfw:
divert <port>
Divert packets that match this rule to the divert(4) socket bound to port "port". The search terminates.
fwd ipaddr[,port]
Change the next-hop on matching packets to ipaddr, which can be an IP address in dotted quad or a host name.
Разница в том, что divert пакета бывает в локальный сокет. Forward бывает на локальный или удалённый IP адрес. Практические примеры: если нужно скормить пакет в локальный natd, лучше его заворачивать его правилом divert. А если принудительно завернуть в прокси, то лучше использовать правило fwd, т.к. прокси байндится не к сокету, а к адресу интерфейса. И т.п.
Есть еще, кстати, правило tee - это то же самое, что divert, только в сокет заворачивается копия пакета. Используется, например, в некоторых системах учёта траффика.