>[оверквотинг удален]
> $tcp_services
> pass in on $ext_if inet proto tcp from <remote> to 192.168.200.7 port
> 443 synproxy state
> pass out quick on $ext_if proto udp from $internal_net to any port
> 123 keep state
> pass out quick on $ext_if from <priv> to any
> pass out on $ext_if proto {tcp, udp} from $internal_net to any port
> $allowed_ports
> А у вас какая версия фряхи? Видел посты с похожей на мою
> проблемой при апгрейде с 8-ки на 9-ку У меня 9. Дело в том, что в 9-ке не обовсех ошибках сообщает парсер pfctl. На эти грабли в свое время, как только вышла 9-ка наступил. Мелочная ошибка в синтаксисе, pfctl -nf /etc/pf.conf ошибки не выдает, правила загружаются, но инет не работает. Я даже PR запостил по этому поводу.
Вот если упорядочить и упростить ваши правила, то получится что-то типа этого.
ext_if="xl0"
int_if="fxp0"
internal_net=$int_if:network
tcp_services="{ 13671 }"
allowed_ports="{5190, 2041, 2042, 2043, 2044}"
web_ports="{80, 8080, 443}"
icmp_types="echoreq"
table <remote> {IP}
table <priv> {IP, IP, IP}
set block-policy drop
set loginterface $ext_if
set state-policy if-bound
set skip on ng
nat on $ext_if from $internal_net to any -> ($ext_if)
nat-anchor "ftp-proxy/*"
rdr-anchor "ftp-proxy/*"
rdr on $ext_if proto tcp from <remote> to $ext_if port 81 -> 192.168.200.1
rdr on $ext_if proto tcp from <remote> to $ext_if port 443 -> 192.168.200.7
rdr on $int_if inet proto tcp from ($int_if:network) to !($int_if) port ftp -> 127.0.0.1 port 8021
rdr on $int_if inet proto tcp from ($int_if:network) to !($int_if) port 80 -> 127.0.0.1 port 3127
## antispoofing
antispoof quick for { lo $int_if }
## At first block all
block in
block out
## Allow rules
## ext_if
pass in on $ext_if inet proto tcp from any to ($ext_if) port $tcp_services
pass in quick on $ext_if inet proto tcp from <remote> to 192.168.200.1 port 81
pass in quick on $ext_if inet proto tcp from <remote> to 192.168.200.7 port 443
pass out quick on $ext_if inet from $ext_if to any
## int_if
anchor "ftp-proxy/*"
pass in log quick on $int_if inet proto tcp from ($int_if:network) to 127.0.0.1 port 3127
pass in quick on $int_if from ($int_if:network) to any
pass out quick on $int_if from any to ($int_if:network)
Непонятно это.
pass out quick on $ext_if proto udp from $internal_net to any port 123 keep state
Так не получится, т.к. после ната на внешнем интерфейсе локальных адресов уже нет. Выход таков. Тегировать пакеты на внутреннем ифейсе а потом выпускать их на внешнем. Как это делать читайте в FAQe на openbsd.org
pass out quick on $ext_if from <priv> to any
pass out on $ext_if proto {tcp, udp} from $internal_net to any port $allowed_ports