サーバーには2つのネットワークインターフェースがあります。
- アドレス13.0.0.254/24のeth1
- eth0、アドレスは172.20.203.4/24です。
これら2つのネットワーク間のトラフィックをルーティングします。ミッションは、これら2つのネットワーク間の帯域幅を1Vbit / secに制限することですが、サーバーとネットワークホスト間の帯域幅は制限されません(つまり、FORWARDを通過するすべてのパケットを制限する)。
iptables -t mangle -A POSTROUTING -s 13.0.0.0/24 -d 172.20.203.0/24 -j MARK --set-mark 0x0001
iptables -t mangle -A POSTROUTING -s 172.20.203.0/24 -d 13.0.0.0/24 -j MARK --set-mark 0x0002
# eth1
tc qdisc add dev eth1 root handle 1:0 htb default 2
tc class add dev eth1 parent 1:0 classid 1:1 htb rate 1000mbps ceil 1000mbps
tc class add dev eth1 parent 1:1 classid 1:2 htb rate 999mbps ceil 1000mbps
tc class add dev eth1 parent 1:1 classid 1:3 htb rate 1mbps
tc qdisc add dev eth1 parent 1:2 handle 2:0 sfq perturb 10
tc qdisc add dev eth1 parent 1:3 handle 3:0 sfq perturb 10
tc filter add dev eth1 parent 1:0 handle 1 fw flowid 1:3
tc filter add dev eth1 parent 1:0 handle 2 fw flowid 1:3
# eth0
tc qdisc add dev eth0 root handle 1:0 htb default 2
tc class add dev eth0 parent 1:0 classid 1:1 htb rate 1000mbps ceil 1000mbps
tc class add dev eth0 parent 1:1 classid 1:2 htb rate 999mbps ceil 1000mbps
tc class add dev eth0 parent 1:1 classid 1:3 htb rate 1mbps
tc qdisc add dev eth0 parent 1:2 handle 2:0 sfq perturb 10
tc qdisc add dev eth0 parent 1:3 handle 3:0 sfq perturb 10
tc filter add dev eth0 parent 1:0 handle 2 fw flowid 1:3
tc filter add dev eth0 parent 1:0 handle 1 fw flowid 1:3
これはうまくいきません。これで始めると:
tc qdisc add dev eth1 root handle 1:0 htb default 3
tc qdisc add dev eth0 root handle 1:0 htb default 3
効果がある問題はフィルタ設定にあります。
iptables -L -v -n -t mangle
パケットが MARK ルールを通過していることを示します。 POSTROUTINGではパケットを表示せず、FORWARDまたはPREROUTINGでは表示しようとしましたが、これも機能しませんでした。私は何が間違っていましたか?
以下はいくつかの診断です。
# tc -s -d -r filter show dev eth0
filter parent 1: protocol [768] pref 49151 fw
filter parent 1: protocol [768] pref 49151 fw handle 0x1 classid 1:3
filter parent 1: protocol [768] pref 49152 fw
filter parent 1: protocol [768] pref 49152 fw handle 0x2 classid 1:3
# tc -s -d -r filter show dev eth1
filter parent 1: protocol [768] pref 49151 fw
filter parent 1: protocol [768] pref 49151 fw handle 0x2 classid 1:3
filter parent 1: protocol [768] pref 49152 fw
filter parent 1: protocol [768] pref 49152 fw handle 0x1 classid 1:3
カーネル構成:
/boot # uname -a
Linux armada-sc-02 2.6.32-5-amd64 #1 SMP Sun May 6 04:00:17 UTC 2012 x86_64 GNU/Linux
/boot # grep CONFIG_IP_MULTIPLE_TABLES config-2.6.32-5-amd64
CONFIG_IP_MULTIPLE_TABLES=y
/boot # grep CONFIG_IP_ADVANCED_ROUTER config-2.6.32-5-amd64
CONFIG_IP_ADVANCED_ROUTER=y
/boot # grep CONFIG_IP_ROUTE_FWMARK config-2.6.32-5-amd64
答え1
MARK
IPTABLES
ターゲットが期待どおりに機能しない問題は、その特定の機能を有効にするカーネルモジュールがないために発生します。Webフィルタ機能。このターゲットを使用するには、Linuxカーネルにコンパイルする必要があるモジュールをロードするMARK
必要があります。XT_MARK
カーネル構成でプロジェクトを確認し、プロジェクトとその前提条件がコンパイルされていることをCONFIG_NETFILTER_...
確認してください。プロジェクトがモジュールにコンパイルされている...XT_MARK
場合は。XT_MARK
modprobe xt_mark