Este tutorial é destinado a quem possui tanto IPv4 quanto IPv6 fornecidos pelo seu provedor de internet (ISP), mas enfrenta dificuldades para configurar o WireGuard utilizando IPv4 devido ao uso de CGNAT (Carrier-Grade NAT), que impede a comunicação direta com o roteador. Se o seu IPv4 está por trás de um CGNAT, uma solução eficaz é configurar o WireGuard para operar exclusivamente com IPv6. Neste guia, vamos explicar passo a passo como realizar essa configuração no OpenWrt, utilizando um endereço IPv6 dinâmico para estabelecer uma conexão VPN estável e segura.
Tutorial Completo para Configuração de DDNS com Dynv6 no OpenWrt
1. Introdução
O objetivo deste tutorial é configurar o Dynamic DNS (DDNS) no OpenWrt utilizando o serviço Dynv6 para atualizar automaticamente o seu endereço IPv6 dinâmico na internet. Esta configuração é útil para permitir o acesso remoto ao seu roteador OpenWrt ou a dispositivos na sua rede local, mesmo que o seu endereço IP seja alterado pelo provedor de serviços de internet (ISP).
2. Pré-requisitos
- Um roteador com OpenWrt instalado.
- Acesso ao terminal do OpenWrt via SSH.
- Uma conta no Dynv6 com um nome de domínio registrado.
- O pacote 'luci-app-ddns' e suas dependências instalados.
3. Passo a Passo da Configuração
3.1 Instalação dos Pacotes Necessários
Acesse o terminal do OpenWrt via SSH.
Atualize a lista de pacotes:
opkg update
Instale os pacotes necessários:
opkg install luci-app-ddns ddns-scripts ddns-scripts-nsupdate drill
3.2 Modificação do Script update_nsupdate.sh
Abra o arquivo de script para edição:
vi /usr/lib/ddns/update_nsupdate.sh
Substitua o conteúdo do arquivo pelo script modificado abaixo:
#!/bin/sh
#
#.Distributed under the terms of the GNU General Public License (GPL) version 2.0
#
# The script directly updates a PowerDNS (or maybe bind server) via nsupdate from bind-client package.
#.based on github request #957 by Jan Riechers
#.2015 Christian Schoenebeck
#
# This script is parsed by dynamic_dns_functions.sh inside send_update() function
#
# using following options from /etc/config/ddns
# option username - keyname
# option password - shared secret (base64 encoded)
# option domain - full qualified domain to update
# option dns_server - DNS server to update
#
# variable __IP already defined with the ip-address to use for update
#
local __TTL=600 #.preset DNS TTL (in seconds)
local __RRTYPE __PW __TCP
local __PROG=$(command -v nsupdate) # BIND nsupdate ?
[ -z "$__PROG" ] && __PROG=$(command -v knsupdate) # Knot nsupdate ?
local __DATFILE=/tmp/nsupdate.dat
local __ERRFILE=/tmp/nsupdate.err
[ -z "$__PROG" ] && write_log 14 "'nsupdate' or 'knsupdate' not installed !"
[ -z "$username" ] && write_log 14 "Service section not configured correctly! Missing 'username'"
[ -z "$password" ] && write_log 14 "Service section not configured correctly! Missing 'password'"
[ -z "$dns_server" ] && write_log 14 "Service section not configured correctly! Missing 'dns_server'"
[ $use_ipv6 -ne 0 ] && __RRTYPE="AAAA" || __RRTYPE="A"
[ $force_dnstcp -ne 0 ] && __TCP="-v" || __TCP=""
# create command file
cat >$DATFILE <<-EOF
server $dns_server
zone $domain
key $username $password
update del $lookup_host $__RRTYPE
update add $lookup_host $__TTL $__RRTYPE $__IP
show
send
answer
quit
EOF
$__PROG -d $__TCP $DATFILE >$ERRFILE 2>&1
# nsupdate always return success
write_log 7 "(k)nsupdate reports:${N}$(cat $ERRFILE)"
return 0
Salve e saia do editor:
No vi, pressione Esc
, digite :wq
e pressione Enter
.
Defina as permissões para o script:
chmod +x /usr/lib/ddns/update_nsupdate.sh
3.3 Criação do Script para Obter o Endereço IPv6 WAN
Execute o comando abaixo para criar o diretório necessário:
mkdir -p /etc/ddns
Crie o arquivo do script /etc/ddns/getwanip
:
touch /etc/ddns/getwanip
Abra o arquivo para edição:
vi /etc/ddns/getwanip
Adicione o conteúdo abaixo ao script:
#!/bin/sh
. /lib/functions/network.sh
network_flush_cache
network_find_wan6 NET_IF6
network_get_ipaddr6 NET_ADDR6 "${NET_IF6}"
echo "${NET_ADDR6}"
Salve e saia do editor:
No vi, pressione Esc
, digite :wq
e pressione Enter
.
Torne o script executável:
chmod a+x /etc/ddns/getwanip
3.4 Configuração do DDNS no OpenWrt
Acesse o arquivo de configuração do DDNS:
vi /etc/config/ddns
Adicione a seguinte configuração para o serviço Dynv6:
config service 'dynv6_ipv6_nsupdate'
option use_ipv6 '1'
option service_name 'bind-nsupdate'
option ip_source 'script'
option ip_script '/etc/ddns/getwanip'
option interface 'wan'
option use_syslog '2'
option check_unit 'minutes'
option force_unit 'minutes'
option retry_unit 'seconds'
option domain 'example.dynv6.net' #coloque seudominio.dynv6.net
option username 'hmac-sha256:tsig-12345.dynv6.com' #Gere uma Key hmac-sha256 no dynv6
option password 'ABCDEBase64...=='# Gere o password hmac-sha256 no dynv6
option enabled '1'
option lookup_host 'openwrt.example.dynv6.net' #coloque seudominio.dynv6.net
option dns_server 'ns1.dynv6.com'
Salve e saia do editor:
No vi, pressione Esc
, digite :wq
e pressione Enter
.
3.5 Reiniciar o Serviço DDNS
Reinicie o serviço DDNS para aplicar as novas configurações:
/etc/init.d/ddns restart
4. Verificação
Verifique o status do serviço DDNS:
logread -e ddns
Teste a resolução do domínio:
Tente pingar o domínio configurado de fora da sua rede para garantir que o endereço IPv6 está sendo atualizado corretamente:
ping6 seudominio.dns.army
5. Conclusão
Agora seu roteador OpenWrt está configurado para atualizar dinamicamente o endereço IPv6 para o serviço Dynv6 sempre que houver uma mudança no IP. Você deve ser capaz de acessar seu roteador remotamente usando o domínio configurado.