亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
1234下一頁
最近訪問板塊 發(fā)新帖
查看: 13924 | 回復(fù): 38
打印 上一主題 下一主題

[網(wǎng)絡(luò)管理] linux網(wǎng)橋做流量控制時使用iptables的MARK問題 [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2007-06-27 17:42 |只看該作者 |倒序瀏覽
linux網(wǎng)橋做流量控制時使用iptables的MARK問題


環(huán)境:
     MagicLinux2.0 內(nèi)核: 2.6.15.3
        iptables版本:iptables v1.3.7
        網(wǎng)橋:bridge-utils-1.2
        route -V : route 1.98
        給內(nèi)核打了layer7補(bǔ)丁

eth1:外網(wǎng)  eth2:內(nèi)網(wǎng)

配置網(wǎng)橋:

brctl addbr br0
brctl addif br0 eth1
brctl addif br0 eth2
ifconfig eth1 0.0.0.0
ifconfig eth2 0.0.0.0
ifconfig br0 0.0.0.0

去外網(wǎng)的隊列:


tc qdisc add dev eth1 root handle 1: htb default 20

tc class add dev eth1 parent 1: classid 1:1 htb rate 100mbit burst 1k

tc class add dev eth1 parent 1:1 classid 1:10 htb rate 100kbit  burst 1k

tc class add dev eth1 parent 1:1 classid 1:20 htb rate 100mbit burst 1k

tc qdisc add dev eth1 parent 1:10 handle 10: sfq perturb 10
tc qdisc add dev eth1 parent 1:20 handle 20: sfq perturb 10
tc filter add dev eth1 protocol ip parent 1:0 prio 8 handle 11 fw flowid 1:10

進(jìn)內(nèi)網(wǎng)的隊列:

tc qdisc add dev eth2 root handle 1: htb default 40

tc class add dev eth2 parent 1: classid 1:1 htb rate 100mbit burst 100m

tc class add dev eth2 parent 1:1 classid 1:30 htb rate 100kbit  burst 1k

tc class add dev eth2 parent 1:1 classid 1:40 htb rate 100mbit burst 1k

tc qdisc add dev eth2 parent 1:30 handle 30: sfq perturb 10
tc qdisc add dev eth2 parent 1:40 handle 40: sfq perturb 10
tc filter add dev eth2 protocol ip parent 1:0 prio 8 handle 22 fw flowid 1:30

iptables配置:

iptables -t mangle -F
iptables -t mangle -A PREROUTING -i eth2 -s 90.0.11.66/32 -j MARK --set-mark 11
iptables -t mangle -A PREROUTING -i eth2 -s 90.0.11.66/32 -j RETURN

iptables -t mangle -A PREROUTING -i eth1 -d 90.0.11.66/32 -j MARK --set-mark 22
iptables -t mangle -A PREROUTING -i eth1 -d 90.0.11.66/32 -j RETURN

(對90.0.11.66這個地址限速100kbit,在這里是測試效果的,本意是用layer7來做p2p流量控制的。)

經(jīng)測試發(fā)現(xiàn)速度沒有改變,為了查找問題,我用u32試了試效果:


tc qdisc add dev eth1 root handle 1: htb default 20

tc class add dev eth1 parent 1: classid 1:1 htb rate 100mbit burst 1k

tc class add dev eth1 parent 1:1 classid 1:10 htb rate 100kbit  burst 1k

tc class add dev eth1 parent 1:1 classid 1:20 htb rate 100mbit burst 1k

tc qdisc add dev eth1 parent 1:10 handle 10: sfq perturb 10
tc qdisc add dev eth1 parent 1:20 handle 20: sfq perturb 10
tc filter add dev eth1 protocol ip parent 1:0 prio 8 u32 match ip src 90.0.11.66/32 flowid 1:10



tc qdisc add dev eth2 root handle 1: htb default 40

tc class add dev eth2 parent 1: classid 1:1 htb rate 100mbit burst 100m

tc class add dev eth2 parent 1:1 classid 1:30 htb rate 100kbit  burst 1k

tc class add dev eth2 parent 1:1 classid 1:40 htb rate 100mbit burst 99m

tc qdisc add dev eth2 parent 1:30 handle 30: sfq perturb 10
tc qdisc add dev eth2 parent 1:40 handle 40: sfq perturb 10

tc filter add dev eth2 protocol ip parent 1:0 prio 8 u32 match ip dst 90.0.11.66/32 flowid 1:30

(以上使用的是網(wǎng)橋,內(nèi)外網(wǎng)用的全部是90.0.11.0網(wǎng)絡(luò)地址,掩碼255.255.255.0)

測試發(fā)現(xiàn)效果很好。后來我懷疑是網(wǎng)橋的問題,我把網(wǎng)橋去掉,做了nat,內(nèi)部是192.168.1.0網(wǎng)絡(luò),外部是90.0.11.0網(wǎng)絡(luò)。經(jīng)測試還是老樣子,用u32可以,用iptables 的mark 就是不行,百思不得其解。

后來改用cbq隊列試了試,還是不行。

tc qdisc add dev eth1 root handle 1: cbq  bandwidth 100mbit avpkt 1000 cell 8

tc class add dev eth1 parent 1: classid 1:1 cbq bandwidth 100mbit rate 100mbit maxburst 20 allot 1514 avpkt 1000 cell 8 weight 1mbit

tc class add dev eth1 parent 1: classid 1:10 cbq bandwidth 100mbit rate 100kbit  maxburst 20 allot 1514 avpkt 1000 cell 8 weight 1mbit

tc class add dev eth1 parent 1: classid 1:20 cbq bandwidth 100mbit rate 100mbit  maxburst 20 allot 1514 avpkt 1000 cell 8 weight 1mbit


tc filter add dev eth1 protocol ip parent 1:0 prio 8 handle 11 fw flowid 1:10
tc filter add dev eth1 protocol ip parent 1:0 prio 4 handle 22 fw flowid 1:10

iptables -t mangle -F
iptables -t mangle -A PREROUTING -i eth2 -s 192.168.1.6/32 -j MARK --set-mark 11
iptables -t mangle -A PREROUTING -i eth2 -s 192.168.1.6/32 -j RETURN
iptables -t mangle -A PREROUTING -i eth2 -j MARK --set-mark 22


tc qdisc add dev eth2 root handle 1: cbq  bandwidth 100mbit avpkt 1000 cell 8

tc class add dev eth2 parent 1: classid 1:1 cbq bandwidth 100mbit rate 100mbit maxburst 20 allot 1514 avpkt 1000 cell 8 weight 1mbit

tc class add dev eth2 parent 1:1 classid 1:30 cbq bandwidth 100mbit rate 100kbit  maxburst 20 allot 1514 avpkt 1000 cell 8 weight 1mbit

tc class add dev eth2 parent 1:1 classid 1:40 cbq bandwidth 100mbit rate 100mbit  maxburst 20 allot 1514 avpkt 1000 cell 8 weight 1mbit


tc filter add dev eth2 protocol ip parent 1:0 prio 8 handle 33 fw flowid 1:30
tc filter add dev eth2 protocol ip parent 1:0 prio 4 handle 44 fw flowid 1:40

iptables -t mangle -A PREROUTING -i eth1 -d 192.168.1.6/32 -j MARK --set-mark 33
iptables -t mangle -A PREROUTING -i eth1 -d 192.168.1.6/32 -j RETURN
iptables -t mangle -A PREROUTING -i eth1 -j MARK --set-mark 44

如此看來,問題應(yīng)該是出在mark上了。我加載的模塊:lsmod|grep ip
ipt_layer7             10668  0
ipt_MARK                1536  4
ipt_MASQUERADE          2048  1
iptable_nat             5764  1
ipt_ipp2p               6784  0
ip_nat_ftp              2176  0
ip_nat                 12460  3 ipt_MASQUERADE,iptable_nat,ip_nat_ftp
ip_conntrack_ftp        5616  1 ip_nat_ftp
ip_conntrack           34508  5 ipt_MASQUERADE,iptable_nat,ip_nat_ftp,ip_nat,ip_conntrack_ftp
nfnetlink               3864  2 ip_nat,ip_conntrack
iptable_filter          1664  0
iptable_mangle          1792  1
ip_tables              16000  7 ipt_layer7,ipt_MARK,ipt_MASQUERADE,iptable_nat,ipt_ipp2p,iptable_filter,iptable_mangle

不知道是缺少補(bǔ)丁還是iptables的問題。MagicLinux2.0自帶的iptables版本是1.3.6,我自己編譯的1.3.7。

簡易拓?fù)淙缦拢?/font>

