Openbsd
OpenBSD 上的 Altq/Pf 問題
我在 OpenBSD 上使用 pf/altq 時遇到了一些問題,但由於我是新手,我不確定是不是因為我誤解瞭如何使用錨點,或者我的系統有問題。
我正在嘗試使用 pfctl 將 altq 規則添加到錨點,但是當我嘗試時 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