我的服务器有多个IP,其中只有一个映射到入站物理接口eth0。 其他IP通过iptables / DNAT以虚拟方式处理。
我想限制stream量到一个叫做“service1”(192.168.123.2内部)的lxc容器,最大stream量为50MBit / s。
从外部,我通过xxx90到达主服务器“hypervisor”,但防火墙将所有需要的xxx89端口路由到“service1”(我只使用端口10000和5666)
如何通过tc将stream量调整到50Mbit / s的最大限制,以达到IP xxx89上的服务1的stream量?
我会开始
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 xxx89/32 -i eth0 -p tcp -m tcp --dport 5666 -j DNAT --to-destination 192.168.123.2:5666 -A PREROUTING -d xxx89/32 -i eth0 -p udp -m udp --dport 5666 -j DNAT --to-destination 192.168.123.2:5666 -A PREROUTING -d xxx89/32 -i eth0 -p tcp -m tcp --dport 10000 -j DNAT --to-destination 192.168.123.2:10000 -A PREROUTING -d xxx89/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 xxx89
现在,我将如何定义规则,以限制只有两个端口10000和5666到“service1”的stream量最大为50Mit?
首先,您应该使用tcng来生成tc规则: