>для этого в PF пишу редирект:
>
>rdr on $ext_if inet proto tcp from any to ($ext_if) port 80 -> 10.0.0.77 port 80
>
>но при попытке открыть сайт на 10.0.0.77, открывается страница сообщения Апача,
>поднятого на Фришке, то есть никто и никуда и никого не
>перекидывает!.. Порты лучше разнести. У меня так под опёнком работает (порты не перекрываются):
# Внешний и внутренний интерфейсы.
#
ext_if = "pppoe0"
int_if = "rl0"
# TCP сервисы, обслуживаемые маршрутизатором.
#
tcp_svc = "22 80 443"
# TCP/UDP сервисы, обслуживаемые внутренним сервером.
#
athlon_tcp_rdr = "8000 55555"
athlon_udp_rdr = "8000 55555"
athlon = "192.168.0.2"
# Выполнить нормализацию всех пакетов.
#
scrub in
scrub out on pppoe0 max-mss 1440
# altq
#
# Транслировать внутренние адреса в (основной) адрес внешнего интерфейса.
#
nat on $ext_if from !($ext_if) -> ($ext_if:0)
# Подключить nat/rdr правила, создаваемые ftp-proxy (для OpenBSD 3.9 и новее).
#
nat-anchor "ftp-proxy/*"
rdr-anchor "ftp-proxy/*"
# Пропустить FTP через transparent proxy.
#
rdr on $int_if proto tcp to !(self) port ftp -> 127.0.0.1 port 8021
# Переадресовать TCP/UDP сервисы, обслуживаемые внутренним сервером.
#
rdr on $ext_if proto tcp to ($ext_if) port { $athlon_tcp_rdr } -> $athlon
rdr on $ext_if proto udp to ($ext_if) port { $athlon_udp_rdr } -> $athlon
# Защита от IP spoofing.
#
pass quick on { lo $int_if } no state
antispoof quick for { lo $int_if }
# Подключить правила, создаваемые ftp-proxy (для OpenBSD 3.9 и новее).
#
anchor "ftp-proxy/*"
# По умолчанию блокировать все на внешнем интерфейсе. Для TCP соединений
# возвращать RST.
#
block return log on $ext_if
# Разрешить исходящие ICMP ping пакеты, любой UDP, GRE трафик и TCP соединения.
#
pass out on $ext_if inet proto icmp icmp-type echoreq code 0
pass out on $ext_if inet proto { udp gre tcp }
# Разрешить входящие ICMP ping пакеты, обслуживаемые UDP и TCP сервисы.
#
pass in on $ext_if inet proto icmp to ($ext_if) icmp-type echoreq code 0
pass in on $ext_if inet proto tcp to ($ext_if) port { $tcp_svc }
# Разрешить входящие TCP/UDP пакеты, обслуживаемые внутренним сервером.
#
pass in on $ext_if inet proto udp to $athlon port { $athlon_udp_rdr }
pass in on $ext_if inet proto tcp to $athlon port { $athlon_tcp_rdr }
# Разрешить входящие TCP соединения для FTP proxy.
#
pass in on $ext_if inet proto tcp to port > 49151 user proxy
keep state с версии OpenBSD 4.1 подразумевается, по умолчанию.