O que estou tentando fazer é rotear o tráfego IPv6 através de um túnel vpn. Dessa forma, eu devo poder usar o IPv6 em uma rede que não suporta IPv6.
Eu tenho um VPS que possui um bloco IPv6 atribuído. Parte deste bloco que eu quero usar para clientes openvpn. O intervalo que eu tinha em mente era 2001:db8::111:800:0/112
(o prefixo é anonimizado), porque o openvpn suporta apenas / 64 e / 112 como sub-redes.
O IPv6 através do túnel já está funcionando; do cliente, posso executar ping no servidor ( 2001:db8::111:800:1
) e também fazer interface com o servidor ( 2001:db8::111:100:100
e 2001:db8:216:3dfa:f1d4:81c0
).
No entanto, ao tentar executar o ping no google.com do cliente, não recebo resposta (tempo limite do ping). Para depurar esse problema, usei o tcpdump para capturar o tráfego no servidor e posso ver os pacotes de ping saindo, mas nenhuma resposta retornando. Adicionar regras de log ao ip6tables mostra o mesmo, pacotes saindo, mas nada chegando.
Eu usei uma ferramenta de traceroute online que recebe um tempo limite do meu servidor. Eu também tentei configurar o ip diretamente na interface, o que resulta no 2001:db8::111:800:1001
alcance do ip ( ), então acho que esse é um problema de roteamento.
Ativei o encaminhamento para o ipv6 através /proc/sys/net/ipv6/conf/all/forwarding
. O ip6tables possui uma política que permite todas as cadeias.
Minha pergunta é: o que exatamente é necessário para o linux aceitar esse pacote para um ip que não está atribuído a uma interface e encaminhá-lo ainda mais? Apenas uma rota que existe não parece suficiente.
Aqui está a configuração do meu cliente e servidor. Informe se são necessárias mais informações.
Cliente
# ip -6 addresses
10: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qlen 100
inet6 2001:db8::111:800:1001/112 scope global
valid_lft forever preferred_lft forever
# ip -6 routes
2001:db8::111:800:0/112 dev tun0 proto kernel metric 256
2000::/3 dev tun0 metric 1024
Servidor
# ip -6 address
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qlen 1000
inet6 2001:db8:216:3dfa:f1d4:81c0/64 scope global dynamic
valid_lft 86254sec preferred_lft 14254sec
inet6 2001:db8::111:100:100/128 scope global
valid_lft forever preferred_lft forever
12: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qlen 100
inet6 2001:db8::111:800:1/112 scope global
valid_lft forever preferred_lft forever
# ip -6 route
2001:db8::111:100:100 dev eth0 proto kernel metric 256
2001:db8::111:800:0/112 dev tun0 proto kernel metric 256
2001:db8::/64 dev eth0 proto kernel metric 256 expires 86194sec
default via fe80::230:48ff:fe94:d6c5 dev eth0 proto ra metric 1024 expires 1594sec
TRACE
destino da tabela bruta do iptables (talvez não muito aqui),, ip neighbour
e ip route get
. Além disso, especifique quem está executando o ping google.ca
.
POSTROUTING ... MASQUERADE
nanat
tabela. Mas não tenho certeza se entendi completamente. Você está tentando encapsular o tráfego IPv6? Em caso afirmativo, você tem as respectivas instalações instaladas?-p ipv6
Pacotes são permitidos nas regras IPv4 (!)?