Acontece que não foi tão fácil usar meu servidor hospedado como um gateway IPv6. É factível embora seja um processo de várias etapas.
Acabei de perguntar aqui, então o seguinte é um resumo do que aprendi durante o processo.
Para obter uma sub-rede roteável, fui para a Hurricane Electric e obtive uma sub-rede roteada / 48 da Hurricane Electric. Visite o link para obter mais informações sobre como obter sua própria sub-rede.
Eles fornecerão um túnel IPv6 roteado por IPv4 e também informarão o que você deve adicionar a /etc/interfaces
.
Meus endereços IPv6 no link do túnel estão no formulário: 2001:470:xxxx:xxx::/64
. Portanto, as seguintes linhas devem ser adicionadas ao /etc/interfaces
:
auto he-ipv6
iface he-ipv6 inet6 v4tunnel
address 2001:470:xxxx:xxx::2
netmask 64
endpoint <ipv4 address Tunnelbroker side>
local <public ipv4 address your side>
ttl 255
gateway 2001:470:xxxx:xxx::1
Mas devido ao meu servidor já ter um endereço IPv6 público, ele causará alguns problemas que precisaremos atenuar antes que eu possa pingar qualquer coisa da sub-rede do Tunnelbroker.
Insira o roteamento com base em políticas.
A ideia é que o servidor decida qual link de saída deve ser usado para o tráfego IPv6, dependendo do endereço IPv6 de origem.
As regras são bem simples.
- Se o tráfego tiver origem no próprio servidor, use o gateway padrão.
- Se o tráfego tiver origem na sub-rede / 48, use o link IPv6 por IPv4.
Isso significa que você precisa de duas tabelas de roteamento. A tabela de roteamento padrão (chamada: main
) e sua própria tabela (chamei a minha mynet6
).
Primeiro, adicione uma entrada para a tabela de roteamento personalizada:
echo 100 mynet6 > /etc/iproute2/rt_tables
Por causa do argumento, digamos que eu tenha a sub-rede 2001:db8:cafe::/48
.
Eu fiz um script que é chamado pelo OpenVPN quando o link VPN está ativo, já que minha sub-rede / 48 reside apenas no meu link VPN. O roteiro é um pouco assim:
# Reset IPv6 routing table.
ip -6 rule flush
# Add default IPv6 rules again - since they gets deleted by the initial rule
# flush command.
ip -6 rule add priority 32766 from all table main
# Reset Tunnelbroker routing table (table name: "mynet6").
ip -6 route flush table mynetv6
# All traffic from my /48 subnet should be added to Tunnelbroker routing table
ip -6 rule add priority 32000 from 2001:DB8:CAFE::/48 table mynet6
# Add routeable VPN subnets to Tunnelbroker routing table
ip -6 rule add from 2001:DB8:CAFE::/48 table he-ipv6
# Remember to add a rule that if no machine does not respond to a
# packet address in my /48, then we should return unreachable.
# Else the package will be forwarded by default out through the
# Hurricane Electric connection.
#(From the Internet)
ip -6 route add unreachable 2001:DB8:CAFE::/48
#(From my /48 subnet)
ip -6 route add unreachable 2001:DB8:CAFE::/48 table mynet6
# Any traffic that originates from VPN has to be forwarded via Tunnelbroker
# routing table using the tunnelbroker link (link name: he-ipv6).
ip -6 route add default via 2001:470:xxxx:xxx::1 dev he-ipv6 table mynet6
Verificação da configuração
Você pode verificar sua configuração de roteamento com o comando:
ip -6 rule show
Deve conter algo como:
0: from all lookup local
32000: from 2001:db8:cafe::/48 lookup mynet6
32766: from all lookup main
A tabela de roteamento para o link do Tunnelbroker pode ser encontrada em:
ip -6 route show table mynet6
E deve sair algo como:
unreachable 2001:470:78d6::/48 dev lo metric 1024 error -113 pref medium
default via 2001:470:xxxx:xxx::1 dev he-ipv6 metric 1024 pref medium
Sua tabela de roteamento padrão é encontrada aqui:
ip -6 route show table main
E deve ter entre outras as linhas:
unreachable 2001:470:78d6::/48 dev lo metric 1024 error -113 pref medium
default via XXXX:XXXX:XXXX::1 dev eth0 metric 1024 pref medium
Isso deve levar o que o servidor deve fazer quando receber tráfego da sub-rede / 48. Como você atribui a sub-rede / 48 a sua própria rede é um capítulo totalmente diferente, que eu não vou cobrir aqui. : -)