基于ip限速 #220
Replies: 7 comments
-
但是我不知道方法 |
Beta Was this translation helpful? Give feedback.
-
可以使用cgroup的net_cls子系统试试 |
Beta Was this translation helpful? Give feedback.
-
搜索iptables hashlimit |
Beta Was this translation helpful? Give feedback.
-
这个不是核心需求,所以目前不打算并入ss-tproxy脚本; |
Beta Was this translation helpful? Give feedback.
-
学习了一下hashlimit模块,自己折腾了半个钟,这里简单总结一下: 首先限速的原理很简单,就是将超过规定速率的包给丢掉(限速一般只针对tcp,udp很少有这种需求),丢掉超过规定速率的包之后,在TCP发送方看来,就是对方(接收方)没收到我发出去的包,也就是“丢包”了,于是会触发TCP的重传机制,于是就达到了限速的目的。 一个简单的例子(这些iptables规则在ss-tproxy主机设置): ## 连接级别
# 192.168.1.0/24网段的主机,每条tcp连接,上传限速100kb/s
iptables -t mangle -I PREROUTING -p tcp -s 192.168.1.0/24 -m hashlimit --hashlimit-name upload --hashlimit-mode srcip,srcport --hashlimit-above 100kb/s -j DROP
# 192.168.1.0/24网段的主机,每条tcp连接,下载限速100kb/s
iptables -t mangle -I POSTROUTING -p tcp -d 192.168.1.0/24 -m hashlimit --hashlimit-name download --hashlimit-mode dstip,dstport --hashlimit-above 100kb/s -j DROP
## 主机级别
# 192.168.1.0/24网段的主机,每个内网ip,上传限速100kb/s
iptables -t mangle -I PREROUTING -p tcp -s 192.168.1.0/24 -m hashlimit --hashlimit-name upload --hashlimit-mode srcip --hashlimit-above 100kb/s -j DROP
# 192.168.1.0/24网段的主机,每个内网ip,下载限速100kb/s
iptables -t mangle -I POSTROUTING -p tcp -d 192.168.1.0/24 -m hashlimit --hashlimit-name download --hashlimit-mode dstip --hashlimit-above 100kb/s -j DROP 如果是要限制从直连网站下载的速度,要设置一条snat规则,不然限速是不会有效的 ( 因为数据包直接由光猫/路由器发到内网客户机了,不会经过ss-tproxy主机): iptables -t nat -A POSTROUTING -p tcp -s 192.168.1.0/24 -j MASQUERADE
TODO: 更多限速例子,以及限速需求。 |
Beta Was this translation helpful? Give feedback.
-
已经加到wiki了,有需要的可以看wiki |
Beta Was this translation helpful? Give feedback.
-
局域网多个设备,能否做到根据设备IP限速?
Beta Was this translation helpful? Give feedback.
All reactions