Старая статья. Моя самая первая )

компиляция ядра

# Идем в каталог с конфигурационными файлами ядра Если такого каталога нет, это значит,
# что вы не установили kernel-development при инсталяции FreeBSD. Или проще - у вас нет исходных текстов ядра.
# Для того, чтобы они появились на вашем жестком диске нужно установить пакет kernel-devel.
# Обычно он находится на первом инсталяционном диске.

cd /usr/src/sys/i386/conf/
cp GENERIC GENERIC.old
vi GENERIC

# Файл GENERIC - это та конфигурация ядра, которая была сделанная при инсталяции системы
# Для того, чтобы включить в ядро поддержку ipfw и natd надо добавить в GENERIC вот такие строки:

options IPFIREWALL
options IPFIREWALL_VERBOSE
options IPFIREWALL_VERBOSE_LIMIT=10
options IPDIVERT
options IPFIREWALL_DEFAULT_TO_ACCEPT
options DUMMYNET

# Здесь IPFIREWALL означает включение программы файервола ipfw,
# IPFIREWALL_VERBOSE означает ведение логов ipfw,
# IPFIREWALL_VERBOSE_LIMIT=10 ограничичивает максимальное число записей, которые могут быть сделаны в секунду.
# Учитывайте то, что если вы поставите большое число для IPFIREWALL_VERBOSE_LIMIT, то ваш винчестер может
# засориться от быстрорастущих логов.
# IPDIVERT означает включение демона маскарадинга natd,
# IPFIREWALL_DEFAULT_TO_ACCEPT означает, что ваш файервол по дефолту будет открытым.
# Если вы не указываете этой опции, то при старте файервола любой доступ из сети к компьютеру будет закрыт.
# DUMMYNET означает, что вы сможете контролировать скорость передачи через ваш компьютер.
# Теперь компилируем ядро

config GENERIC
cd ../compile/GENERIC/
make depend
make
make install

# Если на каком-то шаге компиляции команда make depend или make выйдет, сказав вам об ошибке, то не расстраивайтесь,
# а просто попробуйте перезапустить команду заново при этом приблизительно запомнив о чем говорилось в тексте ошибки.
# Если после этого опять возникнет ошибка, то проверьте похожа ли она на предыдущую. В случае несовпадения смело
# повторяйте последнюю команду.

настройка сервиса маршрутизации и натирования адресов

# Скажем ядру, чтобы при старте он понимал, что этот компьютер - роутер.

cd /etc/
vi rc.conf

# Для этого надо отредактировать файл rc.conf в соответствии с приведенным ниже строками:

gateway_enable="YES"
firewall_enable="YES"
firewall_quiet="YES"
firewall_type="OPEN"
natd_enable="YES"
natd_interface="rl0"
natd_flags=""
mysql_enable="YES"

# Я сразу включил базы данные, т.к. они нам понадобятся в дальнейшем.
# К примеру, сетевая карта, которая подключена к интернету имеет название rl0 и ее ip-адрес в интернете 192.168.15.99,
# а сетевая карта, которая подключена к локальной имеет название rl1 и ее ip-адрес в локальной сети 10.0.0.1.
# Следующий шаг - это настройка самих ipfw и natd.

cd /etc
vi natd.conf

# Вставьте в файл natd.conf следующие строки:

alias_address 192.168.15.99
target_address 10.10.10.1
log yes
log_denied yes
use_sockets yes
same_ports yes
unregistered_only yes

# Если хотите прочитать что значат каждая из этих строк подробнее, то смотрите "man natd"
# Теперь пропишем ipfw и natd в автозагрузку.

cd /usr/local/etc/rc.d/
vi ipfw_natd.sh

# Вставьте в файл ipfw_natd.sh эти строки:

#!/bin/sh
natd -f /etc/natd.conf
ipfw add 500 divert natd all from any to any via rl0
ipfw add 501 pass all from any to any

# Это означает, что мы включаем маскарадинг с помощью natd через ipfw, разрешаем всем соединяться с сервером,
# как если бы он был без файервола и разрешаем всем из локльной сети ходить в интернет.
# Сделаем скрипт в автозагрузке выполняемым

chmod +x ipfw_natd.sh

reboot