Roteamento IPv6 sobre o OpenVPN

4

Tentando aprender como o IPv6 funciona com o OpenVPN, então eu quis configurar o esquema a seguir.

Eu tenho um servidor VPS (Ubuntu), que recebeu uma sub-rede / 48.

ISP ipv6 gateway is XXXX:XXXX:XXXX::1
Server ipv6 address is XXXX:XXXX:XXXX:39::1

A idéia é que quaisquer clientes conectados ao servidor obtenham um endereço IP na sub-rede XXXX: XXXX: XXXX: 39: 2 :: / 64.

O arquivo de configuração do servidor é baseado na configuração de amostra do OpenVPN com as seguintes adições:

dev tun
tun-ipv6
server-ipv6 XXXX:XXXX:XXXX:39:2::/64
push "route-ipv6 XXXX:XXXX:XXXX:39::/48"

Reiniciar o servidor OpenVPN não apresentou problemas.

O servidor é atribuído após os endereços IP:

eth0: XXXX:XXXX:XXXX:39::1/48
tun0: XXXX:XXXX:XXXX:39::2/64

O cliente é atribuído:

Toque em OpenVPN: XXXX: XXXX: XXXX: 39: 2: 0: 1: 0, e posso fazer o ping XXXX: XXXX: XXXX: 39 :: 1 bem. No entanto, o ping do gateway ISP do cliente faz o tempo limite da conexão.

Eu posso pingar o gateway IPV6 do servidor.

Eu permiti tráfego de XXXX: XXXX: XXXX: 39: 2 :: / 64 no Firewall do Ubuntu.

O que estou perdendo?

Devo mencionar servidor está executando o OpenVPN versão 2.2.1 - é que a razão para a queixa?

    
por Lasse Michael Mølgaard 02.06.2013 / 17:50

1 resposta

0

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. : -)

    
por 08.09.2017 / 11:37