Para começar, você deve usar tcng
para gerar as regras de tc:
Meu servidor tem vários IPs nos quais apenas um é mapeador para a interface física de entrada eth0. Outros IPs são tratados de maneira virtual via iptables / DNAT.
Eu quero limitar o tráfego para um dos meus contêineres lxc chamado "service1" (192.168.123.2 internamente) para no máximo 50MBit / s.
Do externo eu chego ao meu servidor principal "hipervisor" via x.x.x.90 mas o Firewall roteia todas as portas necessárias para x.x.x.89 para "service1" (eu só uso Port 10000 e 5666)
Como posso moldar o tráfego com tc
para um limite máximo de 50Mbit / s para o tráfego que atinge o contianer service1 no IP x.x.x.89?
Eu começaria com
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
Estas são as regras do meu 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
Agora, como eu teria que definir regras para limitar o tráfego ao máximo de 50Mit para apenas as duas portas 10000 e 5666 de e para "service1"?
Para começar, você deve usar tcng
para gerar as regras de tc:
Tags traffic-shaping