Ещё вариант для изврата.Отключить natd в /etc/rc.conf (закомментировать строки относящиеся к natd)
Отключить nat на ppp (убрать(закомментировать), если есть в /etc/ppp/ppp.conf строку nat enable yes)
Отключить nat на ppp в /etc/rc.conf прописав ppp_nat="NO"
создать файлы ppp.linkup и ppp.linkdown
touch /etc/ppp/ppp.linkup
touch /etc/ppp/ppp.linkdown
создать файлы tun0_up.sh и tun0_down.sh
touch /etc/ppp/tun0_up.sh
touch /etc/ppp/tun0_down.sh
файлы tun0_up.sh и tun0_down.sh сделать исполняемыми
chmod 555 /etc/ppp/tun0_up.sh
chmod 555 /etc/ppp/tun0_down.sh
Пишем в ppp.linkup
pppoe:
! sh -c "/etc/ppp/tun0_up.sh"
Пишем в ppp.linkdown
pppoe:
! sh -c "/etc/ppp/tun0_down.sh"
Пишем в tun0_up.sh
#!/bin/sh
natd -n tun0 -dynamic -redirect_port tcp 10.0.1.10:30000-35000 30000-35000
ipfw add 50 divert natd all from any to any via tun0
Пишем в tun0_down.sh
#!/bin/sh
killall -9 natd
ipfw delete 50
Кусок файла ppp.conf
pppoe:
..............................
..............................
set ifaddr 0.0.0.0/0 0.0.0.0/0
add default HISADDR
Важно!
В этом файле, метка label: (в данном случае - pppoe:) должна совпадать с названием метки в файлах ppp.linkup и ppp.linkdown
Вот ещё:
http://savio.km.ua/2009/06/09/vpn-%D0%BA%D0.../ (там про vpn, а не про pppoe, но суть дела не меняет)
http://www.opennet.ru/base/net/pppoe_freebsd_server.txt.html
Развлекайтесь.
Но как по мне, использовать нужно mpd, nat, pf. А ppp, natd становятся не актуальны.
Лучше полчаса потерять, потом за пять минут долететь.