Por que os comandos a seguir não funcionam para limitar o tráfego para a porta 21 usando tc?

3

Em minha busca para encontrar uma maneira de limitar a largura de banda de saída para uma instância em execução de bitcoind, me deparei com este guia que explica como classificar o limite de tráfego para um determinado IP de destino:

tc qdisc add dev $DEV root handle 1: cbq avpkt 1000 bandwidth 10mbit 
tc class add dev $DEV parent 1: classid 1:1 cbq rate 512kbit allot 1500 prio 5 bounded isolated 
tc filter add dev $DEV parent 1: protocol ip prio 16 u32 match ip dst 195.96.96.97 flowid 1:1

Não estou tentando limitar o tráfego a um determinado IP de destino, mas de e para uma porta específica, por isso encontrei este guia que informa como corresponder o tráfego por porta de origem e destino:

tc filter add dev eth0 protocol ip parent 10: prio 1 u32 match ip dport 22 0xffff flowid 10:1
tc filter add dev eth0 protocol ip parent 10: prio 1 u32 match ip sport 80 0xffff flowid 10:1

A combinação do primeiro script com a correspondência de porta do segundo script leva-me ao seguinte conjunto de comandos que deve limitar o tráfego de saída para a porta 21 a 160 kbit / s. Estou testando a configuração usando o FTP primeiro, porque limitar o bitcoind, que usa a porta 8333, não é ideal para testes, já que não consigo decidir quando o tráfego é enviado.

tc qdisc add dev eth0 root handle 1: cbq avpkt 1000 bandwidth 800kbit 
tc class add dev eth0 parent 1: classid 1:1 cbq rate 160kbit allot 1500 prio 5 bounded isolated
tc filter add dev eth0 parent 1: protocol ip prio 16 u32 match ip dport 21 0xffff flowid 1:1

Tanto quanto eu posso ver, isso deve limitar o tráfego de saída para a porta 21 na interface eth0 com uma largura de banda de saída de 800kbit / s para 160kbit / s, mas não está funcionando:

NetHogs version 0.8.0

  PID USER     PROGRAM                      DEV        SENT      RECEIVED       
23653 rune     filezilla                    eth0     102.609       2.978 KB/sec

A conexão FTP consiste em duas conexões para a porta 21:

$ netstat -n|grep "21 "
tcp        0      0 192.168.1.33:59967      194.192.207.26:21       ESTABLISHED
tcp        0      0 192.168.1.33:59974      194.192.207.26:21       ESTABLISHED

O que estou fazendo de errado?

Estou executando o Ubuntu Raring, caso isso seja relevante.

    
por runeks 30.05.2013 / 22:13

1 resposta

1

Você precisa de pelo menos duas classes: uma limitada e uma "ilimitada". Para que você possa filtrar um tipo de tráfego para a classe limitada e manter o resto fora disso. Se você tiver apenas uma turma, todo o tráfego é limitado.

    
por 30.05.2013 / 22:49

Tags