限制 Linux 網關內部介面的頻寬
我負責一個基於 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
;最終結果應該差不多。