私のデバイスにQOSスクリプトを設定しようとしています。トマト-WRT54G ルータをイネーブルにします。スクリプトは必要な基本を実行しますが(ネットワーク内の特定のシステムが他のシステムよりも優先順位が低いことを確認します)、Useの代わりに他のすべてのシステムからのトラフィックに対して特定の規則を定義する必要があるという事実は気に入りません。いくつかの「基本」動作。
特に、マーカー11と12でパケットを表示する2行を削除したいと思います。
iptables -t mangle -A PREROUTING -s 192.168.1.70 -j MARK --set-mark 10
iptables -t mangle -A PREROUTING -s 192.168.1.70 -j RETURN
iptables -t mangle -A PREROUTING -m iprange --src-range 192.168.1.2-192.168.1.69 -j MARK --set-mark 11
iptables -t mangle -A PREROUTING -m iprange --src-range 192.168.1.71-192.168.1.254 -j MARK --set-mark 12
iptables -t mangle -A PREROUTING -j IMQ --todev 0
qdiskを作成するときにそれを削除しようとしましたが(「デフォルト12」追加)、スループットが急激に低下しました。また、次のいずれかの方法ですべてのパケットを表示してみました。
iptables -t mangle -A PREROUTING -j MARK --set-mark 12
または
iptables -t mangle -A PREROUTING -m mark --mark 0 -j MARK --set-mark 12
最初または最後のフィルタルールとして使用されますが、この方法も機能しません。
完全なスクリプトは次のとおりです。
TCA="tc クラスを追加 dev br0" TFA="tc フィルタを追加 dev br0" TQA="tc qdisc 追加開発 br0" SFQ="sfq 中断 10" tc qdisc del dev br0 ルート tc qdisc add dev br0 ルート ハンドル 1: htb デフォルト 10 tc クラスは dev br0 parent 1 を追加します: classid 1:1 htb 速度 2400kbit $TCA 上位 1:1 クラス ID 1:10 HTB 速度 2300kbit ceil 2400kbit prio 0 $TCA 上位 1:1 クラス ID 1:11 HTB 速度 10kbit ceil 2400kbit prio 1 $TCA 上位 1:1 クラス ID 1:12 HTB 速度 10kbit ceil 2400kbit prio 2 $TCA 上位 1:1 クラス ID 1:13 HTB 速度 10kbit ceil 2000kbit prio 4 $TQA トップ1:10 ハンドル10: $SFQ $TQA 上 1:11 ハンドル 11: $SFQ $TQA 上 1:12 ハンドル 12: $SFQ $TQA トップ 1:13 ハンドル 13: $SFQ $TFA 上位 1:0 優先順位 0 プロトコル IP ハンドル 10 fw フロー ID 1:10 $TFA 上位 1:0 優先順位 1 プロトコル IP ハンドル 11 fw フロー ID 1:11 $TFA トップ 1:0 prio 2 プロトコル IP ハンドル 12 fw flowid 1:12 $TFA トップ 1:0 prio 4 プロトコル IP ハンドル 13 fw flowid 1:13 iptables -t mangle -A POSTROUTING -p tcp --sport 80 -j MARK --set-mark 10 iptables -t mangle -A POSTROUTING -p tcp --sport 443 -j MARK --set-mark 11 iptables -t mangle -A POSTROUTING -p tcp --sport 995 -j MARK --set-mark 12 iptables -t mangle -A POSTROUTING -d 192.168.1.70 -j MARK --set-mark 13 TCAU="tc クラスを追加 dev imq0" TFAU="tc フィルタに dev imq0 を追加" TQAU="tc qdisc 開発 imq0 を追加" モジュールプローブIMQ モードプローブipt_IMQ IPリンク設定 imq0 tc qdisc del dev imq0 ルート tc qdisc add dev imq0 ルートハンドル 1: htb tcクラスはdev imq0 parent 1を追加します:classid 1:1 htb速度700kbit $TCAU 上位 1:1 クラス ID 1:10 HTB 速度 7kbit ceil 500kbit prio 4 $TCAU 上位 1:1 クラス ID 1:11 HTB 速度 30kbit ceil 700kbit prio 2 $TCAU 上位 1:1 クラス ID 1:12 HTB 速度 663kbit ceil 700kbit prio 2 $TQAU トップ1:10 ハンドル10: $SFQ $TQAU 上 1:11 ハンドル 11: $SFQ $TQAU 上 1:12 ハンドル 12: $SFQ $TFAU 上位 1:0 優先順位 4 プロトコル IP ハンドル 10 fw フロー ID 1:10 $TFAU 上位 1:0 prio 2 プロトコル IP ハンドル 11 fw flowid 1:11 $TFAU 上位 1:0 prio 2 プロトコル IP ハンドル 12 fw flowid 1:12 iptables -t mangle -A PREROUTING -s 192.168.1.70 -j MARK --set-mark 10 # #この2行を避け、残りのすべてを「12」としてマークするにはどうすればよいですか? # iptables -t mangle -A PREROUTING -m iprange --src-range 192.168.1.2-192.168.1.69 -j MARK --set-mark 11 iptables -t mangle -A PREROUTING -m iprange --src-range 192.168.1.71-192.168.1.254 -j MARK --set-mark 12 iptables -t mangle -A PREROUTING -j IMQ --todev 0
答え1
各パケットに一致する最初のルールを追加して、「デフォルト動作」を宣言できました。 "mangle"テーブルは、最初の一致ルールで停止するのではなく、すべてのルールと一致しようとする点で他のテーブルとは異なる動作をするようです。同じパケットを複数回変更しようとする可能性があるため、これは意味があります。
#他のルールが一致しない限り、すべてがデフォルトキューに移動します。 iptables -t mangle -A PREROUTING -s 192.168.1.0/24 -j MARK --set-mark 12 iptables -t mangle -A PREROUTING -s 192.168.1.70 -j MARK --set-mark 10 iptables -t mangle -A PREROUTING -j IMQ --todev 0