%20%E3%81%8C%E5%8B%95%E4%BD%9C%E3%82%92%E5%81%9C%E6%AD%A2%E3%81%97%E3%81%BE%E3%81%99%20(OpenWRT).png)
私は openwrt でホットスポット デバイスをセットアップしました。ホットスポット機能用に nodogsplash がインストールされ、帯域幅制限用に iptables がインストールされています。速度制限スクリプトをテストしていたとき、テスト目的でホットスポットが無効になっていたため、競合に気付きませんでした。問題は、iptables を使用したスクリプトと nodogsplash の両方がトラフィック制御のために iptables で "MARK" を使用しており、競合がここから始まると思います。両方のプログラムが "0xa" などの指定された文字列でトラフィックをマークするためです。この問題を修正する方法や、IP ごとに帯域幅を制御する他の方法はありますか?
iptables -t nat -A prerouting_rule -m mac --mac-source 1c:91:48:xx:xx:xx -j MARK --set-mark 0x0A -m comment --comment "PC"
iptables -t nat -A prerouting_rule -m mark --mark 0xA -j CONNMARK --save-mark
iptables -t mangle -A PREROUTING -j CONNMARK --restore-mark
iptables -A forwarding_rule -m mark --mark 0xA -m conntrack --ctstate ESTABLISHED,RELATED -m hashlimit --hashlimit-name "Limit" --hashlimit-above 24kb/s -j DROP
これらは、iptables ルールを作成するスクリプトの一部です。
nodogsplshが作成したiptableルールの一部を以下に示します。
DROP all -- anywhere anywhere mark match 0x10000/0x30000
ndsAUT all -- anywhere anywhere mark match 0x30000/0x30000
ACCEPT all -- anywhere anywhere mark match 0x20000/0x30000
あまり多くせずに十分な情報を提供するように努めています :) 十分であることを願っています。
答え1
誰かが解決策を必要としていたら;
iptables -A forwarding_rule -d 192.168.1.10 -m hashlimit --hashlimit-name "speedLimit" --hashlimit-above 100kb/s -j DROP
オプション:
-d:クライアントのIPアドレス
--ハッシュ制限名:名前、コメントなど
--hashlimit-above:速度制限値(kb/s)