Старая статья. Моя самая первая )
компиляция ядра
# Идем в каталог с конфигурационными файлами ядра Если такого каталога нет, это значит,
# что вы не установили 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