{"id":35,"date":"2014-04-06T14:15:05","date_gmt":"2014-04-06T06:15:05","guid":{"rendered":"http:\/\/blog.qiaogen.com\/?p=35"},"modified":"2014-04-06T14:15:05","modified_gmt":"2014-04-06T06:15:05","slug":"qos-%e5%b0%8f%e5%8c%85%e4%bc%98%e5%85%88web%e4%bc%98%e5%85%88ip%e9%99%90%e9%80%9f%e8%bf%9e%e6%8e%a5%e6%95%b0%e9%99%90%e5%88%b6-%e7%9a%84%e8%84%9a%e6%9c%ac","status":"publish","type":"post","link":"https:\/\/www.sangqiao.com\/blog\/archives\/35","title":{"rendered":"[QoS] \u5c0f\u5305\u4f18\u5148+WEB\u4f18\u5148+IP\u9650\u901f+\u8fde\u63a5\u6570\u9650\u5236 \u7684\u811a\u672c"},"content":{"rendered":"<table cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td id=\"postmessage_60642\">\u672c\u5e16\u6700\u540e\u7531 zhoutao0712 \u4e8e 2010-1-5 21:37 \u7f16\u8f91<\/p>\n<p>\u5b66\u4e60iptables\u6709\u4e00\u6bb5\u65f6\u95f4\uff0c\u73b0\u5728\u5199\u4e00\u4e2a\u811a\u672c\u68c0\u9a8c\u4e00\u4e0b\u6210\u679c\u3002\u8fd9\u662f\u4e00\u4e2a\u66f4\u52a0\u4e2a\u6027\u5316QOS\u8bbe\u7f6e\u3002<br \/>\n\u5fc3\u5f97:\u6700\u597d\u7684\u65b9\u6cd5\u662f\u770b\u522b\u4eba\u7684\u811a\u672c\uff0c\u9ad8\u624b\u7684\u811a\u672c\u662f\u600e\u4e48\u5199\u7684\u3002Dualwan\u4e2d3\u79cdQOS\u7684\u811a\u672c\u90fd\u5f88\u6709\u6c34\u5e73\u3002<\/p>\n<p>\u811a\u672c\u6d4b\u8bd5\u73af\u5883\u662f\u4e00\u67612MADSL,\u7248\u672c\u662fdualwan\u00a01.23.0432\uff0c\u5173\u95ed\u6240\u6709\u5176\u5b83QOS\uff0c\u628a\u811a\u672c\u4fdd\u5b58\u5230\u00a0\u9632\u706b\u5899\u811a\u672c \u4e2d\uff0c\u91cd\u8d77\u8def\u7531\u5c31OK\u3002<br \/>\n\u8be5\u811a\u672c\u4e0d\u5b9a\u4e49\u7279\u5b9a\u63a5\u53e3\uff0c\u91c7\u7528IMQ\uff08\u4e2d\u4ecb\u961f\u5217\uff09\uff0c\u76f4\u63a5\u628a\u6e90\u5730\u5740\u548c\u76ee\u7684\u5730\u5740\u4e3a192.168.1.0\/24\u7684\u6570\u636e\u5305\u5206\u522b\u9001\u8fdbimq1\u548cimq0\u865a\u62df\u63a5\u53e3\u3002<br \/>\nimq0\u63a7\u5236\u4e0b\u8f7d\uff0cimq1\u63a7\u5236\u4e0a\u4f20\u3002<br \/>\n\u5728\u5c0f\u533a\u5bbd\u5e26\u5e94\u8be5\u4e5f\u53ef\u4ee5\u4f7f\u7528\u3002\u672a\u5728DD-WRT\u4e0a\u6d4b\u8bd5\uff0c\u5e94\u8be5\u4e5f\u80fd\u4f7f\u7528\u3002<br \/>\n\u6b63\u5e38\u7f51\u9875\u6d4f\u89c8\u548cp2p\u8f6f\u4ef6\u5192\u7528\u752880\u7aef\u53e3\u4e5f\u4f5c\u4e86\u533a\u5206\u3002\u5224\u5b9a\u903b\u8f91\u662f\uff1a\u4e00\u4e2a\u8fde\u63a5\u4f20\u8f93\u6570\u636e\u5728200kB\u4ee5\u4e0b\u662f\u7f51\u9875\u6d4f\u89c8\uff0c\u6570\u636e\u5305\u653e\u8fdb\u9ad8\u4f18\u5148\u961f\u5217\u3002<br \/>\n\u8d85\u8fc7\u540e\u5224\u5b9a\u4e3aP2P\u8f6f\u4ef6\u5192\u7528\uff0c\u540e\u7eed\u6570\u636e\u5305\u653e\u8fdb\u4f4e\u4f18\u5148\u7ea7\u961f\u5217\u3002\uff08\u811a\u672c\u4e2d204800\u4ee3\u8868200KB\uff09<br \/>\n\u6570\u636e\u5305\u5206\u7c7b\u903b\u8f91\u662f\uff1a\u5148 \u5c0f\u5305\u5206\u7c7b\u2192\u7f51\u9875\u6d4f\u89c8\u5206\u7c7b\u2192p2p\u8f6f\u4ef6\u5192\u752880\u7aef\u53e3\u2192IP\u5730\u5740\u5206\u7c7b\u3002<br \/>\n\u5e76\u4e14\u6bcf\u4e2a\u6570\u636e\u5305\u90fd\u53ea\u5c5e\u4e8e\u4e00\u79cd\u5206\u7c7b\u3002\u6bd4\u5982\u8bf4\uff0c\u4e00\u4e2atcp\u5c0f\u5305\uff0c\u5373\u4f7f\u5176\u6e90IP\u5730\u5740\u662f192.168.1.2\uff0c\u5e76\u4e14\u76ee\u7684\u7aef\u53e3\u662f80\uff0c<br \/>\n\u4e5f\u53ea\u4f1a\u5c5e\u4e8e\u5c0f\u5305\u5206\u7c7b\u3002<br \/>\n\u5206\u7c7b\u7684\u4f18\u5148\u7ea7\uff1a\u5c0f\u5305\u5206\u7c7b=\u7f51\u9875\u6d4f\u89c8(prio 0)\u00a0\u00a0&gt; IP\u5730\u5740\u5206\u7c7b (prio 2) &gt; p2p\u8f6f\u4ef6\u5192\u752880\u7aef\u53e3(prio 7)<\/p>\n<p>\u53d8\u91cf\u89e3\u91ca:<br \/>\nUP\uff0cDOWN\u5206\u522b\u662f\u4e0a\u4f20\u548c\u4e0b\u8f7d\u603b\u5e26\u5bbd\u3002<br \/>\nUP2R\uff0cUP2C\uff0cUP3R\uff0cUP3C\uff0cDOWN2R\uff0cDOWN2C\uff0cDOWN3R\uff0cDOWN3C<br \/>\n2\u662f\u5c0f\u5305\u548c\u7f51\u9875\u6d4f\u89c8\u7684\u5206\u7c7b\u961f\u5217\u7f16\u53f7\uff0c3\u662fp2p\u8f6f\u4ef6\u5192\u752880\u7aef\u53e3\u7684\u5206\u7c7b\u961f\u5217\u7f16\u53f7\u3002UP\u548cDOWN\u5206\u522b\u4ee3\u8868\u4e0a\u884c\u548c\u4e0b\u8f7d\u3002<br \/>\nR\u4ee3\u8868rate\uff08\u4fdd\u8bc1\u901f\u7387\uff09\uff0cC\u4ee3\u8868ceil\uff08\u6700\u5927\u901f\u7387\uff09\u3002<br \/>\nUPLOADR\uff0cUPLOADC\uff0cDOWNLOADC\uff0cDOWNLOADR\u4ee3\u8868\u5355\u673a\u901f\u7387\u76844\u4e2a\u53c2\u6570\u3002<br \/>\nUIP\u662f\u5185\u7f51\u7528\u6237IP\u524d\u7f00\uff0cNET\u4ee3\u8868\u5185\u7f51\u7f51\u6bb5\u3002<br \/>\nUPSP=&#8221;:128 &#8221; \u4e0a\u4f20\u6570\u636e\u5305\u4e2d\u5927\u5c0f\u57280&#8212;-128\u7684\u6570\u636e\u5305\u3002\uff08\u5c0f\u5305\uff0csmall packets)<br \/>\nDOWNSP=&#8221;:512&#8243; \u540c\u4e0a\u3002<br \/>\nIPS=&#8221;2&#8243;\uff0c\u5f00\u59cbIP\u5730\u5740192.168.1.2<br \/>\nIPE=&#8221;8&#8243;\uff0c\u7ed3\u675fIP\u5730\u5740192.168.1.8<\/p>\n<p>\u7531\u4e8e\u6bcf\u4e2a\u4eba\u7684\u60c5\u51b5\u4e0d\u540c\uff0c\u53c2\u6570\u9700\u8981\u81ea\u5df1\u505a\u4e00\u4e9b\u8c03\u6574\u3002<br \/>\n\u5efa\u8bae\uff1a<br \/>\n1.\u603b\u5e26\u5bbd\u6700\u597d\u8bbe\u5c0f\u70b9\uff0c\u4ee5\u4fdd\u8bc1\u66f4\u597d\u7684\u7f51\u7edc\u5ef6\u8fdf\u3002<br \/>\n\u6bd4\u59822MADSL\u5b9e\u9645\u4e0b\u8f7d\u53ef\u8fbe205KB\/S\u6211\u8bbe180KB\/S\u3002\uff08\u5728linux\u4e2dbps=KB\/S\uff09<br \/>\n2.\u539f\u5219\u4e0a\uff0c\u6240\u6709\u5206\u7c7b\u7684rate\u4e4b\u548c\u5c0f\u4e8e\u603brate\uff0c \u5373IP\u6570*UPLOADR+UP2R+UP3R&lt;=UP\uff0cIP\u6570*DOWNLOADR+DOWN2R+DOWN2R&lt;=DOWN<br \/>\n3.UP2R\u548cDOWN2R\u5927\u7ea6\u4e3a\u603b\u5e26\u5bbd1\/3\u3002\u53ef\u4ee5\u81ea\u5df1\u5c1d\u8bd5\u8c03\u6574\u3002<br \/>\n4.\u4fee\u6539\u53d8\u91cf\u65f6\u5019\u6ce8\u610f\u5f15\u53f7\uff0c\u9017\u53f7\u662f\u82f1\u6587\u7684\uff0c\u7a7a\u683c\u4e0d\u8981\u4e71\u52a0\uff0c\u4e00\u65e6\u9519\u8bef\u5c06\u5bfc\u81f4\u811a\u672c\u65e0\u6cd5\u8fd0\u884c\u3002<br \/>\n5.\u6700\u540e\u7684\u8fde\u63a5\u6570\u9650\u5236\u4e3aTCP 50\uff0cUDP 80\u3002\u53ef\u81ea\u884c\u4fee\u6539\u3002<br \/>\n\u4f8b\u5916\u7aef\u53e3\u53ef\u4ee5\u6dfb\u52a0\u3002\u53ef\u4ee5\u5c06\u4e00\u4e9b\u6e38\u620f\u7aef\u53e3\u6dfb\u52a0\u8fdb\u53bb\u3002<br \/>\n\u6bd4\u5982\u9700\u8981\u4f8b\u5916UDP 53\uff0c100&#8212;200\uff0c3777\uff0c14555-14559<br \/>\n\u5c06<br \/>\niptables -t mangle -I LMT -s 192.168.1.0\/24 -p udp -m mport &#8211;dports 53 -j RETURN<br \/>\n\u6539\u6210<br \/>\niptables -t mangle -I LMT -s 192.168.1.0\/24 -p udp -m mport &#8211;dports 53,100:200,3777,14555:14559 -j RETURN<br \/>\n\u5c31OK\u4e86\u3002<br \/>\n\u6b22\u8fce\u5404\u4f4d\u6d4b\u8bd5<img alt=\"\" src=\"http:\/\/bbs.dualwan.cn\/images\/smilies\/default\/lol.gif\" border=\"0\" \/>\u00a0<img alt=\"\" src=\"http:\/\/bbs.dualwan.cn\/images\/smilies\/default\/funk.gif\" border=\"0\" \/>\u00a0<img alt=\"\" src=\"http:\/\/bbs.dualwan.cn\/images\/smilies\/default\/loveliness.gif\" border=\"0\" \/>\u00a0<img alt=\"\" src=\"http:\/\/bbs.dualwan.cn\/images\/smilies\/default\/biggrin.gif\" border=\"0\" \/><\/p>\n<p>#!\/bin\/sh<br \/>\n#\u53d8\u91cf\u521d\u59cb\u5316<br \/>\nUP=&#8221;40kbps&#8221;<br \/>\nDOWN=&#8221;180kbps&#8221;<br \/>\nUP2R=&#8221;14kbps&#8221;<br \/>\nUP2C=&#8221;20kbps&#8221;<br \/>\nUP3R=&#8221;1kbps&#8221;<br \/>\nUP3C=&#8221;10kbps&#8221;<br \/>\nDOWN2R=&#8221;60kbps&#8221;<br \/>\nDOWN2C=&#8221;150kbps&#8221;<br \/>\nDOWN3R=&#8221;10kbps&#8221;<br \/>\nDOWN3C=&#8221;80kbps&#8221;<br \/>\nUPLOADR=&#8221;1kbps&#8221;<br \/>\nDOWNLOADR=&#8221;10kbps&#8221;<br \/>\nUPLOADC=&#8221;6kbps&#8221;<br \/>\nDOWNLOADC=&#8221;80kbps&#8221;<br \/>\nUIP=&#8221;192.168.1.&#8221;<br \/>\nNET=&#8221;192.168.1.0\/24&#8243;<br \/>\nUPSP=:128<br \/>\nDOWNSP=:512<br \/>\nIPS=&#8221;2&#8243;<br \/>\nIPE=&#8221;8&#8243;<\/p>\n<p>#\u88c5\u8f7d\u6838\u5fc3\u6a21\u5757,\u521b\u5efaQOS\u4e13\u7528\u94fe<br \/>\ninsmod imq<br \/>\ninsmod ipt_IMQ<br \/>\nifconfig imq1 up<br \/>\nifconfig imq0 up<br \/>\ninsmod ipt_length.o<br \/>\niptables -t mangle -N QOSDOWN<br \/>\niptables -t mangle -N QOSUP<br \/>\niptables -t mangle -I FORWARD -d $NET -j QOSDOWN<br \/>\niptables -t mangle -I FORWARD -s $NET -j QOSUP<br \/>\niptables -t mangle -A QOSDOWN -j IMQ &#8211;todev 0<br \/>\niptables -t mangle -A QOSUP -j IMQ &#8211;todev 1<\/p>\n<p>#\u6839\u961f\u5217\u521d\u59cb\u5316<br \/>\ntc qdisc del dev imq0 root<br \/>\ntc qdisc del dev imq1 root<br \/>\ntc qdisc add dev imq0 root handle 1: htb<br \/>\ntc qdisc add dev imq1 root handle 1: htb<br \/>\ntc class add dev imq1 parent 1: classid 1:1 htb rate $UP<br \/>\ntc class add dev imq0 parent 1: classid 1:1 htb rate $DOWN<\/p>\n<p>#\u7279\u6b8a\u961f\u5217(\u5c0f\u5305,http)\u521d\u59cb\u5316<br \/>\ntc class add dev imq0 parent 1:1 classid 1:2 htb rate $DOWN2R ceil $DOWN2C prio 0<br \/>\ntc class add dev imq0 parent 1:1 classid 1:3 htb rate $DOWN3R ceil $DOWN2C prio 7<br \/>\ntc filter add dev imq0 parent 1:0 protocol ip handle 2 fw flowid 1:2<br \/>\ntc filter add dev imq0 parent 1:0 protocol ip handle 3 fw flowid 1:3<br \/>\niptables -t mangle -A QOSDOWN -j BCOUNT<br \/>\niptables -t mangle -A QOSDOWN -m length &#8211;length $DOWNSP -j MARK &#8211;set-mark-return 2<br \/>\niptables -t mangle -A QOSDOWN -p tcp -m mport &#8211;sports 80,443 -m bcount &#8211;range :204800 -j MARK &#8211;set-mark-return 2<br \/>\niptables -t mangle -A QOSDOWN -p tcp -m mport &#8211;sports 80,443 -m bcount &#8211;range 204801: -j MARK &#8211;set-mark-return 3<br \/>\ntc class add dev imq1 parent 1:1 classid 1:2 htb rate $UP2R ceil $UP2C prio 0<br \/>\ntc class add dev imq1 parent 1:1 classid 1:3 htb rate $UP3R ceil $UP3C prio 7<br \/>\ntc filter add dev imq1 parent 1:0 protocol ip handle 2 fw flowid 1:2<br \/>\ntc filter add dev imq1 parent 1:0 protocol ip handle 3 fw flowid 1:3<br \/>\niptables -t mangle -A QOSUP -j BCOUNT<br \/>\niptables -t mangle -A QOSUP -m length &#8211;length :128 -j MARK &#8211;set-mark-return 2<br \/>\niptables -t mangle -A QOSUP -p tcp -m mport &#8211;dports 80,443 -m bcount &#8211;range :204800 -j MARK &#8211;set-mark-return 2<br \/>\niptables -t mangle -A QOSUP -p tcp -m mport &#8211;dports 80,443 -m bcount &#8211;range :204801 -j MARK &#8211;set-mark-return 3<\/p>\n<p>#\u7279\u6b8aIP\u9650\u901f\uff08\u672a\u7ed9\u51fa\uff09<\/p>\n<p>#\u6240\u6709\u666e\u901aIP\u5355\u72ec\u9650\u901f<br \/>\ni=$IPS;<br \/>\nwhile [ $i -le $IPE ]<br \/>\ndo<br \/>\ntc class add dev imq1 parent 1:1 classid 1:1$i htb rate $UPLOADR ceil $UPLOADC prio 2<br \/>\ntc qdisc add dev imq1 parent 1:1$i handle 1$i: sfq perturb 15<br \/>\ntc filter add dev imq1 parent 1:0 protocol ip handle 1$i fw classid 1:1$i<br \/>\ntc class add dev imq0 parent 1:1 classid 1:1$i htb rate $DOWNLOADR ceil $DOWNLOADC prio 2<br \/>\ntc qdisc add dev imq0 parent 1:1$i handle 1$i: sfq perturb 15<br \/>\ntc filter add dev imq0 parent 1:0 protocol ip handle 1$i fw classid 1:1$i<br \/>\niptables -t mangle -A QOSUP -s $UIP$i -j MARK &#8211;set-mark-return 1$i<br \/>\niptables -t mangle -A QOSDOWN -d $UIP$i -j MARK &#8211;set-mark-return 1$i<br \/>\ni=`expr $i + 1`<br \/>\ndone<\/p>\n<p>#\u6bcfIP\u9650\u5236TCP\u8fde\u63a5\u657050\uff0cUDP\u8fde\u63a5\u657080\uff0c\u5e76\u4e14\u5bf953,80\u7b49\u7aef\u53e3\u4f8b\u5916\uff08\u8be5\u6a21\u5757\u53ef\u4ee5\u5355\u72ec\u4f7f\u7528\uff09<br \/>\niptables -t mangle -N LMT<br \/>\niptables -t mangle -I PREROUTING -i br0 -j LMT<br \/>\niptables -t mangle -A LMT -p tcp &#8211;syn -m connlimit &#8211;connlimit-above 50 &#8211;connlimit-mask 32 -j DROP<br \/>\niptables -t mangle -A LMT -p udp -m udplimit &#8211;udplimit-above 80 &#8211;udplimit-mask 32 -j DROP<br \/>\niptables -t mangle -I LMT -s 192.168.1.0\/24 -p udp -m mport &#8211;dports 53 -j RETURN<br \/>\niptables -t mangle -I LMT -s 192.168.1.0\/24 -p tcp -m mport &#8211;dports 20:23,25,53,80,110,443 -j RETURN<\/p>\n<p>&nbsp;<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>\u539f\u6587\uff1a\u00a0http:\/\/bbs.dualwan.cn\/thread-12192-1-1.html<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u672c\u5e16\u6700\u540e\u7531 zhoutao0712 \u4e8e 2010-1-5 21:37 \u7f16\u8f91 \u5b66\u4e60iptables\u6709\u4e00\u6bb5\u65f6\u95f4\uff0c\u73b0 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[1],"tags":[],"_links":{"self":[{"href":"https:\/\/www.sangqiao.com\/blog\/wp-json\/wp\/v2\/posts\/35"}],"collection":[{"href":"https:\/\/www.sangqiao.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.sangqiao.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.sangqiao.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.sangqiao.com\/blog\/wp-json\/wp\/v2\/comments?post=35"}],"version-history":[{"count":1,"href":"https:\/\/www.sangqiao.com\/blog\/wp-json\/wp\/v2\/posts\/35\/revisions"}],"predecessor-version":[{"id":36,"href":"https:\/\/www.sangqiao.com\/blog\/wp-json\/wp\/v2\/posts\/35\/revisions\/36"}],"wp:attachment":[{"href":"https:\/\/www.sangqiao.com\/blog\/wp-json\/wp\/v2\/media?parent=35"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.sangqiao.com\/blog\/wp-json\/wp\/v2\/categories?post=35"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.sangqiao.com\/blog\/wp-json\/wp\/v2\/tags?post=35"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}