Настройка шлюза – FreeBSD+natd+ipfw
Немного о том как из машины под управлением FreeBSD сделать шлюз. Конфиг фаервола "в инет ходють все" кому надо тот изменит.
Сложного тут ничего нет (5 минут делов), но в форумах постоянно возникает этот вопрос.
Работа состоит из 4 шагов.
Шаг 1: Настроить айпёвость.
Для этого нужно чтоб ваш /etc/rc.conf имел примерно такие строки (зависит от вашей сетевухи и ip выделеного провом).
hostname="pupkin.ru"
ifconfig_ваш внешний интерфэйс="inet 195.131.98.149 netmask 255.255.255.0"
ifconfig_ваш внутренний интерфэйс="inet 192.168.25.1 netmask 255.255.255.0"
defaultrouter="195.131.98.1"
Шаг 2: Перекомпиляция ядра.
Делаем команды
cp /sys/i386/conf/GENERIC /sys/i386/conf/XXX
ee /sys/i386/conf/XXX
и добавляем туда такие опции
options IPFIREWALL #firewall
options IPFIREWALL_VERBOSE #enable logging to syslogd(8)
options IPFIREWALL_FORWARD #enable transparent proxy support
options IPFIREWALL_VERBOSE_LIMIT=100 #limit verbosity
options IPFIREWALL_DEFAULT_TO_ACCEPT #allow everything by default
options IPDIVERT #divert sockets
options DUMMYNET
options QUOTA
options SUIDDIR
после чего
cd /sys/i386/conf/
config XXX
cd ../../compile/XXX
make depend
make all
make install
Шаг 3: Настройка natd
Добавляем в /etc/rc.conf строки
gateway_enable="YES"
firewall_enable="YES"
firewall_type="OPEN"
natd_enable="YES"
natd_interface="ваш внешний интерфэйс"
natd_flags="-f /etc/natd.conf"
создаём файл /etc/natd.conf и в нём пишем
same_ports yes
use_sockets yes
делаем команды
mv /etc/rc.firewall /etc/rc.firewall.old
/etc/rc.firewall
ee /etc/rc.firewall
и в нём пишем
#!/bin/sh
#
# enable transfer via loopback
/sbin/ipfw -q flush
/sbin/ipfw add divert natd all from any to any via ваш внешний интерфэйс
/sbin/ipfw add pass all from any to any
Шаг 4: Перезагрузка.
shutdown -r now