Посоветуйте новичку, пожалуйста. Пытаюсь настроить шлюз в инет на базе OpenBSD 4.2 с помощью pf. Но, ничего не работает... Пингуется вся внутренняя сеть и внешний ip, шлюз для внешнего ip уже нет (тот, что провайдер дал). Работает, только если грузить только nat-правила :-). Что я делаю неправильно?Вот мой pf.conf:
# MACROS -------------------------------------------------------------
ext_if = "em0" # Внешний интерфейс - смотрит в интернет
int_if = "msk0" # Внутренний интерфейс - смотрит в локальную сеть
extnet = $ext_if:network # Внешняя сеть
localnet = $int_if:network # Внутренняя сеть
# На какие порты могут ходить пользователи из внутренней сети
user_out_tcp = "{ domain, http, https, ftp, smtp, pop3, 8000, 8080 }"
user_out_udp = "{ domain }"
icmp_types = "echoreq"
# Порты MailRu-Agent
mra_ports = "{ 443, 1863, 2041, 2042, 5190 }"
# Порты IRQ
irq_ports = "{ 6666, 6667, 6668, 6669 }"
# TABLES -------------------------------------------------------------
# Таблица пользователей, все, кроме админов
table <Users> { 192.168.0.0/24, \
!192.168.0.1, \
!192.168.0.9, \
!192.168.0.12, \
!192.168.0.14 }
# Таблица пользователей, только админы
table <Admins> { 192.168.0.1, 192.168.0.9, 192.168.0.12, 192.168.0.14 }
# Таблица адресов серверов MailRu-Agent и ICQ
table <MRA> { 194.67.23.0/24 }
table <ICQ> { 205.188.0.0/16, \
64.12.0.0/16, \
194.67.57.26, \
64.236.47.13, \
81.19.66.52 }
# OPTIONS -------------------------------------------------------------
# Просмотр статистики на интерфейсе ext_if, (pfctl -s info)
# отключение - вместо интерфейса - none
set loginterface $ext_if
# Оптимизация
set optimization normal
# Блокировка пакетов drop-молча игнорировать,return-Connection refused
set block-policy return
# Интерфейсы, на которых не должно быть фильтрации (localhost)
set skip on { lo0 }
# Выводить информацию только на серьезные ошибки
set debug urgent
# NORMALISATIONS -------------------------------------------------------
#scrub in on $ext_if all fragment reassemble
scrub all
# QUEUEING ------------------------------------------------------------
# TRANSLATIONS ---------------------------------------------------------
# NAT
nat on $ext_if from $localnet to any -> ($ext_if)
# FILTERING -------------------------------------------------------------
# Сначала запрет на все
block inet6 all
block all
# Разрешаем ping
pass in inet proto icmp all icmp-type $icmp_types keep state
# Разрешаем Traceroute
pass out on $ext_if inet proto udp from any to any \
port 33433 >< 33626 keep state
# Разрешаем ходить пользователям только по определенным портам
pass out on $ext_if inet proto tcp from <Users> to any \
port $user_out_tcp keep state
pass out on $ext_if inet proto udp from <Users> to any \
port $user_out_udp keep state
# Блокируем MailRu-Agent для пользователей
block out on $ext_if from <Users> to <MRA>
block out on $ext_if inet proto tcp from <Users> to any port $mra_ports
# Блокируем IRQ для пользователей
block out on $ext_if inet proto tcp from <Users> to any port $irq_ports
# Блокируем ICQ для пользователей
block out on $ext_if from <Users> to <ICQ>
# Разрешаем все для админов
pass out on $ext_if from <Admins> to any keep state
antispoof for $ext_if inet
# Конец pf.conf
Еще вопрос. На этом же шлюзе планируется поднять dhcpd, слушающий на внутренней карте. Что мне надо будет прописать в pf.conf?
Спасибо огромное!