Назад | Перейти на главную страницу

Проблемы с Altq / Pf на OpenBSD

У меня проблемы с pf / altq в OpenBSD, но поскольку я новичок в этом, я не уверен, что это потому, что я не понимаю, как использовать якоря, или что-то не так с моей системой.

Я пытаюсь добавить правила altq к привязке с помощью pfctl, но pfctl продолжает говорить, что устройство занято, когда я пытаюсь. Если я использую те же правила в pf.conf, хотя он работает нормально:

root@openbsd:~# uname -a
OpenBSD openbsd.my.domain 5.2 GENERIC.MP#368 amd64

# ---- Show current pf.conf rules -----

root@openbsd:~# cat /etc/pf.conf                                                                                    
pass out on re0
pass in on re0
anchor tshaping

# ---- Try to load altq rules into the anchor -----

root@openbsd:~# echo -n "altq on re0 cbq bandwidth 10Mb queue { myqueue }\nqueue myqueue bandwidth 1Mb cbq(default)\n" | pfctl -a tshaping -f -
pfctl: DIOCADDALTQ: Device busy

# ---- Change the pf.conf to include the altq rules without an anchor -----

root@openbsd:~# cat /etc/pf.conf                                                                                                                
pass out on re0
pass in on re0
altq on re0 cbq bandwidth 10Mb queue { myqueue }
  queue myqueue bandwidth 1Mb cbq(default)

# ---- Load the new pf.conf rules -----

root@openbsd:~# pfctl -f /etc/pf.conf                           

# ---- The new rules load fine from the config file with no anchor -----

root@openbsd:~# pfctl -sa | grep queue
queue root_re0 on re0 bandwidth 10Mb priority 0 cbq( wrr root ) {myqueue}
queue  myqueue on re0 bandwidth 1Mb cbq( default )

В соответствии с http://lists.freebsd.org/pipermail/freebsd-pf/2008-October/004826.html вы не можете загружать очереди в якоря, как я пытаюсь это сделать.

Вам необходимо загрузить правила очереди в основной файл pf.conf и загрузить только те правила фильтрации, которые назначают трафик очередям в привязку.

У вас может быть более одного файла pf.conf. Что-то вроде этого:

/etc/pf.conf
/<whatever path>/tshaping.conf
/<whatever path>/other_rules.conf

и просто запустите:

pfctl -f /etc/pf.conf
pfctl -f /<whatever path>/tshaping.conf
pfctl -f /<whatever path>/other_rules.conf

Однако вы можете манипулировать Столы "на лету" с помощью pfctl (8).

Итак, вы можете сделать это: echo -n "altq on re0 cbq bandwidth 10Mb queue { myqueue }\nqueue myqueue bandwidth 1Mb cbq(default)\n" > /whatever path>/tshaping.conf; pfctl -f /<whatever path>/tshaping.conf