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