Linux tc Modelagem de Tráfego para IPv6

3

Eu tenho modelagem de tráfego com tc e htb no lugar e tudo funciona bem para o IPv4. Agora eu quero limitar a largura de banda para o tráfego ssh / sftp IPv6 de entrada para uma quantidade razoável, para que não interfira com o tráfego mais crítico. Em suma, nada funcionou:

tc class add dev eth0 parent 1:0 classid 1:14 htb rate 3000kbit ceil 3000kbit prio 3

ip6tables -A POSTROUTING -t mangle -o eth0 -p tcp --dport 22 -j MARK --set-mark 14
tc filter add dev eth0 parent 1:0 protocol ip handle 14 fw flowid 1:14
# or
tc filter add dev eth0 parent 1:0 protocol ipv6 u32 match ip6 protocol 6 0xff match ip6 dport 22 0xffff flowid 1:14
# or variations of these...

Como um tráfego formata dados IPv6 com tc?

    
por Thomas 20.12.2012 / 00:43

2 respostas

1

Infelizmente, o tc ainda não funciona para o IPv6.

Citação:

The Routing Policy Database (RPDB) replaced the IPv4 routing and addressing structure within the Linux Kernel which lead to all the wonderful features this HOWTO describes. Unfortunately, the IPv6 structure within Linux was implemented outside of this core structure. Although they do share some facilities, the essential RPDB structure does not particpate in or with the IPv6 addressing and routing structures.

This will change for sure, we just have to wait a little longer.

Fonte: link

Se alguém souber se isso foi corrigido de uma determinada versão do kernel, ou se houver um plano para corrigir isso em uma versão futura, sinta-se à vontade para atualizá-lo!

Possível solução alternativa (não testada por mim até agora) é encapsular o tráfego IPv6 (túnel SIT) e filtrar os pacotes IPv4 que contêm os pacotes IPv6.

    
por 27.01.2016 / 15:40
0

Pelo menos no meu modem / roteador (Actiontec C1000A, BusyBox v1.17.2, versão do kernel 2.6.30), consegui corresponder diretamente no endereço IPv6 de destino usando tc (ou seja, não é necessário usar ip6tables para marque os pacotes):

tc class add dev eth0 parent 1:0 classid 1:14 htb rate 3000kbit ceil 3000kbit prio 3
tc filter add dev eth0 parent 1:0 protocol ipv6 prio 16 \
    u32 match ip6 dst $IPV6_ADDR flowid 1:14

Então, é um palpite, mas acho que o seguinte funcionaria:

tc filter add dev eth0 parent 1:0 protocol ipv6 prio 16 u32 match ip6 dport 80 flowid 1:14

Ou usando seu ip6tables mangling:

tc filter add dev eth0 parent 1:0 protocol ipv6 handle 14 fw flowid 1:14
    
por 25.08.2016 / 15:54