Linux 如何实现对每 ip 限速?

2018-12-21 23:31:31 +08:00
 openbaby
看了下网上的教程都是针对特定 ip 限速的,无法像路由器的 QOS 一样对所有 ip 都均等限速,例如每 ip 限制连接速度为 128k/s 这样,请问有实现的办法吗?
5983 次点击
所在节点    Linux
9 条回复
celeron533
2018-12-21 23:47:54 +08:00
openbaby
2018-12-22 00:08:33 +08:00
@celeron533 感谢您的指点。请问这个有没有办法对某一个单独 ip 不做限制呢?
bellchu
2018-12-22 00:13:20 +08:00
@openbaby tc 和 iptables 一起用。Google tc+iptables
hefish
2018-12-22 00:17:02 +08:00
我写过一个脚本,定期扫描 arp 列表,然后把里面的 IP 挨个设置下载速度。。
上行速度没限,因为比较麻烦,要给每个上行包打标记,然后按照标记限速,太麻烦了,一般情况限制下行就行了。
yanaraika
2018-12-22 03:05:08 +08:00
iptables 加 mark 然后 tc

强烈建议读一遍 Linux Advanced Routing & Traffic Control HOWTO 超有用
sodora
2018-12-22 12:14:32 +08:00
不用 tc,纯 iptables 的方法:
iptables -A INPUT -i eth0 -m hashlimit --hashlimit-above 128kb/s --hashlimit-mode srcip --hashlimit-name in -j DROP
iptables -A OUTPUT -o eth0 -m hashlimit --hashlimit-above 128kb/s --hashlimit-mode dstip --hashlimit-name out -j DROP
openbaby
2018-12-24 00:22:04 +08:00
@sodora 请问这个规则,若要对某 IP1.2.3.4 不受此限制的话,该如何写呢?谢谢!
sodora
2018-12-24 16:09:24 +08:00
@openbaby 在我说的 DROP 的规则上面添加一条规则直接 ACCEPT 某个 IP,就可以了。
这个是 iptables 基础的基础,连这个都要人家告诉你,最好就别用 iptables 了。
captainsparrow
2020-02-18 16:14:36 +08:00
@sodora 你好,我在服务器上用你的这个 hashlimit+iptables 可以限制速度,但是有一个问题,如果是同一个局域网的两台机器连上服务器会被认为是同一个 ip,者 2 台机器速度被合并一起限速 128kb/s 了,有方法使同一局域网的 2 台机器分别限速 128kb/s 么,谢谢了。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/519896

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX