Мы — долго запрягаем, быстро ездим, и сильно тормозим.
|
|||||||||||||||
www.lissyara.su
—> статьи
—> OpenBSD
|
# pfctl -nf /etc/pf.conf |
Листинг 1.2. Загрузка нового конфигурационного файла
# pfctl -f /etc/pf.conf |
Листинг 1.3. Просмотр полного состояния
# pfctl -sa |
Листинг 1.4. Просмотр правил фильтрации
# pfctl -sr |
Листинг 1.5. Просмотр правил трансляции адресов
# pfctl -sn |
Листинг 1.6. Просмотр всего дерева якорей
# pfctl -s Anchors -v |
Листинг 1.7. Просмотр правил фильтрации добавленных для определенного якоря
# pfctl -sr -a <anchor_path> |
Где <anchor_path> - полный путь до якоря (подробнее в pfctl(8)).
2. Проброс портов
2.1. Простой проброс портов
В качестве примера рассмотрим проброс порта для работы Torrent клиента. В начале конфига добавим два макроса: порт для проброса и адрес узла в локальной сети на который будет осуществляться проброс. Назовем из t_port и t_host соответственно. Далее потребуется добавить правило переадресации и разрешить данный трафик на внешнем интерфейсе, т.к. весь входящий трафик по-умолчанию блокируется. В итоге получим конфигурационный файл следующего содержания.
Листинг 2.1.1. Усовершенствованый pf.conf(5) с пробросом портов
|
2.2. Проброс с изменением порта назначения
В качестве примера рассмотрим случай, когда необходимо пробросить порт 8082 шлюза на 80 порт узла 192.168.0.3. Как и в предыдущем примере введем несколько макросов:
h_port_in - порт шлюза, на который придет пакет из внешней сети (8082);
h_port_out - порт, на который осуществляется проброс (80);
h_host - узел локальной сети, на который будет переадресован трафик (192.168.0.3).
После создания правила проброса потребуется создать правило разрешающее данный трафик на внешнем интерфейсе шлюза. Beastie, как всегда, скрывается в мелочах: пакеты сначала проходят преобразования и только потом список фильтров. Именно по этому следует разрешать трафик не на порт h_port_in, а на h_port_out! С учетом всего вышесказанного, получаем следующий конфигурационный файл.
Листинг 2.2.1. Усовершенствованный pf.conf(5) с пробросом портов и изменением порта назначения
|
3. Активный режим FTP через NAT
Задачу с обеспечением работы активного FTP через транслятор адресов разработчики OpenBSD решили просто - весь FTP-трафик переадресовывается на FTP proxy (ftp-proxy(8)), который добавляет необходимые правила для прохождения трафика через шлюз[2].
Сначала необходимо включить ftp-proxy(8) и разрешить его запуск при запуске системы.
Листинг 3.1. Разрешение запуска ftp-proxy(8)
# echo ftpproxy_flags="" >> /etc/rc.conf.local |
Листинг 3.2. Запуск ftp-proxy
# ftp-proxy |
ftp-proxy прослушивает порт 127.0.0.1:8021, на него и необходимо пересылать FTP-трафик. Так же необходимо добавить якоря (точки автоматического добавления правил). В итоге получаем вот такой конфигурационный файл.
Листинг 3.3. Усовершенствованный pf.conf(5) с поддержкой активного режима FTP
|
4. Ограничение максимального размера сегмента TCP (MSS)
Примечание: MSS для TCP имеет такой же смысл, как и параметр MTU для интерфейса - максимальное количество данных, которое можно добавить в TCP пакет. При неправильной конфигурации, слишком большие пакеты могут быть просто отброшены на одном из маршрутизаторов, в худшем случае без какого либо ICMP-уведомления. MSS рассчитывается исходя из величины MTU и размеров заголовков. Для PPPoE соединения MTU меньше стандартного (Ethernet). Но узлы внутренней (и внешней тоже) сети не подозревают, что пакеты будут передаваться через соединения с меньшим MTU, и используют стандартный максимальный размер сегмента. Последствия вполне логичны - найдется такой случай, что большие пакеты просто не будут проходить по маршруту. Выходов из этой ситуации может быть несколько, но один из оптимальных - это уменьшать MSS для TCP-соединений проходящих через PPPoE-интерфейс.
Установка MSS задается одной строкой "match on <interface> scrub (max-mss 1440)", при добавлении которой получим конфигурационный файл следующего содержания.
Листинг 4.1. Усовершенствованный pf.conf(5) с ограничением MSS
|
4. Список литературы
1. Разбираем простой конфиг PF // http://www.lissyara.su/articles/openbsd/pf/pf/
2. PF: Issues with FTP // http://www.openbsd.org/faq/pf/ftp.html
размещено: 2010-03-01,
последнее обновление: 2010-03-14,
автор: BlackCat
abigor, 2010-03-04 в 18:03:54
Исправьте опечатку с интерфейсами замыкания на себя
Linxpro, 2010-03-11 в 14:26:22
Я бы еще добавил для надежности:
scrub in all
block in quick from any os nmap to any
block in quick proto tcp from any to any flags /S
block in quick proto tcp from any to any flags /SFRA
block in quick proto tcp from any to any flags /SFRAU
block in quick proto tcp from any to any flags A/A
block in quick proto tcp from any to any flags F/SFRA
block in quick proto tcp from any to any flags U/SFRAU
block in quick proto tcp from any to any flags SF/SF
block in quick proto tcp from any to any flags SF/SFRA
block in quick proto tcp from any to any flags SR/SR
block in quick proto tcp from any to any flags FUP/FUP
block in quick proto tcp from any to any flags FUP/SFRAUPEW
block in quick proto tcp from any to any flags SFRAU/SFRAU
block in quick proto tcp from any to any flags SFRAUP/SFRAUP
block in quick proto tcp from any to any flags FPU/SFRAUP
block in quick proto tcp from any to any flags F/SFRA
block in quick proto tcp from any to any flags P/P
BlackCat, 2010-03-14 в 4:46:44
2 abigor: lo - это не опечатка, это группа интерфейсов.
2 Linxpro: статья по больше части посвящена вопросам настройки взаимодействия сетей, а не тонкой настройке pf.
ОЛОЛО, 2010-12-16 в 5:04:12
2 Linxpro
Я бы добавил в начало конфига
scrub in all
block all
и не засорял бы конфиг всякой хуитой.
Этот информационный блок появился по той простой причине,
что многие считают нормальным, брать чужую информацию не уведомляя автора
(что не так страшно), и не оставляя линк на оригинал и автора — что более существенно.
Я не против распространения информации — только за. Только условие простое — извольте
подписывать автора, и оставлять линк на оригинальную страницу в виде прямой, активной, нескриптовой,
незакрытой от индексирования, и не запрещенной для следования роботов ссылки.
Если соизволите поставить автора в известность — то вообще почёт вам и уважение.
© lissyara 2006-10-24 08:47 MSK
Комментарии пользователей [4 шт.]