>[оверквотинг удален]
> В rc.conf опции запуска dhcpd следующее:
> ===============================
> dhcpd_enable="YES"
> dhcpd_ifaces="re0"
> dhcpd_flags="-s 192.168.1.1"
> dhcpd_conf="/usr/local/etc/dhcpd.conf"
> dhcpd_withumask="022"
> ===============================
> Опцию "-s 192.168.1.1" добавил уже в конце рабдня, и поможет она или
> нет пока не проверял, перезапустил демона и ушел домой.Да.., блин.
Смотрю и не перестаю удивляться.
Что у вас за "отражатель" такой?
В ifconfig всего один интерфейс re0, но в то же время в dhcpd.conf указываете
option routers 192.168.1.1 это как так? Где второй интерфейс, как трафик пойдёт?
DHCP настраиваете для 10 хостов? Зачем? Шишек набить? Так уже..
Статику пропишите. Но если надо, так надо..
То что вы написали - это хрень.
Читаем:
Разрешить входящий трафик на внутреннем интерфейсе от любых хостов с порта 67 к любым хостам на порт 68
> pass in quick on $int_if proto {udp,tcp} from any port 67 to any port 68
Разрешить исходящий трафик на внутреннем интерфейсе от любых хостов с порта 68 к любым хостам на порт 67
> pass out quick on $int_if proto {udp,tcp} from any port 68 to any port 67
ещё раз читаем и перечитываем, убеждаемся что хрень.
Лезем в /etc/services
bootps 67/tcp dhcps #Bootstrap Protocol Server
bootps 67/udp dhcps #Bootstrap Protocol Server
bootpc 68/tcp dhcpc #Bootstrap Protocol Client
bootpc 68/udp dhcpc #Bootstrap Protocol Client
Клиент делает запрос на получение IP-адреса, трафик от него на интерфейсе re0 будет входящий.
Сервер отвечает клиенту, трафик от него на интерфейсе re0 будет исходящий.
Вы с этими in / out заблудились.
Если сомневаетесь, проверяйте так:
# Разрешить входящий и исходящий трафик на внутреннем интерфейсе от любых хостов с порта 67 или 68 к любым хостам с портами 67 или 68
pass $int_if proto { udp tcp } from any port { 67 68 } to any port { 67 68 }
Хотя смысл всего этого.. непонятен.
Ну получил клиент IP-адрес, а дальше что? Ну что он с ним будет делать?
Надо правила выпускающие и принимающие для этих клиентов, получивших свои IP-адреса прописывать дальше.
А у вас интерфейс всего один!
Опять же, прописывать отдельные правила для получения IP-адресов по dhcp ну зачем?
А это зачем?
> set fingerprints "/etc/pf/pf.os"
ОСь клиентов определяете и Windows будете блокировать? ))
То что нужно - нет, а всякой фигни натолкали.
Вот минимальный конфиг, простой как 3 рубля.
# внутренний входящий интерфейс
int_if="re0"
# внешний исходящий интерфейс
ext_if="???"
# петлевой интерфейс
lo0="127.0.0.1"
# локальная сеть
table <network> { 192.168.1.0/24 }
# политика блокирования
set block-policy drop
# не фильтровать трафик на кольцевом интерфейсе
set skip on lo0
# нормализовать входящий трафик
scrub in all
# блокируем всё
block all
# пропустить весь трафик в локальную сеть и из локальной сети
# эти правила будут создавать записи в таблице состояний, благодаря
# дефолтной опции "keep state", которая будет применена автоматически
pass in on $int_if from <network> to any
# выпустить tcp, udp и icmp трафик на внешнем (Интернет) интерфейсе
# tcp соединения буду модулироваться,
# udp/icmp будут отслеживаться по таблице состояний
pass out on $ext_if proto { tcp udp icmp } all modulate state