Linux

限制 Linux 網關內部介面的頻寬

  • February 8, 2013

我負責一個基於 Linux(它執行 Debian)的分支機構路由器,它採用單個高速 Internet 連接 (eth2) 並將其變成大約 20 個內部網路,每個內部網路都有一個單獨的子網(192.168.1.0/24 到 192.168 .20.0/24)和一個單獨的 VLAN(eth0.101 到 eth0.120)。我正在嘗試限制一個內部子網的頻寬,該子網一直在消耗超出應有的頻寬。做這個的最好方式是什麼?

我的第一次嘗試是使用 Wondershaper,我在這裡的 SuperUser 上聽說過。不幸的是,這對於我遇到的完全相反的情況很有用……它在客戶端有用,而不是在 Internet 端。

我的第二次嘗試是使用在http://www.topwebhosts.org/tools/traffic-control.php找到的腳本,我對其進行了修改,因此活動部分是:

tc qdisc add dev eth0.113 root handle 13: htb default 100
tc class add dev eth0.113 parent 13: classid 13:1 htb rate 3mbps
tc class add dev eth0.113 parent 13: classid 13:2 htb rate 3mbps
tc filter add dev eth0.113 protocol ip parent 13:0 prio 1 u32 match ip dst 192.168.13.0/24 flowid 13:1
tc filter add dev eth0.113 protocol ip parent 13:0 prio 1 u32 match ip src 192.168.13.0/24 flowid 13:2

我想要做的是將 VLAN 113(子網 192.168.13.0/24)上的頻寬限制為 3mbit up 和 3mbit down。不幸的是,它似乎根本沒有效果!我對 tc 命令非常缺乏經驗,所以任何幫助使其工作將不勝感激。

開發人員對試圖做同樣事情的人的引用:對 vlan 進行流量控制可能無法按預期工作,因為 vlan 偽設備沒有任何傳輸隊列。

由於您已經編寫了按子網速率限制的規則,因此需要讓 Linux 對其進行速率控制。

我建議通過將 VLAN 放在網橋中來解決它(儘管為了一致性起見,您可能希望為每個 VLAN 創建一個網橋):

brctl addbr br113
btctl addif br113 eth0.113

然後,您可以將tc規則應用於br113而不是eth0.113.

(配置/etc/network/interfaces留給讀者作為練習,如果可行的話……)

或者將流量控制規則應用於您的 WAN 介面可能更簡單eth2;最終結果應該差不多。

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