САМЫЙ СЕРЬЕЗНЫЙ ГЕЙТ DemiurG (arkhangel@mail.ru) Спецвыпуск Xakep, номер #033, стр. 033-054-2 3) централизованное администрирование, что, согласись, очень важно для крупных сетей (банальный пример: для того чтобы запретить выход какому-либо хосту или группе хостов по www, админу придется прописать всего лишь одно правило на роутере, а не бегать к пользователю и что-либо менять на его машине). А ПОЧЕМУ НЕ ПРОКСИ? Да, точно, спросишь ты, почему бы вместо роутера не создать банальный прокси-сервер, который занимается (по сути) тем же самым делом (скрывает за собой локальную сеть). Возможно, если бы мы занимались этим под Винды, но сам firewall во freebsd (ipfw) работает на уровне ядра. NAT же представляет собой демон (NATD), которому мы, используя функцию divert, перенаправляем трафик, но дела это не меняет, так как вся фигня с пакетами происходит на уровне ipfw. За счет этого скорость работы и точность подсчета проходящих пакетов стремятся к максимуму, а тот же прокси-сервер (wingate на windows или squid на UNIX) будет работать как приложение (в Виндах - сервис на юнихе - демон), что отрицательно сказывается на производительности. Кроме того, очень часто при работе с wingate приходится поднимать wingate-клиент, что не есть гуд. NAT же полностью прозрачен - если тебе надо отключить какой-либо протокол или запретить доступ к какому-то порту, ты на лету изменяешь правила, и тебе даже не придется перегружать таблицы. Стоит заметить, что и NAT можно с легкостью реализовать в Винде (вариантов масса - хотя бы через winroute), но многие преимущества сразу теряются (winroute будет работать с пакетами как сервис, а не как неделимая частичка целого kernel'a). Короче, ты понял: proxy - suxxx, NAT - рулит. ОТВЕТ НА ВСЕ ОДИН - ИЩЕМ Сейчас мы создадим (точнее, попытаемся создать) примитивный роутер, через который наша локальная сеть будет выходить вовне (количество компов неважно, хоть один, хоть 500). Сразу скажу, что пишу для тех, кто более-менее разобрался в структуре и работе freebsd (для тех, кто еще не успел, существует отличная статья - "FreeBSD 4.3 step by step", опубликованная в номере 05.02 журнала Хакер: http://www.xakep.ru/magazine/xa/040/058/1.asp). Что мы имеем: машину, на которой стоит freebsd 4.7 (последний доступный stable релиз 4.8 - я еще в продаже не видел, 5-ую ветку мы не рассматриваем). На этом компе у нас две сетевые карточки: xl0 - смотрит в твою сеть (ее ip - 192.168.6.12), xl1 - бацается с твоим провом (ip 212.212.212.212 - чисто ради примера). Для начала мы перекомпилируем ядро. Для облегчения понимания представим, что за нашим роутером скрывается сеть из 2 компов с ip-адресами: 192.168.6.200 и 192.168.0.55. ОН СКАЗАЛ ПОЕХАЛИ Ядро по умолчанию находится в директории "/usr/src/sys/i386/conf/GENERIC". Создадим его копию и назовем наше новое ядрышко "xakep": cp GENERIC xakep Отредактируем полученный файл. В самый конец вставляем инструкции: options IPFIREWALL (включает ipfw в ядро); options IPFIREWALL_VERBOSE (возможность вести логи по пакетам, в первое время тебе это не понадобится, но зато потом, когда возмужаешь...); |