使用網(wǎng)橋時:內(nèi)部(90.0.11.66)------------------(eth2)網(wǎng)橋(br0)(eth1)---------------------外部(90.0.11.0/24)
使用網(wǎng)關(guān)NAT:內(nèi)部(192.168.1.6)---------(eth2:192.168.1.3)網(wǎng)關(guān)(nat)(eth1:90.0.11.77)----------------外部(90.0.11.0/24)

192.168.1.6和90.0.11.66是同一臺pc,想對這臺pc限速。
兄弟姐妹們,你們有何高見??

[ 本帖最后由 dreamever 于 2007-6-28 09:16 編輯 ]

論壇徽章:
0
2 [報告]
發(fā)表于 2007-06-27 20:21 |只看該作者
總感覺樓主的mark打的很別扭。
你去外網(wǎng)打的標(biāo):
iptables -t mangle -F
iptables -t mangle -A PREROUTING -i eth2 -s 90.0.11.66/32 -j MARK --set-mark 11
iptables -t mangle -A PREROUTING -i eth2 -s 90.0.11.66/32 -j RETURN

這里你是在PREROUTING打的標(biāo),但你匹配的源地址是90.0.11.66,從eth2進(jìn)。
mangle表的PREROUTING是包經(jīng)過的第一條鏈,而你在NAT表POSTROUTING做SNAT出去,這是包經(jīng)過的最后一條鏈。
既然你SNAT都還沒進(jìn)行呢,就打上標(biāo)了,源地址哪來的90.0.11.66可以匹配呢?

