1

Наша организация использует маршрутизаторы Billion 7800 по ADSL с отказоустойчивостью USB 4G/LTE. В то время как в ADSL наш dynDNS регистрирует правильный публичный IP-адрес. Когда он переключается на 4G, USB-ключ не предоставляет Billion общедоступный IP-адрес, а IP-адрес NAT, равный 192.168.8.100. Поскольку динамические DNS-приложения / учетные данные хранятся на Billion, Billion обновляет публичную запись с адресом 192.168.8.100. Это не идеально.

Мы бы хотели, чтобы запись была публичным IP-адресом. Простой Google может вернуть фактический публичный IP-адрес. Существуют ли какие-либо поставщики динамических DNS, которые могут извлечь фактический публичный IP-адрес из запроса на регистрацию и использовать вместо этого этот публичный IP-адрес для записи A?

Наш текущий ответ провайдера - просто «перенастроить вашу сеть, чтобы маршрутизатор мог видеть общедоступный IP-адрес« ИЛИ »вместо этого использовать клиентский агент / приложение Windows для выполнения регистрации». Это невозможно из-за аппаратных ограничений и ограничений по установке программного обеспечения.

Я не вижу другого выхода, кроме как использовать другого провайдера, который может динамически определять общедоступный IP-адрес, с которого поступает запрос, и использовать этот IP-адрес.

2 ответа2

1

Это выглядит тривиальным вопросом. Вы также можете:

  • установите динамическое обновление DNS, которое предоставляет большинство служб (например, для dynDNS) на любой из ваших машин в сети

  • периодически запускайте запрос (curl), который обновит значение вашего публичного IP (инструкции для dynDNS)

0

Один из способов синхронизировать ваш «динамический IP-адрес» с вашим DNS-сервером - использовать такие службы, как Dyn или NoIP, которые предоставляют свои собственные доменные имена / доменные имена для покупки.

Однако если у вас есть собственное доменное имя, которое вы хотели бы использовать, вы можете использовать службы DNS от NameSilo (http://www.namesilo.com) в качестве вашего DNS-провайдера и скрипт Windows PowerShill ниже вместе с запланированным задача для репликации службы Dyn/NoIP.

Предполагая, что вы используете Windows, вот простой сценарий, который вы можете "запланировать" с помощью Task Scheduler для запуска при запуске / входе в систему, а затем перезапускать каждые 6 часов (таким образом, максимальное время простоя из-за изменения IP-адреса составляет 6 часов).

Сохраните приведенный ниже скрипт в файл с именем 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"
}

Затем сохраните скрипт ниже в файле с именем UpdateDDNSIPv4.bat .

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

Храните оба файла в одном каталоге. UpdateDDNSIPv4.bat - это пакетный файл, который должен вызываться планировщиком задач в вашей повторяющейся задаче.

Пару вещей, на которые стоит обратить внимание, вам нужно будет войти в свою учетную запись NameSilo и в разделе «Менеджер API» -> «Сгенерировать ключ API», который необходимо ввести в приведенном выше пакетном сценарии для замены <NameSilo_API_Key> . Этот сценарий можно использовать для обновления записей DNS A для основного домена (например, somedomain.com), а также для ваших поддоменов (например, subdomain). Вы можете создать одну строку для каждого домена / субдомена, который вы хотите обновить.

Этот сценарий автоматически найдет ваш «общедоступный IP-адрес», а затем обновит ваши DNS-записи NameSilo.

Вы можете найти BASH-эквивалент этого скрипта здесь: https://github.com/pztop/namesilo_ddns

Эквивалент скрипта на Python также можно найти по адресу:https://github.com/rbenji/DynamicDNS-for-NameSilo.

Этот сценарий был взят и настроен с http://www.forkrobotics.com/2014/10/dynamic-dns-with-namesilo-and-powershell/

Надеюсь это поможет

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .