Шлюз на базе FreeBSD 5.3
Понедельник, 20 ноября 2006 (00:34:18)
Последовательность действий, которая поможет читателю установить в локальной сети работающий шлюз (gateway) для выхода в Интернет под управлением FreeBSD.
В этой статье речь пойдёт о настройке шлюза для небольшой домашней сети. Такая задача может возникнуть, например, если у вас имеется постоянное соединение с Интернет и необходимость работать с Интернет из вашей локальной сети. С помощью ipfw и NAT эта задача сводится к сборке ядра с поддержкой ipfw и запуску natd. Обсуждение создания правил для ipfw выходит за рамки этой статьи, хотя является немаловажной составляющей сетевой безопасности. Выбор FreeBSD 5.3 в качестве платформы для экспериментов обусловлен тем, что на момент написания статьи это был последний production-stable release.
В нашем случае в качестве маршрутизатора будет использоваться машина с двумя сетевыми картами (rl0 — внутренняя сеть 192.168.1.1 и fxp0 — внешняя www.xxx.yyy.zzz). За гейтом скрывается сеть из произвольного количества машин с “серыми” адресами, в нашем простом случае одна —192.168.1.2.
Первое, что необходимо сделать для того, чтобы FreeBSD могла функционировать как шлюз, это пересобрать ядро с поддержкой ipfw (IP firewall). Для этого скопируем файл /usr/src/sys/i386/conf/GENERIC в файл с произвольным именем (например cp GENERIC mymachine) и добавим в файл mymachine следующие строки:
options IPFIREWALL options IPFIREWALL_VERBOSE options IPDIVERT options DUMMYNET options IPFIREWALL_VERBOSE_LIMIT=10 options TCP_DROP_SYNFIN
Теперь соберём ядро:
# config mymachine # cd /usr/src/sys/compile/mymachine # make # make install # shutdown -r now
После перезагрузки отредактируем файл /etc/rc.conf:
defaultrouter="www.xxx.yyy.1" gateway_enable="YES" hostname="mymachine.ru" ifconfig_fxp0="inet www.xxx.yyy.zzz netmask 255.255.255.0" ifconfig_rl0="inet 192.168.1.1 netmask 255.255.255.0" natd_enable="YES" natd_interface="fxp0" firewall_enable="YES" firewall_type="OPEN" tcp_drop_synfin="NO"
В параметре defaultrouter следует указать, шлюз по умолчанию вашего провайдера. Параметр gateway_enable=”YES” позволяет использовать вашу машину как маршрутизатор. Параметр natd_enable=”YES” включает поддержку демона NAT (Network Address Translation), natd_interface – интерфейс для natd. Обратите внимание на параметр firewall_type=”OPEN”, он позволяет всем компьютерам локальной сети выходить в Интернет через шлюз. Вы также можете ознакомиться с другими типами настройки ipfw в файле /etc/rc.firewall.