我的服务器有多个 IP,其中只有一个映射到入站物理接口 eth0。其他 IP 通过 iptables/DNAT 以虚拟方式处理。
我想将到我的一个名为“service1”(内部为 192.168.123.2)的 lxc 容器的流量限制为最大 50MBit/s。
从外部我通过 xxx90 到达我的主要服务器“虚拟机管理程序”,但防火墙将 xxx89 所需的所有端口路由到“service1”(我只使用端口 10000 和 5666)
tc
对于到达 IP xxx89 上的 service1 容器的流量,如何才能将其最大限制为 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
现在我该如何定义规则来将往返于“service1”的两个端口 10000 和 5666 的流量限制为最大 50Mit?
答案1
首先,您应该使用tcng
来生成 tc 规则: