Use o traffic shaping com tc no debian jessie para limitar apenas um IP virtual

2

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"?

    
por rubo77 16.04.2015 / 23:38

1 resposta

0

Para começar, você deve usar tcng para gerar as regras de tc:

link

    
por 20.04.2015 / 18:47