Problemas de roteamento com o IPv6 sobre o OpenVPN

1

Estou tentando configurar um servidor OpenVPN para permitir que os clientes usem sua sub-rede IPv6. O servidor está executando o Debian Wheezy e o cliente é o OS X 10.9.5. Aqui está a configuração do servidor:

port 1194
proto udp
dev tun
tun-ipv6
ca ca.crt
cert server.crt
key server.key  # This file should be kept secret
dh dh1024.pem
server 10.100.100.0 255.255.255.0
ifconfig-pool-persist ipp.txt
keepalive 10 120
comp-lzo
persist-key
persist-tun
status openvpn-status.log
verb 3
tls-auth ta.key 0
cipher DES-EDE3-CBC
push "redirect-gateway def1"
push "dhcp-option DNS 8.8.8.8"
server-ipv6 MY:PUBLIC:IPV6:SUBNET::/64
push "route-ipv6 0::/0"

E aqui está a configuração do cliente:

client
dev tun
tun-ipv6
proto udp
remote server.address 1194
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
cert client.crt
key client.key
comp-lzo
verb 3
tls-auth ta.key 1
cipher DES-EDE3-CBC

A conectividade IPv4 funciona perfeitamente, mas existem alguns problemas estranhos com o IPv6. O cliente obtém um endereço IPv6 quando se conecta, mas a única coisa que responde a pings (ou aceita qualquer pacote IPv6) é o próprio servidor. Parece que os pacotes que devem ir para a Internet global não são roteados através da interface apropriada no servidor, que é eth0 no meu caso. O endereço IPv6 é atribuído a eth0 estaticamente da sub-rede fornecida pelo meu provedor de hospedagem e tudo funciona no servidor; por exemplo, posso pingar ipv6.google.com a partir dele. As opções net.ipv6.conf.default.forwarding e net.ipv6.conf.all.forwarding sysctl também estão ativadas.

    
por Grishka 30.11.2016 / 21:01

2 respostas

0

Então, eu descobri que o roteador upstream não vai simplesmente simplesmente encaminhar incondicionalmente pacotes para minha sub-rede toda alocada para o meu servidor. Para saber como encaminhá-los, você precisa informar isso explicitamente por meio do protocolo NDP. Isso deve ser feito quando um cliente se conecta e recebe um endereço IPv6. Então, resumindo, aqui está como eu consertei. Adicione isto à configuração do OpenVPN no servidor:

script-security 3
client-connect /etc/openvpn/client-connect.sh

Crie um script chamado /etc/openvpn/client-connect.sh com o seguinte conteúdo:

#!/bin/sh
ip -6 neigh add proxy $ifconfig_pool_remote_ip6 dev eth0

Reinicie o OpenVPN. Conecte-se ao servidor e aproveite sua própria parte do futuro da Internet.

    
por 30.12.2016 / 13:07
0

Eu tenho lutado com o mesmo problema e coincidentemente no Debian Wheezy também.

Existem duas opções que você pode ter perdido neste momento (no servidor VPN):

  1. Não há ip6tables de regras de encaminhamento
  2. Nenhuma rota IPv6 padrão

1. %código%

Assim como no IPv4, você precisa de regras explícitas de encaminhamento de firewall, isso funcionou para mim:

# ip6tables -A FORWARD -i eth0 -o tun0 -m state --state RELATED,ESTABLISHED -j ACCEPT
# ip6tables -A FORWARD -i tun0 -o eth0 -j ACCEPT

(ajuste as interfaces adequadamente, você pode querer adicionar ip6tables à segunda regra para um encaminhamento mais explícito).

2. rota padrão

Esse foi o problema do meu lado; Levei cerca de dois dias até que alguém me fizesse repensar minha configuração e descobri que perdi um efeito colateral essencial de -s VPN-IPv6-RANGE/SUBNET no sysctl.

Quando você define forwarding = 1 , a autoconfiguração de endereço dos anúncios de roteador é ignorada. Em outras palavras, quando sua rota net.ipv6.conf.all.forwarding = 1 é definida por autoconfiguração, essa rota é descartada rapidamente e você perde a conectividade IPv6 para seu servidor. Quando sua rota padrão agora é algo como default , provavelmente é esse o caso.

A solução para isso é adicionar uma rota padrão explícita por meio de default via fe80::... , como:

iface eth0 inet6 static
    address 2001:db8::2
    netmask 64
    gateway 2001:db8::1

Você pode verificar se sua configuração de VPN funciona (temporariamente) observando a tabela de roteamento IPv6 em seu servidor: /etc/network/interfaces e, quando estiver vazia, adicione a rota padrão com ip -6 route show default (ajuste seu intervalo local de acordo) . Em seguida, verifique se o seu cliente VPN pode executar ping em algum endereço IPv6 externo.

Configuração do OpenVPN

Uma pequena diferença de configuração do meu lado é:

  • ip -6 route add default via 2001:db8::1 ( push "route-ipv6 2000::/3" até 2000:: )

em vez de

  • 3fff:ffff...

mas essas rotas são equivalentes no momento.

    
por 29.12.2016 / 19:18