Обновление dynamic DNS через скрипты

Многие провайдеры для предоставления услуг доступа в сеть Интернет выделяют клиентам динамические ip-адреса. Это делается с целью оптимизации распределения ip- адресов, выделенных провайдеру от преждевременного окончания пула ip-адресов. Но для клиентов, получающих динамический ip-адрес, это может вызвать проблемы. Проблемы эти возникают у тех пользователей, которым необходимо получать доступ к своей домашней сети из вне.

Необходимость определять свой ip-адрес решается услугой dynamic DNS. Для управления этой услугой имеется API.

 

ОС Linux

Для обновления данных dynamic DNS из ОС linux используется следующий скрипт:

#!/usr/bin/perl -w

use LWP::Simple;

# variables

my $uid = 'login'; # set this to your changeip.com userid

my $pwd = 'password'; # set this to your changeip.com password

my $hostname = 'test.change-dns.ru'; # set this to your hostname

my $logfile = '/var/log/updatedns.log';

my $pppip = get_pppip();

my $dns_entry = get_dns();

 

# if we already match the dns record, exit now

if ($pppip eq $dns_entry) {

exit(0);

};

 

# update the dns

update_dns();

## ##

## END MAIN PROGRAM ##

## ##

# subroutines

sub get_dns

{

my $aaa;my $bbb; my $ccc; my $ddd;

my $dnsstr = `host $hostname`;

( $dnsstr =~ /(\S+)\n?$/ ) or die "get_dns failed\n";

($aaa,$bbb,$ccc,$ddd) = split (/\ /,$dnsstr);

($aaa,$bbb) = split(/\n/,$ddd);

return $aaa;

}

sub get_pppip

{

my $url='https://www.dnskit.ru/api?myip';

$netip = get $url;

die "Couldn't get $url" unless defined $netip;

return $netip;

}

sub update_dns

{

$getstring="/usr/bin/wget --no-check-certificate -O $logfile 'http://dnskit.ru/api?domain=$hostname&u=$uid&p=$pwd' ";

system $getstring;

exit(0);

}

 

Для его применения необходимо указать ваш логин, пароль и адрес, для которого вы хотите делать изменения. Дополнительно необходимо установить выполнение скрипта по расписанию. Для этого в crontab нужно добавить следующую строчку:

*/1 * * * * root /root/update-script.pl

Скачать скрипт можно тут.

 

ОС Windows

В операционных системах семейства Windows для этих же целей надо скачать программу wget (http://gnuwin32.sourceforge.net/packages/wget.htm) и настроить выполнение по расписанию.

Открываем планировщик заданий.

В окне списка задач нажимаем “Создать задачу”.

В открывшемся окне заполняем данные: ИМЯ, Описание. Ставим галочку “Скрытая задача”.

Переходим на вкладку “Триггеры” и выбираем кнопку “Создать...”

В появившемся окне выбираем Начать задачу: “При входе в систему”, ставим галочку “Повторять задачу каждые” и выбираем время “5 мин.”

В поле “В течение” выбираем “Бесконечно”.

После заполнения окно должно выглядеть как на картинке. Если все нормально, нажимаем “ОК”.

Далее переходим на вкладку “Действия”

И выбираем кнопку “Создать...”

В поле “Действие” выбираем “Запуск программы”

В поле “Программа или сценарий” вписываем следующую строчку:

c:\wget\wget.exe --no-check-certificate -O c:\dnskit.log 'http://dnskit.ru/api?domain=myhost.dnskit.ru&u=ЛОГИН&p=ПАРОЛЬ'
Данные логина, пароля и домена вписываем свои.

Нажимаем на кнопку “ОК”

Выведется окно, в котором необходимо дать согласие.

 После этого нажимаем ОК и сохраняем задание.

Для того, что бы оно начало выполняться, надо либо перезагрузить компьютер, либо выйти из текущего сеанса и зайти снова.

Категория: