频宽控管
2024-07-21 02:36:31
供稿:网友
 
             
  作者: 阿忠 
   
  
  依照大哥所翻译的文章内容来看,cbq是适合正式的ip不能经过NAT的 
  
  有NAT的服务器是不能兼做CBQ 频宽控管。 
  
  IN<--->ETH0--linux(防火墙)---ETH1<----->客户端(正式的IP) 
  
                                                                                              而经过设定频宽控管后如(上传): 
  如下图 
  IN<---ETH0(队列)--LINUX(防火墙)---ETH1(队列)<-----客户端(正式的IP) 
  所以抓取以封包的程序 
  
  如:tc filter add dev eth0 parent 20:0 PRotocol ip prio 100 u32 / 
  match ip src 150.151.23.24 flowid 20:100 
  
  如封包经过防火墙到达队列时要比对来源ip match ip src 
  就可将比对到的封包颉取出来,送入20:100的队列当中 
  
  而经过设定频宽控管后如(下传): 
  如下图 
  IN--->ETH0(队列)--LINUX(防火墙)---ETH1(队列)----->客户端(正式的IP) 
  所以抓取以封包的程序 
  
  如:tc filter add dev eth1 parent 10:0 protocol ip prio 100 u32 / 
  match ip src 150.151.23.24 flowid 10:100 
  
  如封包经过防火墙到达队列时要比对来源ip match ip dst 
  就可将比对到的封包颉取出来,送入20:100的队列当中 
  
  所以频宽控管只能设在路由器(route)无法兼做伪装。 
  
  ----------------如要兼做(NAT)伪装-------------------------------------- 
  而经过设定频宽控管后如(上传): 
  动机: 
  我的做法是:既然使用u32分类器来比对上传的ip封包而受制 
  于封包伪装的动作比u32分类器比对ip还快一步执行的话。 
  那就不要用这一个ip比对方式换一个 
  
  既然受制防火墙(nat)那就用防火墙来比对来源ip封包 FW 
  依照大哥所翻的文章第11.1项 FW 分类器 
  iptables -I PREROUTING -t mangle -p tcp -d HostA / 
  -j MARK --set-mark 1 
  
  tc filter add dev eth0 protocol ip parent 1:0 prio 1 / 
  handle 1 fw classid 1:1 
  来设定其测试结果控频宽功能照我们所设定的k数在上传 
  
  底下是以u32来比对区块图 
  如下图 
  IN<---ETH0(队列)--LINUX(防火墙NAT)---ETH1(队列)<-----客户端(虚凝IP) 
  所以抓取以封包的程序 
  
  如:tc filter add dev eth0 parent 20:0 protocol ip prio 100 u32 / 
  match ip src 192.168.1.50 flowid 20:100 
  
  如封包经过防火墙到达队列时要比对来源ip match ip src 
  就可将比对到的封包颉取出来,送入20:100的队列当中 
  但它是无法抓取到192.168.1.50的IP封包的只会从ROOT伫类通过而无法转交下层的伫 
  类。 
  因为封包巳经先伪装后再经过伫类程序。 
  
  ***我有将来源ip192.168.1.50换为match ip src 211.***.***.37 (eth0的正式ip) 
  就可颉取到封包送到root伫类而转交到20:100伫类当中 
  *****所以它所抓取到的封包是经过伪装后的封包 
  
  而经过设定频宽控管后如(下传): 
  如下图 
  IN--->ETH0(队列)--LINUX(防火墙)---ETH1(队列)----->客户端(正式的IP) 
  所以抓取以封包的程序 
  
  如:tc filter add dev eth1 parent 10:0 protocol ip prio 100 u32 / 
  match ip dst 192.168.1.50 flowid 10:100 
  
  如封包经过防火墙到达队列时要比对来源ip match ip dst 
  就可将比对到的封包颉取出来,送入20:100的队列当中 
  *****这部份:就没有问题一切正常受频宽控制中 
  
  以下的例子是在我的计算机上所执行当中 
  欢迎大哥收入巧心得中 
  还希望大哥有空的话,多多翻些原文的文章,给我们这些不识英文的小子,能有一窥 
  linux领域的管道。谢谢 
  
  #!/bin/bash 
  # unded 叙述拿掉那么该类别就能够借取其它类别的频宽来用。 
  # eth0 为上传 
  # eth1 为下传 
  
  #下例为上传:宣告队列戒律 
  tc qdisc add dev eth0 root handle 10: cbq bandwidth 64Kbit avpkt 1000 
  
  #宣告顶层的类别为: 10:0 
  tc class add dev eth0 parent 10:0 classid 10:1 cbq bandwidth 64Kbit rate 
  512Kbit allot 1514 weight 3Kbit prio 8 maxburst 20 avpkt 1000 
  
  #宣告客户类别,
                         及其频宽大小 id:为10:300 
  # 忠的上传频宽 
  tc class add dev eth0 parent 10:1 classid 10:300 cbq bandwidth 64Kbit rate 
  18Kbit allot 1514 weight 3Kbit prio 5 maxburst 20 avpkt 1000 bounded 
  
  # 滋的上传频宽 
  tc class add dev eth0 parent 10:1 classid 10:100 cbq bandwidth 64Kbit rate 
  18Kbit allot 1514 weight 3Kbit prio 5 maxburst 20 avpkt 1000 bounded 
  
  # 修的上传频宽 
  tc class add dev eth0 parent 10:1 classid 10:110 cbq bandwidth 64Kbit rate 
  18Kbit allot 1514 weight 3Kbit prio 5 maxburst 20 avpkt 1000 bounded 
  
  # 雨仰的上传频宽 
  tc class add dev eth0 parent 10:1 classid 10:120 cbq bandwidth 64Kbit rate 
  18Kbit allot 1514 weight 3Kbit prio 5 maxburst 20 avpkt 1000 bounded 
  
  # 雪的上传频宽 
  tc class add dev eth0 parent 10:1 classid 10:130 cbq bandwidth 64Kbit rate 
  18Kbit allot 1514 weight 3Kbit prio 5 maxburst 20 avpkt 1000 bounded 
  
  # 阿宾的上传频宽 
  tc class add dev eth0 parent 10:1 classid 10:140 cbq bandwidth 64Kbit rate 
  18Kbit allot 1514 weight 3Kbit prio 5 maxburst 20 avpkt 1000 bounded 
  
  # 张太的上传频宽 
  tc class add dev eth0 parent 10:1 classid 10:150 cbq bandwidth 64Kbit rate 
  18Kbit allot 1514 weight 3Kbit prio 5 maxburst 20 avpkt 1000 bounded 
  
  # 煌的上传频宽 
  tc class add dev eth0 parent 10:1 classid 10:160 cbq bandwidth 64Kbit rate 
  18Kbit allot 1514 weight 3Kbit prio 5 maxburst 20 avpkt 1000 bounded 
  
  # 婷的上传频宽 
  tc class add dev eth0 parent 10:1 classid 10:180 cbq bandwidth 64Kbit rate 
  18Kbit allot 1514 weight 3Kbit prio 5 maxburst 20 avpkt 1000 bounded 
  
  # 裕的上传频宽 
  tc class add dev eth0 parent 10:1 classid 10:190 cbq bandwidth 64Kbit rate 
  18Kbit allot 1514 weight 3Kbit prio 5 maxburst 20 avpkt 1000 bounded 
  
  # 邮件主机的上传频宽 
  tc class add dev eth0 parent 10:1 classid 10:200 cbq bandwidth 64Kbit rate 
  18Kbit allot 1514 weight 3Kbit prio 5 maxburst 20 avpkt 1000 bounded 
  
  #------------------------------------------------------------------------- 
  
  # 宣告治理队列 
  tc qdisc add dev eth0 parent 10:300 sfq quantum 1514b perturb 15 
  tc qdisc add dev eth0 parent 10:100 sfq quantum 1514b perturb 15 
  tc qdisc add dev eth0 parent 10:110 sfq quantum 1514b perturb 15 
  tc qdisc add dev eth0 parent 10:120 sfq quantum 1514b perturb 15 
  tc qdisc add dev eth0 parent 10:130 sfq quantum 1514b perturb 15 
  tc qdisc add dev eth0 parent 10:140 sfq quantum 1514b perturb 15 
  tc qdisc add dev eth0 parent 10:150 sfq quantum 1514b perturb 15 
  tc qdisc add dev eth0 parent 10:160 sfq quantum 1514b perturb 15 
  tc qdisc add dev eth0 parent 10:180 sfq quantum 1514b perturb 15 
  tc qdisc add dev eth0 parent 10:190 sfq quantum 1514b perturb 15 
  tc qdisc add dev eth0 parent 10:200 sfq quantum 1514b perturb 15 
  
  #----------------------------------------------------------------------- 
  
  # 向核心解释什么样的封包属于什么样别: 
  # 忠的封包设定及颉取 
  tc filter add dev eth0 protocol ip parent 10:0 prio 100 handle 30 fw classid 
  10:300 
  
  iptables -I PREROUTING -t mangle -s 192.168.2.50 -j MARK --set-mark 30 
  
  # 滋的封包设定及颉取 
  tc filter add dev eth0 protocol ip parent 10:0 prio 100 handle 1 fw classid 
  10:100 
  
  iptables -I PREROUTING -t mangle -s 192.168.1.10 -j MARK --set-mark 1 
  
  # 修的封包设定及颉取 
  tc filter add dev eth0 protocol ip parent 10:0 prio 100 handle 2 fw classid 
  10:110 
  
  iptables -I PREROUTING -t mangle -s 192.168.1.11 -j MARK --set-mark 2 
  
  # 雨仰的封包设定及颉取 
  tc filter add dev eth0 protocol ip parent 10:0 prio 100 handle 3 fw classid 
  10:120 
  
  iptables -I PREROUTING -t mangle -s 192.168.1.12 -j MARK --set-mark 3 
  
  # 雪的封包设定及颉取 
  tc filter add dev eth0 protocol ip parent 10:0 prio 100 handle 4 fw classid 
  10:130 
  
  iptables -I PREROUTING -t mangle -s 192.168.1.13 -j MAR                         right">(出处:清风软件下载学院)