私はパケット キューイングのロープを学習しようとしているので、既知の Tor 出口ノードからポート 80 に着信するトラフィックに制限を設定しようと考えました。これは FreeBSD 9 上にあるため、OpenBSD 固有のソリューションは適用されない可能性があります (構文/その他)。
# Snipped to mainly the relevant parts
table <torlist> persist file "/var/db/torlist"
# ...
set block-policy return
scrub in all
scrub out on $ext_if all
# What I *want* to do is create a cue for known tor exit nodes
# no single one IP should be able to do more than 56k/sec
# but the combined bandwidth of all tor visitors should not
# exceed 512k/sec, basically limiting Tor visitors to something
# like dialup
altq on $ext_if cbq bandwidth 512k queue { qin-tor }
queue qin-tor bandwidth 56Kb cbq ( default rio )
# ...
block in log all
antispoof for { $ext_if, $tun_if }
antispoof quick for $int_if inet
### inbound web rules
# Main Jail ($IP4_PUB3 is my webserver IP)
pass in on $ext_if inet proto tcp from <torlist> to $IP4_PUB3 port www synproxy state queue qin-tor
pass in on $ext_if inet proto tcp to $IP4_PUB3 port www synproxy state
問題は、torlist に固有の altq、queue、および pass ラインが有効になっている場合、すべての接続が非常に遅くなることです。自分の IP を pfctl -t torlist -T test に対してテストしたところ、「0/1 アドレス一致」が返されました。リストから 1 つをテストすると、「1/1 アドレス一致」になります。
したがって、私が間違っていることについてはあまり教育を受けていません。それに沿ったパスは、その表にリストされているIPにのみ適用されると想定していました。そのため、自分のIPは検証されませんそのルールに基づいて、次のルールに渡します。
それを機能させることは緊急ではありませんが、私が失敗している場所を理解するための助けをいただければ幸いです。