Traffic-Shaping
在 debian jessie 上使用流量整形和 tc 來限制一個虛擬 IP
我的伺服器有多個 IP,其中只有一個映射到入站物理介面 eth0。其他 IP 通過 iptables/DNAT 以虛擬方式處理。
我想將我的一個名為“service1”(內部為 192.168.123.2)的 lxc 容器的流量限制為最大 50MBit/s。
從外部我通過 xxx90 到達我的主伺服器“管理程序”,但防火牆將 xxx89 所需的所有埠路由到“service1”(我只使用埠 10000 和 5666)
tc
對於到達 IP xxx89 上的 service1 contianer 的流量,如何將流量調整為最大 50Mbit/s?我會從
DEV=eth0 IPT=/sbin/iptables TC=/sbin/tc $IPT -t mangle -F # clear old rules: $TC qdisc del dev $DEV ingress > /dev/null 2>&1 $TC qdisc del dev $DEV root > /dev/null 2>&1 $TC qdisc del dev lo root > /dev/null 2>&1 # initialize shaping and set default to channel 12: $TC qdisc add dev $DEV root handle 1:0 htb default 12 r2q 6 # set max limit to 1GBit $TC class add dev $DEV parent 1:0 classid 1:1 htb rate 1Gbit ceil 1Gbit
這些是我的 iptables 規則(
iptables-save
):-A PREROUTING -d x.x.x.89/32 -i eth0 -p tcp -m tcp --dport 5666 -j DNAT --to-destination 192.168.123.2:5666 -A PREROUTING -d x.x.x.89/32 -i eth0 -p udp -m udp --dport 5666 -j DNAT --to-destination 192.168.123.2:5666 -A PREROUTING -d x.x.x.89/32 -i eth0 -p tcp -m tcp --dport 10000 -j DNAT --to-destination 192.168.123.2:10000 -A PREROUTING -d x.x.x.89/32 -i eth0 -p udp -m udp --dport 10000 -j DNAT --to-destination 192.168.123.2:10000 -A POSTROUTING -s 192.168.123.0/24 -o eth0 -j SNAT --to-source x.x.x.89
現在,我將如何定義規則以將流量限制為最大 50Mit,僅用於從“service1”到“service1”的這兩個埠 10000 和 5666?
首先,您應該使用
tcng
來生成 tc 規則: