Embora o BIND tenha suporte DDNS, é um pouco difícil de configurar, já que você precisa criar chaves de autenticação porque as atualizações parecem ser tratadas pelo próprio protocolo DNS, para permitir que as atualizações venham de uma máquina diferente para essa rodando o servidor BIND, então isso obviamente requer um mecanismo de autenticação seguro.
Eu mesmo seguiria esse caminho, mas acabaria tendo meu domínio hospedado no serviço Route53 da Amazon. Eles têm uma API para atualizar registros que podem ser usados para IPs dinâmicos. Defino um TTL baixo para essa entrada e tenho um cronjob na minha máquina que procura o meu endereço IP atual e atualiza o registro Route53 se o meu IP tiver mudado.
O custo no momento da escrita é de cerca de US $ 0,90 / mês, por isso não é gratuito, mas isso parece bastante razoável para o meu caso de uso, considerando a redundância e o failover embutidos no serviço. O restante das minhas entradas de DNS também estão lá porque o custo é por zona, independentemente de quantas entradas você realmente colocou na zona.
Eu uso as ferramentas de linha de comando aws
junto com um script como este (executado a partir do cron uma vez por hora) para atualizar o registro Route53 quando meu IP muda:
#!/bin/sh
function updateDNS
{
TARGET_ZONEID="$1"
TARGET_FQDN="$2"
IP="$3"
CUR_IP="$4"
TYPE="$5"
if [ "$IP" != "$CUR_IP" ]; then
echo '{ "Comment": "DDNS update", "Changes":[ { "Action":"UPSERT", "ResourceRecordSet":{ "ResourceRecords": [ { "Value":"'"$IP"'" } ], "Name": "'"$TARGET_FQDN"'", "Type": "'"$TYPE"'", "TTL": 60} } ] }' |
aws route53 change-resource-record-sets --hosted-zone-id "$TARGET_ZONEID" --change-batch file:///dev/stdin > /dev/null
fi
}
TARGET_ZONEID="ABC123"
TARGET_FQDN="homeip.example.com."
IP='dig +short myip.opendns.com @resolver1.opendns.com'
CUR_IP='dig +short "$TARGET_FQDN"'
TYPE="A"
updateDNS "$TARGET_ZONEID" "$TARGET_FQDN" "$IP" "$CUR_IP" "$TYPE"
# Can add more updateDNS calls to do other hosts, AAAA records, etc.
Eu corro este script de alguns hosts na rede para que, se um deles estiver inativo, o IP ainda seja atualizado.