pf anchor

Якорь — это место куда подгружается поднабор правил и одновременно якорь это имя поднабора.

Поднаборы правил можно объявлять при помощи «якорей», — anchor Существует четыре типа anchor’ов:

  • anchor name — выполняются все правила фильтра из набора name;
  • binat-anchor name — выполняются все правила binat трансляции из набора name;
  • nat-anchor name — выполняются все правила nat трансляции из набора name;
  • rdr-anchor name — выполняются все правила перенаправления из набора name;

Поднаборы могут быть вложенными и вызывать друг друга по цепочке. Правила anchor обрабатываются в том месте, где они вызываются. Например, правило anchor в основном конфигурационном файле создаёт поднабор, родителем которого являентся главный набор правил, другие поднаборы загружаемые в данном поднаборе при помощи директивы load anchor являются его потомками.

Пример:

rdr-anchor merdr #объявляем тип якоря
load anchor merdr from "/etc/pf.rdr" #фаил откуда загружаются правил

Все макросы и объявления переменных действуют в рамках одного конфига, что бы переменные работали в файле якоря необходимо их заново определить.

Так же якоря позволяют добавлять правила динамически:

# echo 'rdr on tun0 proto tcp from any to (tun0) port 80 \
-> 192.168.0.2 port 80' | pfctl -a merdr:1 -f "" -

Что бы добавить еще правило в якорь merdr нужно указать новый набор

# pfctl -a merdr:2

 

Поскольку правила хранятся не в основном списке что бы посмотреть их нужно указать имя якоря и набор

# pfctl -a merdr:1 -s nat
# pfctl -a merdr:2 -s nat

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *