Usando DNS dinâmico com um IP NAT

1

Nossa organização usa os roteadores Billion 7800 em ADSL com failover USB 4G / LTE. Enquanto no ADSL nosso dynDNS registra o endereço IP público correto. Quando falha no 4G, o dongle USB não fornece ao Billion o IP público, mas com o IP NAT de 192.168.8.100. À medida que as credenciais / aplicativos de DNS dinâmicos são armazenados no Billion the Billion, o registro público é atualizado com o endereço 192.168.8.100. Isso não é ideal.

Gostaríamos de uma maneira de o registro ser o endereço IP público. Um simples google pode retornar o endereço IP público real. Há algum provedor de DNS dinâmico que possa buscar o IP público real da solicitação de registro e usar esse IP público para o registro A?

Nossa resposta dos provedores atuais é simplesmente "reconfigurar sua rede para que o roteador possa ver o IP público 'OU' usar o agente / aplicativo cliente do Windows para executar o registro". Nenhum desses é possível devido a limitações de hardware e restrições de instalação de software.

Não vejo outra maneira de contornar isso do que usar outro provedor que tenha a capacidade de determinar dinamicamente o IP público de onde a solicitação está vindo e usar esse IP.

    
por Lexdon 17.08.2016 / 03:47

2 respostas

1

Isto parece uma questão trivial. Você pode:

  • instale um atualizador de DNS dinâmico que a maioria dos serviços forneça ( exemplo para dynDNS ) em qualquer uma das suas máquinas dentro da rede

  • executa periodicamente uma consulta ( curl ) que atualiza o valor do seu IP público ( instruções para dynDNS )

por 17.08.2016 / 04:26
0

Uma maneira de manter seu "IP dinâmico" em sincronia com seu DNS é usando um serviço como o Dyn ou o NoIP, que fornece nomes de domínio / nomes de domínio proprietários para compra.

No entanto, se você tiver seu próprio nome de domínio personalizado que gostaria de usar, poderá usar os serviços de DNS do NameSilo ( link ) como seu provedor de DNS e o script windows powershell abaixo, juntamente com uma tarefa agendada para replicar o serviço Dyn / NoIP.

Supondo que você esteja executando o Windows, aqui está um script simples que você pode "programar" usando o Agendador de Tarefas para ser executado no StartUp / Logon e reexecutar a cada 6 horas (dessa forma, o tempo máximo de inatividade devido a uma alteração de endereço IP é de 6 horas ).

Salve o script abaixo em um arquivo chamado NameSiloDDNS.ps1

# NameSilo API Dynamic DNS
#Variables
param([string]$APIkey=$(throw "APIKey is required"), [string]$domain=$(throw "Domain is required"), [string]$record)


###Code - Do not edit below this line
# Gather data about the DNS entries in the domain
$listdomains = Invoke-RestMethod -Uri "https://www.namesilo.com/apibatch/dnsListRecords?version=1&type=xml&key=$APIkey&domain=$domain"
$CurrentIP = $listdomains.namesilo.request.ip
if ($record) {
    $RecordIP = ($listdomains.namesilo.reply.resource_record|where {$_.host -eq "$record.$domain" -and $_.type -eq "A"}).value
    $RecordID = ($listdomains.namesilo.reply.resource_record|where {$_.host -eq "$record.$domain" -and $_.type -eq "A"}).record_id
} else {
    $RecordIP = ($listdomains.namesilo.reply.resource_record|where {$_.host -eq "$domain" -and $_.type -eq "A"}).value
    $RecordID = ($listdomains.namesilo.reply.resource_record|where {$_.host -eq "$domain" -and $_.type -eq "A"}).record_id
}
$listdomains.namesilo.reply
#Write-Host "CurrentIP $CurrentIP, RecordIP $RecordIP, RecordID $RecordID"

# If the current IP address is not the same as the one in the record it updates it
Write-Host "https://www.namesilo.com/apibatch/dnsUpdateRecord?version=1&type=xml&key=$APIkey&domain=$domain&rrid=$RecordID&rrhost=$record&rrvalue=$CurrentIP&rrttl=3600"
if ($CurrentIP -ne $RecordIP){
    if ($record) {
        Write-Host "Updating $record.$domain with IP $CurrentIP"
    } else {
        Write-Host "Updating $domain with IP $CurrentIP"
    }
    $update = Invoke-RestMethod -Uri "https://www.namesilo.com/apibatch/dnsUpdateRecord?version=1&type=xml&key=$APIkey&domain=$domain&rrid=$RecordID&rrhost=$record&rrvalue=$CurrentIP&rrttl=3600"
    $update.namesilo.reply
} else {
    Write-Host "No need to update $record.$domain, IP $CurrentIP upto date"
}

Em seguida, salve o script abaixo em um arquivo chamado UpdateDDNSIPv4.bat .

PowerShell -ExecutionPolicy Bypass .\NameSiloDDNS.ps1 <NameSilo_API_Key> somedomain.com
PowerShell -ExecutionPolicy Bypass .\NameSiloDDNS.ps1 <NameSilo_API_Key> somedomain.com subdomain

Mantenha os dois arquivos no mesmo diretório. UpdateDDNSIPv4.bat é o arquivo batch que deve ser chamado pelo Agendador de Tarefas em sua tarefa recorrente.

Algumas coisas a serem observadas, você precisará fazer login na sua conta NameSilo e no Gerenciador de APIs - > Gere uma chave de API que você precisa inserir no script de lote acima para substituir <NameSilo_API_Key> . Esse script pode ser usado para atualizar seus registros de A DNS para o domínio principal (por exemplo, somedomain.com ) e também para seus subdomínios (por exemplo, subdomain ). Você pode criar uma linha para cada domínio / subdomínio que deseja atualizar.

Este script irá encontrar automaticamente o seu "Endereço IP Público" e atualizar seus registros DNS do NameSilo A.

Você pode encontrar um equivalente BASH deste script aqui: link

Um equivalente em Python de um script também pode ser encontrado em: link

Este script foi criado e personalizado a partir do link

Espero que isso ajude

    
por 10.06.2017 / 05:09