Так повелось, що невеликій компанії (навіть двом) необхідно було налагодити роботу інтернет шлюза, який би виконував роль міжмережевого файрвола та надавав доступ локальному офісу із 10-ти десктопів до інтернету.
Для цього була обрана операційна система FreeBSD (на момент написання статті версії 6,3-RELEASE)
Параметри заліза - 2xPIII-933 на старенькій материнці ServerWorks із 1Гігом оперативки на борту та рейд-масивом 5 рівня на базі п'яти SCSI-320 Жорстких дисків.
Для додаткової інформації приводжу список програм, запущених на цьому сервері
- apache 2.x - локальний вебсервер для бухгалтерської програми
- mysql 4.x - локальний сервер бази даних
- named (zone slave) - кешуючий сервер імен для локального домену та relay для інтернет бровзінгу
- samba 3.0.x PDC - контролер домену із мережевим файлсервером
- ipfw ~12 правил
- ftpd сервер (для прийому ~1-2Gb файлів щодня)
- sendmail - просто пошта для ~10-20 користувачів
Тобто достатньо незавантажена роботою машинка, що не викликає нарікань по жодному з пунктів вищеприведеного списка.
Налагодження NAT проводив цілковито згідно handbook(пункти 1 і 2) - там все дуже зрозуміло і просто написано.
- в /etc/rc.conf вписуєм стрічки
- natd_enable="YES"
- natd_interface="fxp1" #мережева карта, що дивиться реальним IP адресом в бік провайдера інтернет
- natd_flags="-l -s -u -dynamic" #для тих, кому лінь лізти в мануал відповідно
- -l #вмикаєм логування в файл /var/log/alias.log
- -s #використовувати сокети для надійної роботи FTP та різноманітних IRC-типу з'єднань(месенджери)
- -u #вмикаєм роботу лише для мереж із статусом unregistered (RFC1918) (тобто локальної мережі)
- -dynamic #враховуючи те, що зовнішня адреса віддається по DHCP дана опція вказує демону natd перевіряти можливу зміну адреси і відпрацьовувати свої дії згідно цього.
- firewall_enable="YES"
- firewall_type="open" #даний вибір робіть самі.
- gateway_enable="YES"
- рестартуєм сервер і отримуєм робочу реалізацію NAT сервера. За одним лише ви'нятком - він в мене дико гальмував інтернет, із постійним ефектом сильнокешуючого PROXY сервера.
- (це вже від мене додаток) Для оптимізації роботи було прочитано багато документації та частину вебсайту bsd.opennet.ru, на основі чого для своєї конфігурації я додав ще кілька параметрів оптимізації, а саме
- в файл /etc/sysctl.conf
- net.inet.ip.fastforwarding=1
- net.inet.ip.portrange.randomized=0
- net.inet.tcp.nolocaltimewait=1
- kern.ipc.nmbclusters=65536
- kern.ipc.maxsockets=204800
- kern.maxfiles=204800
- kern.maxfilesperproc=200000
- в файл /boot/loader.conf
- net.inet.tcp.syncache.hashsize=1024
- net.inet.tcp.syncache.bucketlimit=128
- net.inet.tcp.hostcache.bucketlimit=128
- net.inet.tcp.tcbhashsize=4096
- kern.maxusers=512
- рестарт.
- в файл /etc/sysctl.conf
Після цього все забігало без особливих проблем.
Додатковий опис кожного з цих параметрів читайте на сайті opennet.ru.