以上是個人看法,如果不對,還請各位糾正。

論壇徽章:
0
3 [報告]
發(fā)表于 2007-06-27 21:03 |只看該作者
根據(jù) Kernel Packet Traveling Diagram 所顯示的流程來看,無論在 PREROUTING 鏈還是 POSTROUTING 鏈打標(biāo),都不會影響 tc 根據(jù) MARK 作處理
數(shù)據(jù)包無論經(jīng)過 PREROUTING 還是經(jīng)過 POSTROUTING,都有自己的源地址與目的地址,只不過一個在路由前,一個在路由后
因此,樓主的打標(biāo)動作并沒有什么問題

論壇徽章:
0
4 [報告]
發(fā)表于 2007-06-27 21:16 |只看該作者
是這樣的呀?倒!
有源地址目的地址沒錯,但沒做SNAT之前,這個包的源地址應(yīng)該是個內(nèi)網(wǎng)IP才對啊,樓主匹配的是外網(wǎng)口的公網(wǎng)地址。
老大的意思是tc判斷做MARK的包不是按正常流程走的?

論壇徽章:
0
5 [報告]
發(fā)表于 2007-06-27 21:44 |只看該作者
沒做 SNAT 或者 MASQUERADE 與是否匹配目的地址為公網(wǎng)地址沒有任何關(guān)系
在沒做 NAT 之前,PREROUTING 匹配到的數(shù)據(jù)包只不過沒有經(jīng)過路由而已,它仍然可以被 MARK 的
這個 PREROUTING 用法可以引申為
iptables -t nat -A PREROUTING -d www.chinaunix.net -j DNAT --to www.163.com
就是目的地址轉(zhuǎn)向,把去往 CU 的包打到 163 去,前面匹配是一樣的,只不過后面的 MARK 動作改為了轉(zhuǎn)向而已

>> 老大的意思是tc判斷做MARK的包不是按正常流程走的?
這句話我沒有理解,能否再詳細(xì)說一下你的意思?

論壇徽章:
0
6 [報告]
發(fā)表于 2007-06-27 22:18 |只看該作者
對不起,我不是那個意思,說錯話了,請原諒

論壇徽章:
0
7 [報告]
發(fā)表于 2007-06-27 22:29 |只看該作者
剛才我做了個實驗
環(huán)境和樓主一樣
內(nèi)網(wǎng)eth2   192.168.1.1
外網(wǎng)eth1    192.168.0.3

tc的語句和mark語句都是復(fù)制樓主的。
做了SNAT并執(zhí)行這些語句后,我在內(nèi)網(wǎng)瀏覽了些網(wǎng)頁
然后

  1. tc -s qdisc ls dev eth1
復(fù)制代碼

