我想在 Linux 网关上只允许每台机器建立单个连接,或者换句话说阻止来自同一 IP 地址的多个连接。实际上,我想阻止 Internet 下载管理器占用所有网络带宽。目前,我正在使用基于 iptables 的防火墙。
提前致谢
答案1
您可以使用 iptables“connlimit”匹配扩展,请参阅 iptables 手册页以获取更多信息。
答案2
如果您想要阻止下载管理器与 Web 服务器建立多个 HTTP/S 连接,从而通过多个连接下载同一文件,从而提高下载速度,您可能希望禁用“分块传输编码”。根据您所使用的 Web 服务器,您可以了解如何禁用该功能。
答案3
如果您的下载管理器来自单个或几个 IP 地址或端口,您也可以考虑使用它tc
来管理它。您可以做的是创建两个“通道”,一个保证大带宽,另一个保证小带宽,但可以从另一个“通道”借用。例如:
tc qdisc add dev eth1 root handle 1: htb default 10
tc class add dev eth1 parent 1: classid 1:1 htb rate 4mbit ceil 4mbit
tc class add dev eth1 parent 1:1 classid 1:10 htb rate 3mbit ceil 4mbit
tc class add dev eth1 parent 1:1 classid 1:11 htb rate 1mbit ceil 4mbit
tc filter add dev eth1 protocol ip parent 1:0 prio 1 u32 match ip src 10.2.1.100 flowid 1:11
tc filter add dev eth1 protocol ip parent 1:0 prio 1 u32 match ip dst 10.2.1.100 flowid 1:11
这将保证往返于 10.2.1.100 的流量为 1Mbit,但如果可用则允许使用最多 4MBit,并保证所有其他主机的流量为 3MBit,如果可用则允许更多。
唯一的问题是tc
文档不太好。