Linux

限制ip的網路頻寬

  • July 16, 2018

對於流量管理應用程序,我應該限制客戶端 IP 地址的頻寬,每個 IP 都有不同的限制

如何使用 tc-tbf 獲取特定的 IP 地址

還是有其他解決方案?

為了限制單個IP地址的頻寬,我一直在用HTB做TC。以下是一些有用的連結:

舉個簡單的例子,為了限制儲存在 CLIENT_IP shell 變數中的單個 IP 地址的頻寬,限制如下:

  • 設備名稱 = eth0
  • 設備可用/允許的總頻寬 = 1000kbps 到 1500kbps
  • 預設頻寬(對於不屬於我們過濾器的客戶端)= 1kbps 到 2kbps
  • CLIENT_IP 的頻寬 = 100kbps
  • CLIENT_IP 的最大頻寬(如果有更多可用頻寬)= 200kbps

下面的命令就足夠了:

tc qdisc add dev eth0 root handle 1: htb default 10

tc class add dev eth0 parent 1: classid 1:1 htb rate 1000kbps ceil 1500kbps 

tc class add dev eth0 parent 1:1 classid 1:10 htb rate 1kbps ceil 2kbps

tc class add dev eth0 parent 1:1 classid 1:11 htb rate 100kbps ceil 200kbps

tc filter add dev eth0 protocol ip parent 1:0 prio 1 u32 match ip src ${CLIENT_IP} flowid 1:11

與您的問題半相關,限制客戶端的頻寬可能不是最好的解決方案,因為它必須以逐個客戶端為基礎。您可能希望指定任何單個客戶端可以使用的最大頻寬量,而不是通過 IP 地址指定。

您最好的選擇是 QoS,並根據流量類型為服務指定不同的優先級。

據我所知,您不能將 tc-tbf 用於特定的 IP 地址。

http://man.he.net/man8/tc-tbf

如果您只是想提高性能,請查看這篇文章。

http://lists.debian.org/debian-firewall/2005/07/msg00088.html

引用自:https://serverfault.com/questions/174010