Como associar sub-rede IPv6 completa ao cliente OpenVPN

3

Eu estou tentando tunelar a conexão IPv6 do meu VPS usando o OpenVPN, porque meu provedor não suporta IPv6. Meu VPS tem um subestendente / 64 IPv6. Estou usando meu roteador OpenWRT como cliente, portanto, quero que o servidor OpenVPN associe a sub-rede IPv6 completa, que o roteador pode usar. Minha configuração atual é assim:

port myport
proto udp
dev tun
tun-ipv6
ca /etc/openvpn/keys/ca.crt
cert /etc/openvpn/keys/server.crt
key /etc/openvpn/keys/server.key
dh /etc/openvpn/keys/dh2048.pem
server 192.168.200.0 255.255.255.0
server-ipv6 2a03:4000:6:b11b:2::/80
push "redirect-gateway def1 bypass-dhcp"
push "route-ipv6 2000::/3"
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"
duplicate-cn
keepalive 20 60
comp-lzo
persist-key
persist-tun
daemon
log-append /var/log/myvpn/openvpn.log
verb 3

Mas o servidor OpenVPN apenas designa o endereço IPv6 da seguinte forma: 2a03: 4000: 6: b11b: 2 :: 1000.

Então, minha pergunta é, como configurar o servidor OpenVPN para atribuir uma sub-rede IPv6 completa ao cliente?

    
por Josef Miegl 25.08.2016 / 23:13

1 resposta

1

Faça funcionar entre o cliente e o servidor

Primeiro, você precisa rotear os pacotes para o dispositivo TUN no servidor:

route-ipv6 $PREFIX

Além disso, você precisa pedir ao servidor OpenVPN para rotear este prefixo para o seu cliente:

# This one needs to be in a CCD file:
iroute-ipv6 $PREFIX

Com isso, o servidor deve ser capaz de rotear os pacotes desse prefixo para o cliente.

No cliente, você precisa configurar (manualmente) alguns endereços IPv6 desse prefixo. (No Linux: ip -6 addr $PREFIX dev tun0 ).

Neste ponto, você deve ser capaz de

  • execute um ping deste IP de cliente no servidor;

  • pingando o servidor deste IP do cliente.

Encaminhe este prefixo para a sub-rede

Se sua interface nativa no servidor for uma interface ponto a ponto , isso deve funcionar. O roteador já encaminha todos os pacotes para este prefixo para o seu servidor e o servidor os encaminhará para o seu cliente.

Se a sua interface nativa não for uma interface ponto a ponto , você está com problemas. Ao tentar encaminhar pacotes para um IP do seu prefixo, os hosts no link nativo tentarão encontrar o endereço MAC associado a esse endereço IPv6 usando o NDP. Seu servidor não irá responder a eles (porque este endereço IPv6 não é um de seus endereços). O cliente não está no mesmo link e não vê as solicitações do NDP (ele não poderia responder a elas de qualquer maneira). Então, ninguém irá responder a esses pedidos do NDP e o pacote não será enviado para o seu servidor.

Você pode:

  • Adicione uma rota no roteador para usar seu servidor como um gateway para este prefixo ( ip -6 route add $PREFIX via $ipv6_of_the_server ). No entanto, se este não for o seu roteador, talvez você não consiga fazer isso.

  • Adicione regras de proxy do NDP ( ip -neigh add proxy $some_ipv6 dev eth0 ). Isso fará com que o servidor responda às solicitações do NDP em nome do cliente. No entanto (pelo menos no Linux), você não pode adicionar uma sub-rede IPV6 inteira como um proxy NDP, então você deve adicionar uma regra para cada endereço IPv6 que você deseja delegar.

Usando um túnel TAP

Se sua interface nativa é Ethernet, outra possibilidade é usar um túnel OpenVPN TAP (baseado em Ethernet) em vez de um TUN (baseado em IP) e conectar o dispositivo de derivação virtual com o nativo. Dessa forma, o cliente estará no mesmo link que o roteador e poderá responder às solicitações do NDP.

    
por 26.08.2016 / 23:16

Tags