得到的結(jié)果是

  1. [root@localhost ~]# tc -s qdisc ls dev eth1
  2. qdisc htb 1: r2q 10 default 20 direct_packets_stat 0
  3. Sent 100121 bytes 694 pkts (dropped 0, overlimits 4)

  4. qdisc sfq 10: parent 1:10 quantum 1514b perturb 10sec
  5. Sent 0 bytes 0 pkts (dropped 0, overlimits 0)

  6. qdisc sfq 20: parent 1:20 quantum 1514b perturb 10sec
  7. Sent 100121 bytes 694 pkts (dropped 0, overlimits 0)
復(fù)制代碼

流量都是在默認(rèn)子類20上。樓主打標(biāo)的子類10果然沒有任何流量。
然后我把樓主的mark語句改了下,去掉了源地址的項,修改為:

  1. iptables -t mangle -F
  2. iptables -t mangle -A PREROUTING -i eth2 -j MARK --set-mark 11
  3. iptables -t mangle -A PREROUTING -i eth2 -j RETURN
復(fù)制代碼

清空原來的流量后,再瀏覽網(wǎng)頁,執(zhí)行tc -s qdisc ls dev eth1
結(jié)果為:

  1. [root@localhost ~]# tc -s qdisc ls dev eth1
  2. qdisc htb 1: r2q 10 default 20 direct_packets_stat 0
  3. Sent 10407 bytes 98 pkts (dropped 0, overlimits 0)

  4. qdisc sfq 10: parent 1:10 quantum 1514b perturb 10sec
  5. Sent 10407 bytes 98 pkts (dropped 0, overlimits 0)

  6. qdisc sfq 20: parent 1:20 quantum 1514b perturb 10sec
  7. Sent 0 bytes 0 pkts (dropped 0, overlimits 0)
復(fù)制代碼

這時流量都是走的打標(biāo)的子類10,子類20里沒有流量。

論壇徽章:
0
8 [報告]
發(fā)表于 2007-06-27 22:33 |只看該作者
tc的語句和mark語句都是復(fù)制樓主的。
做了SNAT并執(zhí)行這些語句后,我在內(nèi)網(wǎng)瀏覽了些網(wǎng)頁
然后

[Copy to clipboard]
CODE:
tc -s qdisc ls dev eth1

得到的結(jié)果是

[Copy to clipboard]
CODE:
[root@localhost ~]# tc -s qdisc ls dev eth1
qdisc htb 1: r2q 10 default 20 direct_packets_stat 0
Sent 100121 bytes 694 pkts (dropped 0, overlimits 4)

qdisc sfq 10: parent 1:10 quantum 1514b perturb 10sec
Sent 0 bytes 0 pkts (dropped 0, overlimits 0)

qdisc sfq 20: parent 1:20 quantum 1514b perturb 10sec
Sent 100121 bytes 694 pkts (dropped 0, overlimits 0)

流量都是在默認(rèn)子類20上。樓主打標(biāo)的子類10果然沒有任何流量。

可否在得到這個結(jié)果的時候運行一下 iptables-save -ct mangle 并貼出結(jié)果?

論壇徽章:
0
9 [報告]
發(fā)表于 2007-06-27 22:45 |只看該作者

  1. # Generated by iptables-save v1.2.11 on Sat Jun 23 01:12:20 2007
  2. *mangle
  3. :PREROUTING ACCEPT [4457:862854]
  4. :INPUT ACCEPT [1296:101484]
  5. :FORWARD ACCEPT [3156:761170]
  6. :OUTPUT ACCEPT [1246:133593]
  7. :POSTROUTING ACCEPT [4402:894763]
  8. [1339:134061] -A PREROUTING -i eth2 -j MARK --set-mark 0xb
  9. [1339:134061] -A PREROUTING -i eth2 -j RETURN
  10. [740:211659] -A PREROUTING -d 192.168.0.3 -i eth1 -j MARK --set-mark 0x16
  11. [740:211659] -A PREROUTING -d 192.168.0.3 -i eth1 -j RETURN
  12. COMMIT
  13. # Completed on Sat Jun 23 01:12:20 2007

復(fù)制代碼

論壇徽章:
0
10 [報告]
發(fā)表于 2007-06-27 22:47 |只看該作者
這并非你做測試失敗時候的那個 iptables 啊,既然你說第一個測試失敗了,那么就要排錯,排錯的時候當(dāng)然要用測試失敗的時候的內(nèi)容去排啊
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP