Linux
流量整形出站客戶端源 ip 與 tc / iptables
我的問題是我正在嘗試限制伺服器上的使用者頻寬,並想知道最好的方法。在深入研究 tc/iptables 之前,我想知道是否可以就此獲得任何建議,如果有人可以給我一個範例配置,我可能會使用它,我將不勝感激。
據我了解,您可以使用 tc 制定規則,然後使用 mark 語句將規則應用於 iptables。有人說要使用 mangle 後路由或輸出,但不能 100% 確定哪個是最好的,或者它是否重要。我相信使用 tc 我將使用 htb(令牌桶來限制頻寬)但是人們說有性能權衡,我正在尋找最低延遲的方法。這些使用者不在內部網路上,而是連接到伺服器。
我有兩種類型的使用者,所以只需要兩條規則來限制它們。到目前為止,我可以看到 tc/iptables 組合是我想要的,但我願意接受替代建議。
我認為對於 iptables,命令看起來像
頻寬限制規則 1
iptables -A PREROUTING -s xxx.xxx.xxx.xxx -t mangle -j MARK --set-mark 0x1
頻寬限制規則 2
iptables -A PREROUTING -s xxx.xxx.xxx.xxx -t mangle -j MARK --set-mark 0x2
我想要發生的事情
- 使用者進入 eth0(他們的 IP 將是已知的。不是隨機 IP)
- 從伺服器請求資訊
- 伺服器將 eth0 上的資訊發送回應用規則的使用者
使用 tc 是在 linux 中進行整形的正確方法。最好的文件是LARTC. 首先,您需要了解您將形成什麼樣的流量 - 出口或入口。之後,您必須選擇一個介面來執行此操作(在 NAT 之前根據源地址在傳出介面上調整入口流量,在 NAT 之後根據目標地址在本地介面上調整出口流量更簡單)。此外,可能根本沒有 iptables 規則,例如,如果您為兩種類型的使用者使用不同的介面(可能是 VLAN 介面)。之後,您應該在您選擇的介面上設置 qdiscs。如果您的使用者按介面劃分,則它可能是無類的;如果您使用一個介面為少數使用者類型調整頻寬,則它可能是有類的。之後,您必須設置一個過濾器(如果您使用有類方案)。下面的連結中有很多例子。祝你好運…