如何编写 iptables 规则来限制用户或 IP 地址的互联网带宽使用量

如何编写 iptables 规则来限制用户或 IP 地址的互联网带宽使用量

如何借助以下工具控制或限制网络中用户/计算机/IP 地址的互联网带宽使用情况iptables规则?

我有一个静态 IP 地址,用于提供 Internet(即 WAN)。我将其分配给 eth0,并将本地网络 IP 地址指定为 192.168.0.1(LAN),即 eth1。这台机器充当我的网关,DHCP服务器。如果可能的话,我可以使用MAC地址识别机器?

答案1

您基本上问了两个问题。答案是:

  1. 不,您不能使用 iptables 来限制带宽。iptables 更像是防火墙,使用 IP 寻址作为其工作模式。您可以使用内置程序“tc”(流量控制)来满足限制带宽的需求。许多互联网服务提供商使用 tc 来控制带宽。tc 的使用比较复杂,请参阅 tc 的手册页以了解基本概念。

  2. 您可以使用命令“arp -n”查看MAC 地址所连接主机及其 IP 地址。因此,如果您将服务器用作 Internet 网关,则通过使用“arp -n”,您将看到当前连接到服务器的本地网络的所有设备的 MAC 地址和 IP 地址,以及服务器本身的 MAC 地址和 IP 地址。

答案2

您可以在 iptables 中标记、循环和丢弃数据包。我见过人们使用 iptables 进行速率控制的示例。

# Limit packet traffic on a TCP or UDP port:
iptables -A INPUT -p $proto --destination-port $port --syn -m state --state NEW -m limit --limit $lim/s --limit-burst $lb -j ACCEPT

# Limit established/related packet traffic:
iptables -A INPUT -m state --state RELATED,ESTABLISHED -m limit --limit $lim/s --limit-burst $lb -j ACCEPT

从:https://serverfault.com/questions/340256/should-i-rate-limit-packets-with-iptables

答案3

我用它来限制路由器上一系列 IP 的流量,但您需要通过 ssh 或 telnet 访问路由器 shell。

#enable the limitation
iptables -I FORWARD -m iprange --dst-range 192.168.1.50-192.168.1.70 -j DROP

iptables -I FORWARD -m iprange --dst-range 192.168.1.50-192.168.1.70 -m limit --limit 100/sec -m state --state ESTABLISHED -j ACCEPT

#disable it
iptables -D FORWARD 1
iptables -D FORWARD 1

相关内容