Debian: IPv6 em IPv4 sobre OpenVPN

2

Seguindo (mais ou menos) as instruções link , agora tenho o seguinte:

Cliente

martin@theoria:~$ ifconfig 
eth0      Link encap:Ethernet  HWaddr 00:50:8d:b3:fd:f4  
          inet addr:192.168.0.2  Bcast:192.168.0.255  Mask:255.255.255.0
          inet6 addr: fe80::250:8dff:feb3:fdf4/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:31372164 errors:0 dropped:0 overruns:0 frame:0
          TX packets:33131753 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:15453951555 (15.4 GB)  TX bytes:26797262646 (26.7 GB)
          Interrupt:23 Base address:0xa000 

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:1985259 errors:0 dropped:0 overruns:0 frame:0
          TX packets:1985259 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:347645379 (347.6 MB)  TX bytes:347645379 (347.6 MB)

sit1      Link encap:IPv6-in-IPv4  
          inet6 addr: 2001:41d0:2:b353::10/64 Scope:Global
          inet6 addr: fe80::a08:a/128 Scope:Link
          UP POINTOPOINT RUNNING NOARP  MTU:1480  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

tun0      Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  
          inet addr:10.8.0.10  P-t-P:10.8.0.9  Mask:255.255.255.255
          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1500  Metric:1
          RX packets:9 errors:0 dropped:0 overruns:0 frame:0
          TX packets:14 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:100 
          RX bytes:1106 (1.1 KB)  TX bytes:1598 (1.5 KB)

virbr0    Link encap:Ethernet  HWaddr 12:86:9c:16:08:fd  
          inet addr:192.168.122.1  Bcast:192.168.122.255  Mask:255.255.255.0
          UP BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

wlan0     Link encap:Ethernet  HWaddr 00:0e:2e:4e:94:8a  
          UP BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

Servidor

root@martineve:~# ifconfig 
eth0      Link encap:Ethernet  HWaddr e0:69:95:72:85:77  
          inet addr:188.165.232.xxx  Bcast:188.165.232.255  Mask:255.255.255.0
          inet6 addr: fe80::e269:95ff:fe72:8577/64 Scope:Link
          inet6 addr: 2001:41d0:2:b353::1/64 Scope:Global
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:49817 errors:0 dropped:6 overruns:0 frame:0
          TX packets:51419 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:21105790 (20.1 MiB)  TX bytes:36400780 (34.7 MiB)
          Interrupt:20 Memory:fe500000-fe520000 

eth0:0    Link encap:Ethernet  HWaddr e0:69:95:72:85:77  
          inet addr:87.98.254.xxx  Bcast:87.255.255.255  Mask:255.255.255.255
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          Interrupt:20 Memory:fe500000-fe520000 

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:14274 errors:0 dropped:0 overruns:0 frame:0
          TX packets:14274 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:10206299 (9.7 MiB)  TX bytes:10206299 (9.7 MiB)

sit10     Link encap:IPv6-in-IPv4  
          inet6 addr: 2001:41d0:2:b353::3/64 Scope:Global
          inet6 addr: fe80::a08:1/128 Scope:Link
          UP POINTOPOINT RUNNING NOARP  MTU:1480  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

tun0      Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  
          inet addr:10.8.0.1  P-t-P:10.8.0.2  Mask:255.255.255.255
          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1500  Metric:1
          RX packets:16000 errors:0 dropped:0 overruns:0 frame:0
          TX packets:13254 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:100 
          RX bytes:9839924 (9.3 MiB)  TX bytes:5791219 (5.5 MiB)

Cada dispositivo pode pingar o outro pela rede IPv6 entre eles:

Cliente:

PING 2001:41d0:2:b353::3(2001:41d0:2:b353::3) 56 data bytes
64 bytes from 2001:41d0:2:b353::3: icmp_seq=1 ttl=64 time=25.3 ms

Servidor:

PING 2001:41d0:2:b353::10(2001:41d0:2:b353::10) 56 data bytes
64 bytes from 2001:41d0:2:b353::10: icmp_seq=1 ttl=64 time=94.7 ms

No entanto, do cliente, não consigo acessar em nenhum lugar fora.

Cliente:

