Включение NAT
Демон Native Address Translation имеется в дистрибутиве FreeBSD'3.4, ничего дополнительно устанавливать не надо. В документации к нему написано, что возможность NAT появилась во FreeBSD'2.2 вместе с опцией "divert (4) socket".
Прежде, чем устанавливать NAT, надо четко уяснить:
Для начала надо пересобрать ядро с опциями
options IPFIREWALL options IPDIVERTЯ еще добавляю
options IPFIREWALL_DEFAULT_TO_ACCEPTдабы не оказаться без доступа по сети - по умолчанию FireWall запрещает все, и надо разрешать необходимое отдельно.
Как пересобрать ядро, смотри тут
Необходимо заставить систему при загрузке выполнять
sysctl -w net.inet.ip.forwarding=1это делается командой
gateway_enable=YESв /etc/rc.conf.
Если при запуске natd используется ключ -n или -interface, необходимо сконфигурировать интерфейсы; впрочем, это обычно делается еще при инсталляции системы.
В /etc/services должна присутствовать строка
natd 8668/divert # Network Address Translation socketЭто задает порт по умолчанию (после установки FreeBSD'3.4 эта строка уже имеется). (В /etc/inetd.conf ничего писать не надо - natd не запускается как сервис.)
В простейшем случае natd запускается командой
natd -interface сетевой_интерфейс(имя сетевого_интерфейса можно посмотреть в /etc/rc.conf в переменной ifconfig_имя_сетевого_интерфейса). Кроме того, надо указать FireWall'у передавать IP-пакеты NAT-демону:
/sbin/ipfw -f flush /sbin/ipfw add divert natd all from any to any via сетевой_интерфейс /sbin/ipfw add pass all from any to anyДля того, чтобы эти команды выполнялись при загрузке машины, в /etc/rc.conf надо прописать
firewall_enable="YES" firewall_type="open" natd_enable="YES" natd_interface="сетевой_интерфейс"
Пример конфигурации rc.conf смотри
здесь