FreeBSD 8 настройка шлюза

Планируем – настроить шлюз на FreeBSD 8 для выхода в интернет.

Есть – Сервер на нем крутиться FreeBSD 8 c двумя сетевыми картами, также ipfw и ipdivert (для поднятия NAT) вкомпилирован в ядро как это сделать читаем тут (компиляция ядра с опцией ipfwи ipdivert)
Приступим, смотрим все доступные интерфейсы в системе
ifconfig -a
Мои интерфейсы xl0в нее включен линк от провайдера (интернет) rl0 смотрит в локальную сеть (включен в свич) ( у вас могут быть другие в зависимости от драйверов которые использует ваше оборудование)
Для начала настроим интернет на сервере.
ifconfig xl0 4.4.4.5 netmask 255.255.255.252 – присваиваем ip адрес внешнему интерфейсу(ip адрес пишем свой)
ifconfig rl0 192.168.1.1 netmask 255.255.255.0 – эта адрес шлюза для нашей сети.
route add default 4.4.4.4 – назначаем жлюз по умолчанию туда будут отправляться все пакеты.(шлюз пишем свой)
также прописываем адреса имен (dns)
echo “nameserver 8.8.8.8″ > /etc/resolv.conf
Проверяем работает ли интернет

ping google.com
Интернет работает.
Чтобы после перезагрузки эти настройки поднялись автоматически нужно добавить их в rc.conf, также добавим в этот файл все то что понадобиться нам для решения нашей задачи.
/etc/rc.conf – главный конфигурационный файл FreeBSD 8 поэтому редактируйте его внимательно. Если вы новичок в мире юникс пользуйтесь редактором ee, хотя я предпочитаю vi или vim.
vim /etc/rc.conf или ee /etc/rc.conf
добавляем такие строчки
defaultrouter=”4.4.4.4″
ifconfig_xl0=”inet 4.4.4.5 netmask 255.255.255.252″
ifconfig_rl0=”inet 192.168.1.1 netmask 255.255.255″
firewall_enable=”YES”
firewall_type=”OPEN”
gateway_enable=”YES” – это значение определяет наш компьютер как роутер.
natd_enable=”YES” – это запускает сервер преобразования сетевых адресов (чтобы адреса нашей локальной сети были представлены в интернете реальным ip адресом)
сохраняем.
Создаем файлы которые нам необходимы для работы. Нам необходимо настроить firewall и запустить NAT и обеспечить автоматический запуск.

Создаем файл к примеру ipfw-alan (не ipfw-alan.sh FreeBSD 8 при запуске такой файл не прочитает и вы получите следующую ошибку /etc/rc: WARNING: Ignoring old-style startup script)
Более тонкие настройки фаервола здесь не рассматриваются – это простой пример для обеспечения работы нашего компьютера как роутера.
#!/bin/sh
fwcmd=”/sbin/ipfw” # Сначала назначаем пути переменным которые будем использовать
natdcmd=”/sbin/natd”
int_if=”rl0″ #внутрений интерфейс (локальная сеть)
ext_if=”xl0″ #внешний интерфейс (Интернет)

${fwcmd} -f flush

${natdcmd} -s -m -u -a 4.4.4.5

${fwcmd} add 30 divert natd ip from any to any via ${ext_if}
${fwcmd} add 40 allow icmp from any to any
${fwcmd} add 50 allow all from any to any via lo0
${fwcmd} add 60 allow all from any to any
Сохраняем в каталог /etc/rc.d/ или копируем после сохранения – файл должен находиться там чтобы обеспечить автоматический запуск правил после перезагрузке.

Также необходимо сделать этот файл исполняемым ( ! как правильно заметил Denis в комментариях !)

# chmod +x /etc/rc.d/ipfw-alan

Запускаем sh /etc/rc.d/ipfw-alan
Далее
cd /etc/rc.d/
echo “/sbin/natd -f /etc/natd.conf -n xl0″ > natd-alan
!не добавляете расширение .sh чтобы не получить ошибку /etc/rc: WARNING: Ignoring old-style startup script !
cd /etc/
echo “same_ports yes” > natd.conf && echo “use_sockets yes” >> natd.conf

Также делаем его исполняемым :

# chmod +x /etc/rc.d/natd-alan
Запускаем
sh /etc/rc.d/natd-alan
Можно проверить работает ли трансляция адресов
ping -S 192.168.1.1 nido.net.ua
PING nido.net.ua (77.120.123.227) from 192.168.30.1: 56 data bytes
64 bytes from 77.120.123.227: icmp_seq=0 ttl=57 time=13.436 ms
64 bytes from 77.120.123.227: icmp_seq=1 ttl=57 time=9.567 ms


Все. Удачи и вдохновения.

http://ifreebsd.org/freebsd/freebsd-8-настройка-шлюза/

Обновлено: 12.03.2015