(ipfw, ipfw nat, ipfw fw)

Необходимые опции ядра

options         IPFIREWALL
options         IPFIREWALL_FORWARD
options         IPFIREWALL_NAT

/etc/sysctl.conf

net.inet.ip.fw.one_pass=0 

Скрипт запуска:

#!/bin/sh

IPFW="/sbin/ipfw"
EXT_IP="92.242.110.42"
ISP_IP="92.242.110.41"
FWD_NAT_ID=22
USER_TABLE_NUM=34
REDIRECT_IPS="10.0.0.0/24"

#Add NAT IP to table
${IPFW} table 33 add ${EXT_IP} ${FWD_NAT_ID}

${IPFW} nat ${FWD_NAT_ID} config ip ${EXT_IP} log
for ip_mask in ${REDIRECT_IPS} ; do
  ${IPFW} table ${USER_TABLE_NUM} add ${ip_mask} ${FWD_NAT_ID}
done;

${IPFW} 60010 nat tablearg ip from table\(34\) to any
${IPFW} 60015 add fwd ${ISP_IP} ip from ${EXT_IP} to any
${IPFW} 60020 nat tablearg ip from any to table\(33\)