====== IPFW ====== ===== Теория ===== Краткое резюме из статьи((см. ссылку ниже)) Александра Сысоева о работе сетевого стека. ==== Стек ==== * Существует два прохода трафика: IN и OUT. * Система, исходя из правил маршрутизации, помечает, какому сетевому итерфейсу соответствует трафик. Таким образом, логически на каждом сетевом интерфейсе мы имеем два направления трафика. * При поступлении в каждый из проходов трафика он попадает на правила фильтрации firewall-а, согласно которым и обрабатывается. * Правила firewall-а могут выводить трафик из прохода, запускать в проход во второй раз (при смене информации в пакете), а также убивать его. * При выходе трафика из прохода, он либо отправляется на сетевой интерфейс, либо обрабатывается и направляется в другой проход. ==== NAT ==== * NAT разделяет трафик на входящий и исходящий: из прохода OUT трафик маскируется, из IN - демаскируется. * NAT позволяет запускать несколько своих экземпляров с собственными таблицами. * После применения NAT-фильтрации выйти из текущего прохода firewall-а net.inet.ip.fw.one_pass=1 * После применения NAT-фильтрации снова попасть в проход для прохождения СЛЕДУЮЩИХ правил net.inet.ip.fw.one_pass=0 ===== Включение IPFW ===== В /etc/rc.conf: firewall_enable="YES" Там же указываются дополнительные опции: * NAT: firewall_nat_enable="YES" * логирование: firewall_logging="YES" * режим фильтрации: firewall_type="тип(open, closed,...)" в этом случае применяются стандартные настройки firewall-а указанного типа, * скрипт обработки: firewall_script="путь к скрипту" вместо стандартных правил В /etc/sysctl.conf: * метод прохождения: net.inet.ip.fw.one_pass=1 * уровень логирования: net.inet.ip.fw.verbose_limit=5 ===== Пример ===== ===== Ссылки ===== * [[http://nuclight.livejournal.com/124348.html|Вадим Гончаров]] * [[http://alexandr.sysoev.ru/node/122|Александр Сысоев]] * [[http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/firewalls-ipfw.html|Руководство пользователя]] * [[http://ipfw.ru/ipfw.html| man ipfw]]