Настоящата статия предполага, че базова инсталация на FreeBSD е преминала успешно
и ще разгледа необходимите настройки за конфигуриране на мрежовите възможности
на FreeBSD. Допълнително изискване е да бъде предварително инсталиран сорс кода
на ядрото (т.е. Kern-Developer тип инсталация)
Прекомпилация на ново ядро
cd /usr/src/sys/i386/conf
cp GENERIC core-kernel
# Редактирайте новата конфигурация на ядрото
vi core-kernel
# Премахнете излишните драйвери на устройства като SCSI, USB, звукови карти,
тунери и прочие.
# Добавете следното:
options IPFIREWALL
options IPFIREWALL_VERBOSE
options IPFIREWALL_FORWARD
options IPDIVERT
options IPFILTER
options IPSTEALTH
options TCPDEBUG
options BRIDGE
options DUMMYNET
options RANDOM_IP_ID
options TCP_DROP_SYNFIN
options NETGRAPH
options HZ=1000
# или 2000
options DEVICE_POLLING # само
за еднопроцесорни системи
# … и запишете промените
# Същинска компилация
config core-kernel
cd ../../compile/core-kernel
make depend && make && make install
# Ако нищо не се обърка можете да рестартирате, за да ползвате новото ядро.
Ако нещо се обърка консултирайте се с Handbook.
reboot
Системни настройки
Редактирайте /etc/sysctl.conf и добавете следното:
net.inet.ip.forwarding=1
net.inet.tcp.sendspace=131072
net.inet.tcp.recvspace=131072
net.inet.tcp.inflight_enable=1
net.inet.tcp.inflight_debug=0
net.inet.tcp.inflight_min=6144 # or more
kern.ipc.somaxconn=1024
Редактирайте /etc/rc.conf и добавете следното:
(предполагаме, че мрежовите ви устройства са съответно fxp0 и fxp1 – fxp0 е
свързан към Интернет, а fxp1 – към локалната мрежа. Съответните стойности за
IP адреси ще ви бъдат дадени от доставчика на услуги.)
# Настройки на мрежовите интерфейси:
ifconfig_fxp0="inet
11.22.33.44 netmask 255.255.255.0 up"
# ifconfig_fxp0="dhcp" – в случай,
че доставчика ви ползва DHCP за раздаване на адреси
ifconfig_fxp1="inet
192.168.0.1 netmask 255.255.255.0 up"
# Включване на възможността за рутиране на пакети:
gateway_enable="YES"
# Маршрут по подразбиране:
defaultrouter="11.22.33.1"
# Име на машината:
hostname="router.my-org.net"
# Изключване на Sendmail и ограничаването му само до локално обслужване
(НЕОБХОДИМО !!!)
sendmail_enable="NO"
# Настройки на защитната стена:
firewall_enable="YES"
firewall_script="/etc/rc.ipfw"
# Настройки на транслирането на мрежовите адреси NAT:
natd_enable="YES"
natd_interface="fxp0"
# Запишете настройките и прекратете редактирането на /etc/rc.conf
# Редактирайте файла /etc/rc.ipfw и въведете следното:
#!/bin/sh
fwcmd="/sbin/ipfw"
int_net="192.168.0.0/24"
${fwcmd} add 1000 divert natd ip from ${int_net} to not ${int_net}
# … и като за начало "отворете" firewall
${fwcmd} add 65000 allow ip from any to any
# Конфигурирането на firewall е извън обхвата на настоящото кратко изложение.
# Запишете настройките и рестартирайте.
Ако сте въвели всичко и промените са успешни проверете с ipfw list.
Би трябвало да видите нещо като:
01000 divert 8668 ip from 192.168.0.0/24 to not 192.168.0.0/24
65000 allow ip from any to any
65535 deny ip from any to any
Използвайте ps -ax | grep natd, за да проверите дали процесът
natd се е стартирал успешно. При правилно стартиране това би трябвало да ви
покаже:
110 ?? Ss 00:00.00 natd -n fxp0
Дотук вече имате настроен FreeBSD рутер с поддръжка на транслация на мрежови
адреси и след като настроите компютрите в локалната ви мрежа да използват тази
машина като Internet gateway те би трябвало да имат достъп до Интернет.
Настройки на приложения
# Инсталирайте следните пакети:
# Помагало за следене натоварването на мрежовите интерфейси в
реално време
pkg_add ftp://ftp.freebsd.org/pub/FreeBSD/ports/packages/All/trafshow-3.1_1.tgz
# Помагало за синхронизиране на системните сорсове при update
на операционната система
pkg_add ftp://ftp.freebsd.org/pub/FreeBSD/ports/packages/All/cvsup-without-gui-16.1g.tgz
# SNMP daemon
pkg_add ftp://ftp.freebsd.org/pub/FreeBSD/ports/packages/All/ucd-snmp-4.2.6.tgz
# HTTP Server
pkg_add ftp://ftp.freebsd.org/pub/FreeBSD/ports/packages/All/apache-1.3.29.tgz
# Multi Router Traffic Grapher
pkg_add ftp://ftp.freebsd.org/pub/FreeBSD/ports/packages/All/mrtg-2.9.25,1.tgz
Забележка: Съобразете
версиите на пакетите с актуалните версии на някой от сайтовете, където са разположени
mirrors !!!
# Конфигуриране на MRTG
/usr/local/etc/rc.d/snmpd.sh start
cd /usr/local/etc/mrtg/
cfgmaker
[email protected] > mrtg.cfg
# Редактирайте mrtg.cfg и променете
директивата WorkDir (в началото на файла) на
WorkDir: /usr/local/www/data/mrtg
# Запишете настройките
mkdir /usr/local/www/data/mrtg
cd /usr/local/www/data/mrtg/
indexmaker /usr/local/etc/mrtg/mrtg.cfg
> index.html
# Редактирайте crontab да изпълнява
MRTG на всеки 5 минути:
crontab -e
# … и въведете следното:
*/5 * * * * /usr/local/bin/mrtg /usr/local/etc/mrtg/mrtg.cfg
# Запишете настройките
# Стартирайте два пъти MRTG
/usr/local/bin/mrtg /usr/local/etc/mrtg/mrtg.cfg
/usr/local/bin/mrtg /usr/local/etc/mrtg/mrtg.cfg
# … и игрнорирайте предупрежденията
# Рестартирайте, за да се уверите, че системата зарежда всички
приложения и процеси без грешки, след което опитайте да отворите http://192.168.0.1/mrtg/
Това кратко ръководство изяснява основните стъпки при настройка
на NAT рутер с използване на FreeBSD. Даден е абсолютният минимум от конфигурационни
настройки.
Статията е представена с любезното съдействие на :
http://slavov.maxds.eu