web-dev-qa-db-ja.com

iptablesハンドルによるtcポリシングレートパケット?

任意のIPからのダウンロード速度を800kbitに制限したい(これは機能します)そして、マークされたパケットのダウンロード速度を400kbitに制限したいと思います。

エラーは発生しませんが、番号30でマークされたパケットのダウンロード速度を制限していません。iptables-save-cで、パケットが正しくマークされていることを確認しました。したがって、エラーがない場合でも、ピックアップハンドル30へのフィルター構文が間違っていると思います。

/sbin/tc qdisc add dev $DEV handle ffff: ingress

/sbin/tc filter add dev $DEV parent ffff: prio 40 protocol ip handle 30 fw police rate 400kbit burst 10k drop flowid :1

#slightly different order of parameters, also doesn't work
/sbin/tc filter add dev $DEV parent ffff: protocol ip prio 40 handle 30 fw police rate 400kbit burst 10k drop flowid :1
#if I set the priority to 50 then I get an error saying "We have an error talking to the kernel"
#kernel is 4.4.50

/sbin/tc filter add dev $DEV parent ffff: protocol ip prio 50 u32 match ip src 0.0.0.0/0 police rate 800kbit burst 10k drop flowid :1

同様のtcコマンド(マークされたパケットのポリシングレート)は、次の例として示されています$TC filter add dev $INDEV parent ffff: protocol ip prio 50 handle 1 fw police rate 1kbit burst 40 mtu 9k drop flowid :1http://linuxdocs.org/HOWTOs/Adv-Routing-HOWTO-14.html 同じ例がここにも表示されます https://www.iplocation.net/lartc- ddos

特定のIPに対して、キャッチオールよりも高い優先度、またはより低い優先度で別のルールを手動で追加すると、速度を400kbit/sに制限できます。しかし、iptablesによってマーク/マングルされたパケットの速度を制限したいと思います。

2
Josh

これは有効なコマンドのセットですが、問題は、入力qdiscが処理された後にマークが発生することです。

0
Josh