Настройка natd во FreeBSD


Что нам надо:
сам natd ;)
Функции ядра желательно все что освязанно с IPFW
IPFW ;)
прямые руки
NATD

Для запуска мы будем использовать sh-скрипт и фаил конфиг1).
echo "#!/bin/sh">/etc/natd.sh
echo "/sbin/natd -p 8666/divert -f /etc/natd.conf -n rl1">>/etc/natd.sh
echo "use_sockets yes">/etc/natd.conf
echo "same_ports yes">>/etc/natd.conf
echo "unregistered_only yes">>/etc/natd.conf
echo "log yes ">>/etc/natd.conf
echo "/sbin/ipfw add 200 divert 8666 all from 192.168.1.1 to any via rl1">>/etc/natd.sh
echo "/sbin/ipfw add 201 divert 8666 all from any to 213.24.217.146 in recv rl1">>/etc/natd.sh

А теперь разберемся.
Вместо rl1 надо указать сетевую которая смотри в инет. 192.168.1.1 надо заменить тем кому надо интернет. 213.24.217.146
надо заменить на ip сетевой которая смотрит в инет. Чтобы добавить компы можно почитать маны про блоки2) или просто добавить еще одно правило :)
Из мана нам ясно что расшарить инет можно только тем кому надо, при этом не писать для каждого ip свое правило:
echo "goodguys="{ 10.1.2.0/24{20,35,66,18} or 10.2.3.0/28{6,3,11}}"">>/etc/natd.sh
echo "/sbin/ipfw add 200 divert 8666 all from ${goodguys} to any via rl1">>/etc/natd.sh

Для 10.1.2.20, 10.1.2.35 , 10.1.2.35 , etc интернет доступен, так же и со второй подсетью.

Далее надо сделать скрипт исполняемым:
# chmod +x /etc/natd.sh

Затем не помешало бы добавить скрипт в авто загрузку
echo "/etc/natd.sh">>/etc/rc.local
Заключение

Ну вот и все. Вот что должно выйти из этого:
[root@main /etc]# cat /etc/natd.conf
use_sockets yes
same_ports yes
unregistered_only yes
log yes

[root@main /etc]# cat /etc/natd.sh
#!/bin/sh
/sbin/natd -p 8666/divert -f /etc/natd.conf -n rl1
/sbin/ipfw add 200 divert 8666 all from 192.168.1.1 to any via rl1
/sbin/ipfw add 201 divert 8666 all from any to 213.24.217.146 in recv rl1
1) это удобно когда надо запустить несколько натов
2) man ipfw

http://wiki.bsdportal.ru/doc:natd_ipfw

Обновлено: 12.03.2015