FreeBSD отличается от большинства операционных систем тем, что у нее штатно имеется целых 3 файервола и использовать их можно совместно. IPFW — собственная разработка, IPF из NetBSD и PF из OpenBSD.
Редирект на PF осуществляется очень просто, допустим внутри сети у вас есть вебсервер на который надо пробросить весь трафик идущий на ip внешнего маршрутизатора (89.252.34.110, сетевай карта em0) на внутренний адрес (192.168.10.10), правило для pf будет таким:
rdr on em0 proto { tcp, udp } from any to 89.252.34.110 -> 192.168.10.10
nat on em0 proto { tcp, udp } from 192.168.10.10 to any -> 89.252.34.110
Для того что бы пробросить один порт, например 80 c ip 89.252.34.110 на 192.168.10.10 80 порт, конструкция будет такая:
rdr on em0 proto { tcp, udp } from any to 89.252.34.110 port 80 -> 192.168.10.10
nat on em0 proto { tcp, udp } from 192.168.10.10 to any -> 89.252.34.110
Или допустим нужно порт 8080 ip 89.252.34.110 пробросить на 192.168.10.10, 80 порт то прописать надо такие настройки:
rdr on em0 proto { tcp, udp } from any to 89.252.34.110 port 8080 -> 192.168.10.10 port 80
nat on em0 proto { tcp, udp } from 192.168.10.10 to any -> 89.252.34.110
Во всех предыдущих примерах использовалась строка:
nat on em0 proto { tcp, udp } from 192.168.10.10 to any -> 89.252.34.110
Это пример настройки ната отдельного ip.
Для того что бы задействовать нат целой подсети достаточно прописать такие настройки:
nat on em0 from 192.168.10.0/24 to any -> 89.252.34.107
Мы занатим всю сеть 192.168.10.0/24 в адрес 89.252.34.107.