Existe uma maneira de ter o NPTv6 com rastreamento de conexão no Linux?

4

Aparentemente, a implementação de NPTv6 (Tradução de prefixo de rede para IPv6) que está atualmente no kernel do Linux é incompatível com a conexão rastreamento. Isso é bastante decepcionante, já que eu sinto que o NPTv6 é uma solução muito mais sensata que o NAT66, quando você tem prefixos IPv6 dinâmicos do ISP e quer ter endereços IPv6 internos estáveis.

Eu certamente não quero fazer o NAT66, mas também preciso do firewall stateful, especialmente considerando que o NPTv6 preserva a conectividade de ponta a ponta, portanto, o rastreamento de conexão é obrigatório.

A minha pergunta é, alguém sabe sobre quaisquer patches / add-ons / work-arounds que me permitem ter NPTv6 e rastreamento de conexão para os fluxos traduzidos, no mesmo host?

    
por haimg 18.12.2016 / 15:08

1 resposta

4

O SNPT / DNPT foi criado especificamente para NPTv6 leve, feito exclusivamente na tabela "mangle" e é incompatível com o rastreamento de conexão.

Se o rastreamento de conexão é empregado, então há um alvo NETMAP que pode fazer a conversão de prefixo de rede IPv6. Assim, a documentação não é clara sobre isso, eu suspeito por razões políticas / religiosas (alvo NETMAP é realmente uma forma de NAT66, que é odiada por muitos).

Portanto, se 2607:xxx::/64 for prefixo externo, fda3:xxx::/64 for prefixo interno e eth0.99 for a interface de saída, faça o seguinte:

ip6tables -t nat -A POSTROUTING -o eth0.99 -j NETMAP --to 2607:xxx::/64 -s fda3:xxx::/64
ip6tables -t nat -A PREROUTING -i eth0.99 -j NETMAP -d 2607:xxx::/64 --to fda3:xxx::/64

Agora, para ser claro: NETMAP faz tradução de endereços 1: 1 (NAT), mas não tenho certeza se segue RFC6296 no que diz respeito a ser neutro em checksum, ou como ele diverge de NPTv6 compatível com RFC de alguma outra forma , mas é bom o suficiente para mim e funciona.

    
por 21.12.2016 / 17:06