10.0.0.0 - 10.255.255.255
172.16.0.0 -
172.31.255.255
192.168.0.0 - 192.168.255.255Итого
имеем:
Внешняя сеть:Интерфейс: rl0
IP: 10.10.10.10 netmask
255.255.255.0
Шлюз: 10.10.10.1Внутренняя сеть:Интерфейс:
rl1
IP: 172.16.0.1 netmask 255.255.255.0Объединяя всё написанное
выше, получем такую схему сети:
Стоит
заметить, что если внутренняя сеть предстваляет из себя оди компьютер, то свитч
совершенно не нужен.
Со схемой сети вроде разобрались, теперь переходим к
настройке нашего роутера.
Непосредственно за преобразование адресов (NAT)
отвечает демон NATD.
Сам по себе он не может обрабтывать пакеты. Для
обработки пакет должен быть передан ему фаерволлом.
В данной статье мы
используем фаерволл ipfw.
Настройка сводится к нескольким шагам, некоторые вы
возможно пропустите, если система уже имеет подходящие настройки.
Для получения возможности использовать NAT и
Фаерволл, нам потребуется собрать новое ядро с дополнительными опциями.
Более
подробно о сборке ядра можно почитать в
соотвествующей главе Руководства по FreeBSD.
Необходимо
собрать ядро со следующими опциями:
options IPFIREWALL
options
IPDIVERT
Первая включает фаерволл ipfw, а вторая возможность
передавать пакеты на обработку приложениям.
Если вы раньше никогда не
собирали своё ядро, то не расстраивайтесь, здесь всё просто.
Переходим в
папку с файлами ядер, содаём свой собственный конфиг ядра и добавляем в него
строчки опций.
После чего остаётся только скомпилировать и установить новое
ядро.
Теперь всё это пошагово:
cd /usr/src/sys/i386/conf
cp
GENERIC NATKERNEL
ee NATKERNELИзменяем строку
ident
GENERICна
ident NATKERNELпосле чего добавляем
строки
options IPFIREWALL
options IPDIVERTи наконец,
сохраняем (ESC, a, a)
-
Конфиг ядра готов. Теперь
компилируем:
cd /usr/src
make buildkernel
KERNCONF=NATKERNELКогда компиляция будет завершена, останется только
установить новое ядро.
Это так же очень просто:
cd /usr/src
make
installkernel KERNCONF=NATKERNELНовое ядро начнёт работать после
перезагрузки компьютера.
Однако сейчас перезгружать совсем не обязательно,
можно продолжить настройку.
Если вы ранее использовали фаерволл ipfw, то
необходимо добавить к нему следующее правило:
divert natd ip any to any
via rl0Означет оно следующее: передавать все ip пакеты на обработку
внешней программе, "висящей" на стандартном порту natd (8668).
Если же
фаерволл у вас не настроен, то мы его сейчас настроим :)
Создаём файл
/etc/firewall.conf и пишем в нём следующие строки:
fw="/sbin/ipfw
-q"
${fw} -f flush
${fw} add divert natd ip any to any via
rl0
${fw} add 65534 allow ip any to anyПосле чего сохраняем
файл.
Теперь необходимо поставить права на выполнение данного
файла.
chmod 700 /etc/firewall.conf
Вот мы и добрались
до финального шага настройки.
Сейчас нам необходимо внести некоторые
изменения в файл /etc/rc.conf для обеспечения автоматической настойки сети,
фаерволла и запуска NAT'а при загрузке системы.
Сначала
сеть:
ifconfig_rl0="inet 10.10.10.10 netmask
255.255.255.0"
ifconfig_rl1="inet 172.16.0.1 netmask
255.255.255.0"
defaultrouter="10.10.10.1"Теперь
фаерволл:
firewall_enable="YES"
firewall_script="/etc/firewall.conf"И
наконец
NAT:
gateway_enable="YES"
natd_enable="YES"
natd_interface="rl0"Также
желательно добавить следующую строку в
/etc/sysctl.conf
net.inet.ip.forwarding=1Это аналогия
gateway_enable="YES"
На этом базовая настройка роутера
закончена.
После перезагрузки NAT должен заработать.
Если этого не
произошло, то проверьте правильно ли вы всё сделали.
На компьютерах внутренней сети
необходимо установить следующие параметры:
IP: 172.16.0.2 -
172.16.0.254
Шлюз: 172.0.0.1
Вот так просто настраивается NAТ
в операционной системе FreeBSD :)
Конечно, здесь рассмотрен довольно простой
случай использования NAT'а, но он также является основным.
Дополнительную
информацию можно получить из:
man natd
man ipfw
man rc.conf