Обновление 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=ПАРОЛЬ'
Данные логина, пароля и домена вписываем свои.
Нажимаем на кнопку “ОК”
Выведется окно, в котором необходимо дать согласие.
После этого нажимаем ОК и сохраняем задание.
Для того, что бы оно начало выполняться, надо либо перезагрузить компьютер, либо выйти из текущего сеанса и зайти снова.