Estou tentando implementar NAT64 com o tayga no meu servidor e cheguei a um ponto em que não tenho certeza de como proceder.
Meu servidor está conectado por meio de um endereço IPv4 e um bloco / 64 de endereços IPv6 à Internet. Ele serve todo tipo de coisa. Por razões, também estou executando alguns contêineres LinuX (LXC). Estes são exclusivos do IPv6. Implementei uma bridge (br0) no meu sistema host e troquei endereços de eth0 para br0. Meus contêineres se comunicam com sucesso no IPv6. Via mod_proxy no meu host eu poderia conectar meu webservers ipv6 apenas (LXC) para a Internet IPv4, também. Mas apenas em uma direção, você poderia dizer.
Para algumas funcionalidades de atualização automática, eu preciso de NAT64 + DNS6, porque alguns servidores de atualização não falam IPv6.
Vamos supor o seguinte e cuidado para que os endereços IP não estejam realmente em uso.
Host br0:
inet address: 10.0.0.1 # external IP
inet6 address: 2a01::1/64 # external IP
LXC eth0:
# external IP, some ip6tables forward rules implemented on the host
inet6 address: 2a01::2/64
Eu instalei o tayga no meu host e o configurei assim:
tun-device nat64
ipv4-addr 192.168.255.1
prefix 2a01:0:0:0:64::/96
map 192.168.255.2 2a01::2
O Tayga auto escolhe um endereço IPv6 dessa / 96 sub-rede. Então criei a interface.
$>tayga --mktun
Agora, você deve adicionar um endereço IPv4 e IPv6 à interface nat64. De acordo com o FAQ, não é uma boa idéia usar os mesmos endereços IP para os usos do host. Por outro lado, é indicado usar os endereços dos roteadores (internos). Mas eu também poderia pegar outros totalmente diferentes, e então seria pedido para adicionar as rotas necessárias. Deixe-me citar algo:
# ip link set nat64 up
# ip addr add 192.168.0.1 dev nat64 (replace with your router's IPv4 address)
# ip addr add 2001:db8:1::1 dev nat64 (replace with your router's IPv6 address)
# ip route add 192.168.255.0/24 dev nat64
# ip route add 2001:db8:1:ffff::/96 dev nat64
Não sei o que fazer. Quais endereços devo usar? Apenas use alguns endereços IPv4 / IPv6 privados? E o que mais é necessário? Uma fonte fala sobre adicionar algumas regras avançadas (eu já mudei eth0 para br0, como eu uso br0):
iptables -t nat -A POSTROUTING -o br0 -j MASQUERADE
iptables -A FORWARD -i br0 -o nat64 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i nat64 -o br0 -j ACCEPT
A coisa é, eu tentei coisa e uma vez eu pude
ping6 2a01:0:0:0:64::192.168.255.1
no meu host. Mas eu não consegui fazer meu LXC falar com nenhum sistema. Não 2a01: 0: 0: 0: 64 :: 192.168.255.1 ou talvez 2a01: 0: 0: 0: 64 :: 8.8.8.8 (Google).
Neste momento, não me importo com o DNS64 ainda não implementado. Eu instalei um pacote debian e (pense em) saber como configurá-lo, só não tentei ainda.
As fontes que consultei: link link link link link link
Atualização 1:
From 2a01::64:0:c0a8:ff01 icmp_seq=1 Destination unreachable: Unknown code 5
Esse é o endereço tayga escolher sozinho. Eu tentei ping de 2a01: 0: 0: 0: 64 :: 8.8.8.8. Eu adicionei as regras mencionadas do iptables e fiz isso:
ip link set nat64 up
ip addr add 192.168.255.1 dev nat64
ip addr add 2a01::1 dev nat64
ip route add 192.168.255.0/24 dev nat64
ip route add 2a01:0.0.0.64::/96 dev nat64
Ainda assim, eu posso pingar 2a01: 0: 0: 0: 64 :: 192.168.255.1, mas somente do meu host. Meu LXC não consegue nem alcançar esse endereço.
Sim, excluí as regras erradas do ip6tables.
Tags networking ipv6 debian nat linux