我有一台运行 12.04 的服务器,设置为调制解调器。DHCP、NAT 等。
我需要知道如何降低网络上单个 IP 的速度或设置每个单独 IP 的速度。
我的问题是我哥哥的女朋友 24/7 不停地下载种子,导致我的网速非常慢。我让她停下来,但没用,所以我现在需要控制她的连接。
我认为我的选择要么限制她的下载速度为 4mbps,上传速度为 300kbps...要么给她提供 QoS。我不知道该怎么做。
答案1
我建议阅读Linux 高级路由和流量控制指南,特别是限制单个主机或网络掩码的速率和具有 QoS 的完整 NAT 解决方案。
本质上你必须做以下事情:
PREROUTING
在表链中标记来自该特定主机的数据mangle
包- 设置优先级或限速流量控制
- 确保市场数据包属于低优先级或有限类
未经测试,但大致如此(如果发现错误,请随意编辑):
iptables -t mangle -A PREROUTING -i eth0 -s 192.168.0.666 -j MARK --set-mark 1
tc qdisc add dev ppp0 root handle 1: cbq avpkt 1000 bandwidth 10mbit
tc class add dev ppp0 parent 1: classid 1:1 cbq rate 512kbit \
allot 1500 prio 5 bounded isolated
tc filter add dev ppp0 parent 1: protocol ip prio 1 handle 1 fw classid 1:1
请注意,你不能直接使用tc filter
该主机的 IP 进行过滤,因为 tc 过滤器适用后NAT,因此它会看到你的公网IP,但无法用来区分数据包。
通常,您会对上行数据包进行速率限制,因为在那里您可以拥有最大的控制权,并且由于在常见的 ADSL 链路上,上行数据包更容易被 p2p 流量饱和。如果您愿意,您还可以尝试通过故意丢弃数据包来限制下行数据包的速率。您可以使用另一个流量控制设置来执行此操作,这次是针对通过本地网络设备转发的数据包。