martin@theoria:~$ ip -6 route show
2001:41d0:2:b353::/64 via :: dev sit1  proto kernel  metric 256 
fe80::/64 dev eth0  proto kernel  metric 256 
fe80::/64 via :: dev sit1  proto kernel  metric 256 
default via 2001:41d0:2:b353::1 dev sit1  metric 1024 
martin@theoria:~$ sudo route -A inet6
[sudo] password for martin: 
Kernel IPv6 routing table
Destination                    Next Hop                   Flag Met Ref Use If
2001:41d0:2:b353::/64          ::                         Un   256 0     1 sit1
fe80::/64                      ::                         U    256 0     0 eth0
fe80::/64                      ::                         Un   256 0     0 sit1
::/0                           2001:41d0:2:b353::1        UG   1024 0     0 sit1
::/0                           ::                         !n   -1  1   520 lo
::1/128                        ::                         Un   0   2    56 lo
2001:41d0:2:b353::10/128       ::                         Un   0   1     3 lo
fe80::a08:a/128                ::                         Un   0   1     0 lo
fe80::250:8dff:feb3:fdf4/128   ::                         Un   0   1     0 lo
ff00::/8                       ::                         U    256 0     0 eth0
ff00::/8                       ::                         U    256 0     0 sit1
::/0                           ::                         !n   -1  1   520 lo

Servidor:

root@martineve:~# ip -6 route show
2001:41d0:2:b353::10 dev sit10  metric 1024 
2001:41d0:2:b353::/64 dev eth0  proto kernel  metric 256 
2001:41d0:2:b353::/64 via :: dev sit10  proto kernel  metric 256 
2001:41d0:2:b300::/56 dev eth0  proto kernel  metric 256  expires 2590467sec
fe80::/64 dev eth0  proto kernel  metric 256 
fe80::/64 via :: dev sit10  proto kernel  metric 256 
ff00::/8 dev eth0  metric 256 
ff00::/8 dev sit10  metric 256 
default via fe80::5:73ff:fea0:0 dev eth0  metric 1024 
root@martineve:~# route -A inet6 
Kernel IPv6 routing table
Destination                    Next Hop                   Flag Met Ref Use If
::1/128                        ::                         Un   0   1   196 lo
2001:41d0:2:b353::/128         ::                         Un   0   1     0 lo
2001:41d0:2:b353::/128         ::                         Un   0   1     0 lo
2001:41d0:2:b353::1/128        ::                         Un   0   1   101 lo
2001:41d0:2:b353::3/128        ::                         Un   0   1     3 lo
2001:41d0:2:b353::10/128       ::                         U    1024 0     0 sit10
2001:41d0:2:b353::/64          ::                         U    256 0     0 eth0
2001:41d0:2:b353::/64          ::                         Un   256 0     0 sit10
2001:41d0:2:b300::/56          ::                         UAe  256 0     2 eth0
fe80::/128                     ::                         Un   0   1     0 lo
fe80::a08:1/128                ::                         Un   0   1     0 lo
fe80::e269:95ff:fe72:8577/128  ::                         Un   0   1    49 lo
fe80::/64                      ::                         U    256 0     0 eth0
fe80::/64                      ::                         Un   256 0     0 sit10
ff00::/8                       ::                         U    256 0     0 eth0
ff00::/8                       ::                         U    256 0     0 sit10
::/0                           fe80::5:73ff:fea0:0        UG   1024 0     0 eth0
::/0                           ::                         !n   -1  1   113 lo

O servidor tem conectividade geral IPv6:

PING aaaa.test-ipv6.com(jason-fesler.f0-8.switch2a.fmt.he.net) 56 data bytes
64 bytes from jason-fesler.f0-8.switch2a.fmt.he.net: icmp_seq=1 ttl=53 time=164 ms

O cliente não:

PING aaaa.test-ipv6.com(jason-fesler.f0-8.switch2a.fmt.he.net) 56 data bytes
^C
--- aaaa.test-ipv6.com ping statistics ---
3 packets transmitted, 0 received, 100% packet loss, time 2015ms

Eu tentei isso sem sucesso:

root@martineve:~# cat /proc/sys/net/ipv6/conf/all/forwarding 
1

O que preciso fazer para permitir que o cliente acesse o grande mundo externo do IPv6?

    
por Martin Eve 19.01.2012 / 21:21

