Você precisa dizer ao seu roteador para usar seu servidor para esta sub-rede VPN: a solução correta para o seu problema é adicionar uma rota no roteador para a sub-rede OpenVPN.
Se você não puder fazer isso porque não pode tocar no roteador, outra solução é configurar um proxy NDP para os clientes no link eth0
.
Como você está usando um VPS, provavelmente não é possível adicionar rotas ao roteador: você provavelmente precisará usar a segunda solução.
Adicionar uma rota para a sub-rede
A solução correta para o seu problema é dizer ao roteador que a sub-rede VPN deve ser roteada através do servidor OpenVPN (isto é para Linux):
ip route add 001:db8::111:800::/112 via 2001:db8::111:100:100
Você precisa ativar o encaminhamento IPv6 no servidor:
sysctl sys.net.ipv6.conf.all.forwarding=1
Proxy do NDP
Parece que o roteador está configurado para enviar todo o seu intervalo IPv6 no link eth0
: você pode configurar um proxy NDP.
Você deve ver solicitações NDP na interface eth0
do servidor para sua sub-rede OpenVPN ao tentar acessar o resto da Internet a partir do cliente.
Você também precisa ativar o encaminhamento IPv6 no servidor e proxy NDP:
sysctl -w net.ipv6.conf.all.proxy_ndp = 1
proxy NDP de sub-rede
O kernel do Linux não permite adicionar um proxy NDP para uma sub-rede, mas apenas para IPs individuais. Você pode usar um daemon (como ndppd para configurar um proxy NDP para uma sub-rede inteira (nunca usei).
Por proxy IP NDP
Outra solução é adicionar um proxy NDP para cada IPv6 da sub-rede da VPN:
for i in $(seq 0 65535) ; do
ip neigh add proxy 2001:db8::111:800:$(printf %x $i) dev tun0
done
Isso deve funcionar, pois você tem um número compatível de IPs na sub-rede OpenVPN.
Proxy dinâmico do NDP com ganchos do OpenVPN
Você deve ser capaz de usar os ganchos do OpenVPN para adicionar o proxy do NDP dinamicamente.
Adicione o hook no conf do servidor OpenVPN:
learn-address /etc/openvpn/learn-address
Com o seguinte script learn-address
:
#!/bin/sh
action="$1"
addr="$2"
case "$action" in
add | update)
ip neigh replace proxy "$addr" dev tun0
;;
delete)
ip neigh del proxy "$addr" dev tun0
;;
esac
Veja este tópico .
Resposta curta
for i in $(seq 0 65535) ; do
ip neigh add proxy 2001:db8::111:800:$(printf %x $i) dev tun0
done