Прочитал много документации по ipf, но не уловил некоторых деталей.
1. Когда пакеты из внутренней сети для внешней сети получает один из внутренних сетевых интерфейсов, то согласно работе шлюза, он передает этот пакет на внешний сетевой интерфейс, где применяются правила НАТ и пакет выходит во внешнюю сеть. Вопрос: фактически, нет необходимости расписывать правила IN для внешнего интерфейса для пакетов из внутренней сети? Вот пример правил:
Код: Выделить всё
# 1
pass in quick on lo0 all
# 2
pass out quick on lo0 all
# 3
pass out quick on $if_int all # разрешены любые исходящие пакеты из внутренней LAN, например, клиенты лок. сети могут обратиться к прокси серверу SQUID
# 4
pass in quick on $if_int all # разрешены любые входящие пакеты на внутреннюю LAN
# Исходящая секция для самого шлюза (используется, когда применяются правила NAT для пакетов из внутренней сети)
# if_ext - внешний сетевой интерфейс
# ip_ext - внешний IP адрес
block out quick on $if_ext from $ip_ext to any head 20
pass out quick on $if_ext proto tcp/udp from $ip_ext to any port = 53 keep state group 20 # DNS
# 5
pass out quick on $if_ext proto tcp from $ip_ext to any port = 80 flags S keep state group 20 # HTTP
block out log quick on $if_ext all group 20
# Исходящая секция для потока от внутренней сети на внешнюю сетевую карту
# $local_net - внутренняя сеть A.B.C.D/24
block out quick on $if_ext from $local_net to any head 30
pass out quick on $if_ext proto tcp/udp from $local_net to any port = 53 keep state group 30
block out log quick on $if_ext all group 30
# Входящая секция для внешнего сетевого интерфейса #
block in quick on $if_ext from any to any head 50
block in log quick on $if_ext all group 50 # все запретим, где нам нужно, доступ откроют keep state правила.
Правильно я понимаю: внутренний сетевой интерфейс получил пакет HTTP для внешней сети, это дает правило 3 и 4. Поскольку прокси-сервер установлен на прослушку внутреннего сетевого интерфейса, то он получил запрос от внутренней сети без проблем. А дальше передал его внешнему сетевому интерфейсу, где NAT преобразовал внутренний IP адрес отправителя во внешний IP. Уйти пакету во внешнюю сеть позволяет правило 5.
В ядре: options IPFILTER_DEFAULT_BLOCK
Спасибо всем за ответ.