Tutorial Completo da Configuração do Script DDNS do Openwrt de Ipv6 Dinâmico

Tutorial Completo para Configuração de DDNS com Dynv6 no OpenWrt

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.

Postar um comentário

Postagem Anterior Próxima Postagem