3 respostas

1

Ok, a resposta final foi no link original que eu tinha!

Quando você está fazendo esse tipo de roteamento, você precisa especificar "ip add neigh proxy [ip] eth0".

    
por 22.01.2012 / 18:48
1

Você tem muitas rotas com a mesma prioridade e dispositivos diferentes. Você está encaminhando sua / 64 para a eth0, o que pode causar problemas. Geralmente, é mais fácil ter diferentes / 64s para diferentes sub-redes.

Verifique a conectividade IPv6 na sua rede antes de tentar entrar em contato. O cliente e o host podem pingar uns aos outros por meio do IPv6. Isso deve estar funcionando antes que você possa rotear.

Alguns provedores dedicam um / 64 para roteamento entre seu servidor e sua rede. Essas conexões podem suportar apenas um endereço que deve ser alocado para sua interface externa. Eles também devem fornecer / 48, / 56 ou / 60 para suas necessidades de rede interna.

EDIT: Eu revisei seu roteamento novamente e comparei-o ao meu. Sugiro que você verifique sua saída ip -6 neigh . No meu caso, tenho um link ponto a ponto IPv6 sobre um túnel e ele não mostra meu roteador externo. Parece que você tem um external adderess 2001: 41d0: 2: b353 :: / 64 para o roteamento externo e 2001: 41d0: 2: b300 :: / 56 para a rede interna. Tente usar 2001: 41d0: 2: b300 :: / 64 para o bloco de rede interna de roteadores e 2001: 41d0: 2: b301 :: / 64 para o bloco de servidores remotos. Tente uma configuração como esta.

Servidor: (sit0 - 2001: 41d0: 2: b300 :: 2)

default dev eth0   metric 1024  mtu 1480 advmss 1420 hoplimit 0
2000::/3  dev eth0  metric 1024  mtu 1480 advmss 1420 hoplimit 0
2001:41d0:2:b301::/64  via 2001:41d0:2:b301::3 dev sit0  proto kernel  metric 256  mtu 1480 advmss 1420 hoplimit 0

Cliente: (sit1 - 2001: 41d0: 2: b301 :: 3)

default dev sit1   metric 1024  mtu 1480 advmss 1420 hoplimit 0
2000::/3  dev via 2001:41d0:2:b3010::2sit1 metric 1024  mtu 1480 advmss 1420 hoplimit 0
    
por 20.01.2012 / 03:15
0

Para expandir a auto-resposta dos OPs.

O problema é que seus pacotes estão chegando à Internet, mas as respostas não estão voltando.

O seu provedor de hospedagem lhe deu um bloco "on-link" (provavelmente um / 64 embora não tenhamos certeza disso). Você pode usar qualquer endereço do seu bloco, mas para fazer isso, o servidor deve responder às solicitações de descoberta do vizinho para esse endereço. Seu servidor responderá às solicitações de descoberta do vizinho para 2001: 41d0: 2: b353 :: 1 porque está associado à interface do seu provedor, mas não responderá às solicitações de descoberta do vizinho para 2001: 41d0: 2: b353 :: 10 . Portanto, o roteador do seu provedor de hospedagem não sabe para onde enviar as respostas aos pacotes enviados pelo seu cliente.

Existem algumas soluções possíveis para isso.

Um é usar o comando "ip -6 neigh add proxy 2001: 41d0: 2: b353 :: 10 eth0" para informar explicitamente ao kernel que você deseja que ele responda às solicitações de descoberta vizinhas para 2001: 41d0: 2: b353 :: 10 recebido em eth0. Esta é uma solução hacky mas, infelizmente, com alguns fornecedores, é a sua única opção.

O outro é pedir ao provedor de hospedagem para fornecer um bloco "roteado". Com um bloco roteado em vez de fazer a descoberta do vizinho separadamente para cada endereço no seu bloco, eles tratarão seu servidor como um roteador.

A possibilidade final é fazer o mascaramento com o ip6tables. Essa é uma opção ainda mais difícil do que a primeira.

P.S. O openvpn agora pode transportar o tráfego ipv6 diretamente, você não precisa mais fazer um túnel dentro de um túnel.

    
por 09.02.2017 / 11:59