__
_/ \____
/ \__
/ Internet \
\_____________/
|
------------
+ Router 1 +
------------
|
------------
+ Router 2 +
-------------
|
...
Internal Network
...
Estou tentando aprender o ipv6 criando um túnel 6 em 4 na minha rede doméstica usando o Hurricane Electric. Minha configuração física é conforme a ilustração acima.
Eu li vários guias iniciais para ipv6 e vários tutoriais (especialmente: 1 , 2 ) e reuniu informações sobre como realizar o roteamento.
Os roteadores 1 e 2 são dispositivos bastante simples, com o busybox instalado (embora o roteador 2 seja um pouco mais capaz do que o roteador 1).
No roteador 1, eu emiti os seguintes comandos:
HURR_ELEC_IPV4_SERVER=A.B.C.D
MY_WAN_IP_ADDR=E.F.G.H
HURR_ELEC_IPV6_CLIENT=XXXX:YYYY:ZZZZ:WWWW::2
HURR_ELEC_IPV6_SERVER=XXXX:YYYY:ZZZZ:WWWW::1
HURR_ELEC_IPV6_ROUTED_48=XXXX:YYYY:NNNN
ip tunnel add he-ipv6 mode sit remote $HURR_ELEC_IPV4_SERVER local $MY_WAN_IP_ADDR ttl 255
ip link set he-ipv6 up
ip addr add $HURR_ELEC_IPV6_CLIENT/64 dev he-ipv6
ip route add default via $HURR_ELEC_IPV6_SERVER dev he-ipv6
ip addr add $HURR_ELEC_IPV6_ROUTED_48::1/64 dev br0
#in my /var/radvd.conf file:
interface br0 {
AdvSendAdvert on;
AdvManagedFlag on;
AdvOtherConfigFlag on;
AdvLinkMTU 0;
MinRtrAdvInterval 20;
MaxRtrAdvInterval 60;
AdvDefaultLifetime 0;
prefix $HURR_ELEC_IPV6_ROUTED_48::/64
{
};
};
No roteador 1, eu mato o processo de radvd e, em seguida, reinicio manualmente. Neste ponto, o roteador 1 é capaz de ping6 ipv6.google.com
e obter um resultado:
/ # ping6 ipv6.google.com
resolve success!
PING ipv6.google.com(2607:f8b0:4004:811::200e) 56 data bytes
64 bytes from 2607:f8b0:4004:811::200e: icmp_seq=1 ttl=57 time=18.3 ms
64 bytes from 2607:f8b0:4004:811::200e: icmp_seq=2 ttl=57 time=13.4 ms
64 bytes from 2607:f8b0:4004:811::200e: icmp_seq=3 ttl=57 time=17.7 ms
64 bytes from 2607:f8b0:4004:811::200e: icmp_seq=4 ttl=57 time=11.6 ms
...
O roteador 2 é um roteador Netgear, que possui uma opção Auto Config
. Ao usar este modo, ele obtém com sucesso um endereço IPv6 do roteador 1. Após Auto Config
, os endereços IP relevantes e a tabela de roteamento ipv6 se parecem com isto:
user@Router2:/# ip -6 addr show
...
9: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500
inet6 fe80::KKKK:LLLL:MMMM:OOOO/64 scope link
valid_lft forever preferred_lft forever
10: brwan: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500
inet6 XXXX:YYYY:NNNN:0:KKKK:LLLL:MMMM:JJJJ/64 scope global dynamic
valid_lft 2591980sec preferred_lft 604780sec
inet6 fe80::KKKK:LLLL:MMMM:JJJJ/64 scope link
valid_lft forever preferred_lft forever
...
user@Router2:/# ip -6 route show
XXXX:YYYY:NNNN::/64 dev brwan proto kernel metric 256 expires 2591969sec
...
fe80::/64 dev brwan proto kernel metric 256
fe80::/64 dev br0 proto kernel metric 256
O roteador 2 pode fazer o ping da interface br0 do roteador 1 agora:
user@Router2:/# ping6 XXXX:YYYY:NNNN::1
PING XXXX:YYYY:NNNN::1 (XXXX:YYYY:NNNN::1): 56 data bytes
64 bytes from XXXX:YYYY:NNNN::1: seq=0 ttl=64 time=7.225 ms
64 bytes from XXXX:YYYY:NNNN::1: seq=1 ttl=64 time=0.655 ms
64 bytes from XXXX:YYYY:NNNN::1: seq=2 ttl=64 time=0.673 ms
64 bytes from XXXX:YYYY:NNNN::1: seq=3 ttl=64 time=0.674 ms
Mas, o roteador 2 não pode fazer o ping da interface brwan do roteador 2 (o endereço do cliente da Hurricane Electric):
user@Router2:/# ping6 XXXX:YYYY:ZZZZ:WWWW::2
PING XXXX:YYYY:ZZZZ:WWWW::2 (XXXX:YYYY:ZZZZ:WWWW::2): 56 data bytes
ping6: sendto: Network is unreachable
Após adicionar uma rota estática via endereço da interface br0 do roteador 1, o roteador 2 pode fazer ping da interface brwan do roteador 1:
user@Router2:/# ip -6 route add ::/0 via XXXX:YYYY:NNNN::1 dev brwan
user@Router2:/# ping6 XXXX:YYYY:ZZZZ:WWWW::2
PING XXXX:YYYY:ZZZZ:WWWW::2 (XXXX:YYYY:ZZZZ:WWWW::2): 56 data bytes
64 bytes from XXXX:YYYY:ZZZZ:WWWW::2: seq=0 ttl=64 time=10.858 ms
64 bytes from XXXX:YYYY:ZZZZ:WWWW::2: seq=1 ttl=64 time=0.660 ms
64 bytes from XXXX:YYYY:ZZZZ:WWWW::2: seq=2 ttl=64 time=0.647 ms
No meu entendimento limitado, eu teria pensado que o Roteador 1 seria capaz de acessar a Internet, porque ele é capaz de acessar o endereço IP da interface do cliente Hurricane Electric no endereço brwan do Roteador 1, e o brwan sabe como atravessar o Ele túnel para chegar à Internet.
No entanto, quando eu bato no Google, nada acontece:
user@Router2:/# ping6 ipv6.google.com
PING ipv6.google.com (2607:f8b0:4004:807::200e): 56 data bytes
^C^C
--- ipv6.google.com ping statistics ---
47 packets transmitted, 0 packets received, 100% packet loss
user@Router2:/# traceroute6 -v ipv6.google.com
traceroute to ipv6.google.com (2607:f8b0:4004:800::200e), 30 hops max, 16 byte packets
1 XXXX:YYYY:NNNN::1 (XXXX:YYYY:NNNN::1) 32 bytes to XXXX:YYYY:NNNN:0:KKKK:LLLL:MMMM:JJJJ 0.455 ms 0.467 ms 0.420 ms
2 *
56 bytes from (Router 1's br0 interface Link-Local addr) to ff02::1: icmp type 134 (Router Advert) code 0
0000: 00000000 00000000 030440c0 00278d00
0010: 00093a80 00000000 20010470 8c810000
0020: 00000000 00000000 010170f1 961dd439
* *
3 * * *
4 * *
56 bytes from (Router 1's br0 interface Link-Local addr) to ff02::1: icmp type 134 (Router Advert) code 0
0000: 00000000 00000000 030440c0 00278d00
0010: 00093a80 00000000 20010470 8c810000
0020: 00000000 00000000 010170f1 961dd439
^C
user@Router2:/#
Por que o Roteador 2 não pode alcançar a Internet?
ATUALIZAÇÃO:
Por @grawity, alterei /var/radvd.conf
para:
interface br0 {
AdvSendAdvert on;
prefix XXXX:YYYY:NNNN::/64
{
};
};
Agora, o Roteador 2 recebe automaticamente uma rota padrão (que é o endereço fe80 do link-local da interface br0 no roteador 1). No entanto, o roteador 2 ainda não consegue acessar a Internet.