Какой dns сервер лучше прописать, когда стандартный не работает. Конфигурируем DHCP-серверы и настраиваем динамические обновления DNS

Иногда необходимо прописать DNS для компьютера с динамическим IP адресом. Простым путем для этого являются сервисы по типу dyndns , описанные в недавнем топике Связываем домен и динамический IP . Иногда такой подход работает достаточно плохо.

Напрмер в моей ситуации, провайдер иногда меняет мой публичный IP адрес. Это иногда случается обычно раз в несколько месяцев. Кроме того, мой домашний компьютер перезагружается крайне редко. За это время сервис dyndns, которым я пользовался ранее успевал пару раз прислать мне оповещения о неактивности с целью отключить «неиспользуемый» аккаунт. Перейти на вручную прописываемую DNS зону также не получается, потому что иногда адрес все же меняется. Причем обычно об этом узнаешь когда нужен доступ к домашнему компьютеру здесь и сейчас.

Для реализации описываемого метода понадобится сервер в интернете с DNS сервером bind на нем. А так же доменная зона, субдомен которой мы будем выделять для нашего компьютера. Описывается вариант с подключением Linux-компьютера к Linux-серверу. Для использования других операционных систем понадобится почитать мануалы и модифицировать некоторые шаги.

Итак:
1. Имеем установленный сервер bind9 с доменом server.org
2. Создаем зону client.server.org.zone:

$ORIGIN .
$TTL 10 ; 10 seconds
client.server.net IN SOA ns1.server.net. hostmaster.server.net. (
18 ; serial
10800 ; refresh (3 hours)
3600 ; retry (1 hour)
604800 ; expire (1 week)
10 ; minimum (10 seconds)
$TTL 3600 ; 1 hour
NS ns1.server.net.
NS ns2.server.net.
MX 10 client.server.net.

Здесь сервера ns1.server.net и ns2.server.net - DNS сервера для нашей зоны, client.server.net - адрес нашего домашнего компьютера

3. генерим ключи на клиенте:
client# cd /etc/namedb/keys
client# dnssec-keygen -b 512 -a HMAC-MD5 -v 2 -n HOST client.server.net.

4. Создаем фаил с ключем на сервере:
server# cd /var/named/chroot/etc
server# vim keys.conf:

Key client.server.net. {
algorithm "HMAC-MD5";
secret "omr5O5so/tZB5XeGuBBf42rrRJRQZB8I9f+uIIxxei8qm7AVgNBprxtcU+FQMzBvU/Y+nyM2xbs/C8kF3eJQUA==";
};

В данном случае использован симметричный ключ, что небезопасно: если кто-то имеет доступ к фаилу с ключами на вашем сервере, он может воспользоваться вашим ключем для изменения данных вашей зоны. В таком случае можно использовать несимметричный ключ.

Выставляем права доступа к фаилу с ключами:
server# chmod 640 keys.conf
server# chown root:named keys.conf

5. добавляем нашу зону в named.conf:
include "/etc/keys.conf"
zone "client.server.net" {
type master;
file "zones/client.server.net";
allow-update{
key client.server.net;
};
};

Здесь прописан параметр, который позволяет обновлять данные зоны. Вообще, почитав мануалы, можно найти опции этого параметра, позволяющие обновлять только одну запись в зоне для данного ключа. Т.е можно иметь зону с прописанными в ней поддоменами client1, client2, etc. которые будут авторизоваться с ключами key1, key2, etc.

6. Перезапускаем DNS сервер:
server# /etc/init.d/named reload

7. Создаем на клиенте скрипт, который будет обновлять данные зоны:
#!/bin/bash
IFACE="wlan0"
TTL=3600
SERVER=ns1.example.com
HOSTNAME=foo.example.com
ZONE=example.com
KEYFILE=/root/ddns-keys/Kfoo.example.com.+157+12345.private

New_ip_address=`ifconfig $IFACE | grep "inet addr:" | awk "{print $2}" | awk -F ":" "{print $2}"`
new_ip_address=${new_ip_address/ /}

Nsupdate -v -k $KEYFILE << EOF
server $SERVER
zone $ZONE
update delete $HOSTNAME A
update add $HOSTNAME $TTL A $new_ip_address
send
EOF

В начале скрипта описаны соответствующие параметры: интерфейс, имена сервера и зоны, местоположение фаила с ключем.

8. Осталось только настроить автозапуск/автоматическую смену адреса при смене DNS.
Мы это сделаем при помощи скрипта для NetworkManager:
создадим фаил /etc/NetworkManager/dispatcher.d/20-dyndns.sh:
#!/bin/sh

Iface=$1
state=$2

If [ "x$state" == "xup" ] ; then
/etc/namedb/ddns-update
elif [ "x$state" == "xdown" ]; then
true
fi

Сделаем его исполняемым и принадлежащим пользователю root.

Запускаем-проверяем-пользуемся.

Upd: Если не работает - проверяем (устанавливаем) на сервере права named на записть в папку в которой лежит фаил client.server.org.zone
named будет создавать там фаил client.server.org.zone.jnl

Использованы следующие материалы.

Еще одна статья, из серии расширенных настроек сетевой операционной системы EdgeOS, от компании Ubiquiti Networks, под управлением которой работают все маршрутизаторы EdgeRouter из серии EdgeMAX, от этого производителя, посвящена настройке динамического сервера доменных имен (Dynamic DNS).

Многие провайдеры, предоставляя свои услуги, предлагают клиентам динамический внешний IP адрес, который меняется при каждом подключении или время от времени. Но часто так бывает, что возникает необходимость доступа к маршрутизатору или домашнему серверу (хранилищу), расположенному в вашей локальной сети, из вне, например, когда вы в отъезде или отпуске. И как же тогда быть, если адрес, постоянно другой? Одно из самых распространённых решений этой задачи, это как раз, использование одного из сервисов динамических доменных имен.

И если говорить об операционной системе Ubiquiti EdgeOS, то она изначально, поддерживает работу с целым рядом таких сервисов. На момент написания данной статьи, все маршрутизаторы EdgeRouter, без дополнительных сценариев или дополнительного программного обеспечения, работают с:

  • Dnspark
  • DynDNS
  • NameCheap
  • Zoneedit
  • Dslreports
  • EasyDNS
  • Sitelutions

Некоторые из них, работают на коммерческой основе, но многие, предоставляют свои услуги бесплатно. Ниже мы рассмотрим вариант настройки динамического DNS, на примере сервиса Sitelutions.

И для начала, нам необходимо зарегистрироваться, перейдя по ссылке https://www.sitelutions.com/signup, и заполнив простенькую форму.

И после несложных настроек, DNS записи, мы получаем Hostname ID, и у нас уже есть имя учетной записи и пароль. Этих данных нам вполне достаточно для настройки динамической записи.

Все настройки маршрутизатора, связанные с динамическим DNS, производятся через командную строку (CLI). Для этого, мы должны сперва войти в режим конфигурирования, при помощи команды:

ubnt@ubnt:~$ configure

ubnt@ubnt#

А затем, выполнить ряд следующих команд:
set service dns dynamic interface eth0 service -dyndnsservice- host-name -host-
set service dns dynamic interface eth0 service -dyndnsservice- login -username-
set service dns dynamic interface eth0 service -dyndnsservice- password -password-

Только вместо "-" используем "<" и ">" в командах.

Где вместо eth0, мы должны указать интерфес, к которому подключен кабель провайдера. Причем, стоит обратить внимание на то, что если у нас подключение к провайдеру осуществляется посредством одного из тоннельных протоколов (PPPoE, PPTP, L2TP и т.д.), то мы должны указать именно его, например - pppoe0.

Вместо -dyndnsservice-, мы вписываем название сервиса динамического сервера доменных имен, у нас это sitelutions. -host- мы заменяем на имя нашего хоста или на Hostname ID, который мы получи при регистрации. Ну и само собой, -username- и -password-, мы подставляем свои логин и пароль.

Таким образом, в нашем конкретном случае, эти команды, будут выглядеть так:

ubnt@ubnt# set service dns dynamic interface eth1 service sitelutions host-name 11881117

ubnt@ubnt# set service dns dynamic interface eth1 service sitelutions login lanmarket@сайт

ubnt@ubnt# set service dns dynamic interface eth1 service sitelutions password CyyKay7TAG

ubnt@ubnt#

ubnt@ubnt# commit

ubnt@ubnt# save
Saving configuration to "/config/config.boot"...
Done

ubnt@ubnt#

После этого, раз в определенное время, система сама будет проверять IP адрес, и если он изменился, то отправлять новые данные на сервис Sitelutions. Таким образом, не зависимо от изменений IP, вы всегда сможете получить доступ из любого места планеты, где есть интернет, к вашему маршрутизатору или локальной сети.

Проверить работу динамического DNS можно, выполнив команду:

show dns dynamic status

http://www.dyndns.com/ .

Все самые необходимые пункты , которые вам необходимо пройти (нажать либо заполнить) будут отмечаться красной рамочкой и даны пояснения.

Итак зайдя на сайт dyndns.com видим стартовую картинку, затем если вы уже бывали тут и в дальнейшем после регистрации жмём на Sign In (Войти) . А сейчас жмём на Get a FREE Domain Name (Получить бесплатное доменное имя)

Выбираем 1й бесплатный вариант и жмём Sign up (Зарегистрироваться)

1. Вводим имя для вашего поддомена (тут как пример teamspeak3) и выбираем домен из списка возможных , который вам больше по душе.

2. Вводим текущий ip адрес вашего ПК или сервера, если вы делаете эту операцию непосредственно с него, то можно нажать на ссылку Your current location IP address is (Ваш текущий ип адрес) и система сама подставит его в поле Ip Address.

3. Жмём на Add to cart (Добавить в корзину)

Ошибки :

Please enter a valid IP address (Забыли ввести ваш ип)

This hostname already exists (Этот поддомен уже заняли)

Ещё раз проверяем имя для вашего домена и стоимость всего 0$ за данную услугу, а далее заполняем непосредственно регистрационные данные .

1. Username (Придумайте и запомните имя пользователя для данного сервиса)

2. Password (Придумайте и запомните пароль)

3. Confirm password (Ещё раз введите пароль)

4. Email (Введите ваш рабочий адрес эл. почты, на него придёт подтверждение регистрации)

5. Confirm email (Ещё раз введите ваш эл. адрес почты)

6. Enter the number from the above image (Введите цифры с картинки)

7. I agree (Обязательно поставьте галочку, что согласны с условиями сервиса, остальные галочки можно не ставить)

Затем нажмите Create Account (Создать учётную запись)

Теперь щёлкаем на My hosts (Мои домены), чтобы просмотреть и активировать наш созданный поддомен.

Кликаем на Checkout to Activate , чтобы активировать домен

Вся процедура стоит 0 у.е., просто щёлкаем Next (Далее)

Осталось нажать Activate Services (Активировать сервисы), для завершения активации вашего домена.

Теперь получаем сообщение об успешной активации , осталось немного: научиться просматривать список ваших доменов и скачать программу для ПК (Сервера), которая будет автоматически сообщать серверу об изменении ip адреса.

Иногда необходимо иметь доступ к своей машине, или машине клиента, которые имеют динамический IP адрес. Для этих целей существует масса сервисов, но бесплатных становится все меньше и меньше. Вот для этого и предназначена данная статья. Если у вас есть под рукой сервер (VDS, VPS или дедик), из которого можно сделать ДНС сервер, то с помощью данной статьи вы сможете сделать для себя такой сервис и пользоваться им как вам удобно и сколько вам хочется. В ходе создания сервиса было перерыто множество страниц в интернете, зачастую противоречащих друг другу. Поэтому, ссылки на исходники указаны не будут. Это статья как бы компиляция всех сведений, нарытых в сети.

Начало работы

Для начала работы по созданию сервиса предполагается, что у вас настроен на сервере BIND , установлены пакет dnsutils и программа Curl . Если обнаружилось вдруг, что у вас этого нет, почитайте, что написано в этой статье . Для простоты сразу договоримся, что оперировать будем доменом dyndns.my и поддоменом с динамическим IP dhost . Полный адрес получится dhost.dyndns.my . В домене должна быть запись A ns с IP вашего сервера. Или не ns, тут кому как нравится, но в этом примере дело обстоит именно так. Ну и для полной ясности, и сервер, и клиент - компы с Ubuntu. Версия уже принципиального значения не имеет.

Он сказал, поехали!

Настройка клиентской части

Раздел идет впереди настройки сервера потому, что ключи авторизации необходимо генерировать на клиенте.

Создадим отдельный каталог в /etc .

sudo mkdir / etc/ ddns/

Перейдем в него.

cd / etc/ ddns/

Генерируем пару ключей для обмена информацией между клиентом и сервером.

sudo dnssec-keygen -b 512 -a HMAC-MD5 -v 2 -n HOST dyndns.my

В результате этой операции в каталоге появляются два файлика - Kdyndns.my.+157+48025.key и Kdyndns.my.+157+48025.private . Из первого файла нам будет необходим только набор символов после «157 ». Именно после пробела начинается тело ключа. Создаем скрипт обновления доменных зон.

sudo nano ddns.sh

Вставляем туда текст.

#!/bin/bash TTL =3600 SERVER =ns.dyndns.my HOSTNAME =dhost.dyndns.my ZONE =dyndns.my KEYFILE =Kdyndns.my.+157 +48025 .private new_ip_address =` curl http:// dyndns.my/ ip.php` #Этот файлик создадим позднее на сервере! cd / etc/ ddns nsupdate -v -k $KEYFILE << EOF server $SERVER zone $ZONE update delete $HOSTNAME A update add $HOSTNAME $TTL A $new_ip_address send EOF

Сохраняем. Затем даем права на исполнение.

sudo chmod +x ddns.sh sudo ln -s / etc/ ddns/ ddns.sh / usr/ sbin/ ddns_update

Настройка серверной части

Настройка сервера имен заключается в прописывании домена и установке разрешения на обновления записей A доменных имен с динамическими IP. Переходим в каталог bind.

cd / etc/ bind/ sudo nano dnskeys.conf

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

Key "dyndns.my" { algorithm hmac-md5; secret "тут тело ключа" ; } ;

Добавляем в файл /etc/bind/named.conf строчку с указанием файла, где определен ключ.

Include "/etc/bind/dnskeys.conf" ;

Следующим шагом необходимо в файл /etc/bind/named.conf.local прописать доменную зону, которой мы оперируем.

Zone "dyndns.my" { type master; allow-update { key dyndns.my;} ; file "/etc/bind/pri.dyndns.my" ; } ;

Необходимо будет создать и файл /etc/bind/pri.dyndns.my с различными записями для домена. Он обычный, с минимально необходимым набором записей для функционирования домена, потому и нет необходимости рассматривать его в данной статье. Рестартуем сервер имен для завершения и применения настроек.

sudo service bind9 restart

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

sudo nano / var/ www/ ip.php

Вставляем туда код.

Если вы обратитесь к этому файлу через веб, к примеру, http://dyndns.my/ip.php , то, кроме своего IP адреса ничего не увидите. Что нам и требовалось. Клиент, с помощью curl, его и получает и обновляет информацию на сервере.

Вот и все телодвижения по настройке серверной части.

Настройка заключительная

Доделываем клиента.

sudo nano / etc/ crontab

Добавляем строчку.

*/ 15 * * * * root / usr/ sbin/ ddns_update

Это означает, что раз в 15 минут скрипт будет запускаться. На этом настройка клиентской части закончена. Можно подождать 15 минут и убедиться, что наш хости работает пингом со стороннего сервера. А можно и выполнить команду.

sudo ddns_update

Для чего, собственно, мы и делали симлинк в /usr/sbin. Если вы не получили в ответ выхлоп со словом REFUSED , значит вы все сделали правильно и можете быть счастливы.

Выводы

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

Большая просьба, при перепечатке данной статьи, указывать источник, в частности, этот ресурс.

Если вы знаете, что такое IP-адрес и DNS , но не знаете, что такое DynDNS или знаете, но не знаете чем она может быть полезна, то эта статья для вас. Если вы не знаете, что такое IP-адрес и DNS и уж тем более DynDNS , но интернет дома вы получаете по технологии ADSL (например, ОГО от Укртелеком ), то эта статья тоже может оказаться полезной.

Начну все же с IP-адресов и DNS . Каждый компьютер который подключен к сети интернет имеет числовое значение которое служит для его однозначной идентификации. Это числовое значение и называется IP-адрес . Пример - 92.113.177.223 . Нам, людям, запоминать такие цифры трудно. Поэтому умные люди придумали DNS :)

Система доменных имен (DNS - domain name system ) позволяет сопоставить доменное имя (удобное для нас людей) с IP-адресом (удобным и необходимым для машин). Благодаря DNS мы набираем в адресной строке браузера не труднозапоминаемые IP-адреса , а понятные нам названия: ya.ru , сайт и т.д. :)

Ситуация развивается таким образом, что IP-адресов на все компьютеры уже не хватает, поэтому появились такие условные понятия как статический IP-адрес и динамический IP-адрес . Не путайте понятия динамический IP адрес и ! Статическим принято называть IP-адрес который выдается вам (вашему компьютеру) в аренду на определенный срок (обычно по этому поводу заключается договор с провайдером) и вы гарантировано в течении этого срока сможете им пользоваться и он не будет изменятся. То есть выдал вам провайдер адрес 80.80.100.150 и в договоре указано, что он будет статическим , значит вы все время сможете пользоваться этим адресом и никто другой его не получит. Что такое динамический IP-адрес проще всего показать на примере того же подключения ОГО от Укртелекома . Когда вы подключаетесь к интернету, то ваше оборудование тоже получает IP-адрес , но он не является постоянным, так как при следующем подключении вы получите другой адрес, потом третий и т.д. Конечно это будут IP-адреса из определенного диапазона, но какой точно IP-адрес вы получите при следующем подключении заранее неизвестно.

В динамических IP-адресах нет ничего плохого, если вы не начинаете решать более интересные задачи чем просто доступ в Интернет с вашего компьютера. Например обратная задача - . Возьмем самый просто случай - доступ к компьютеру по протоколу RDP - подключение к удаленному рабочему столу нашей Windows XP . Что нам нужно чтобы подключится к нашему домашнему компьютеру с рабочего компьютера? Да особо ничего. Разрешить и настроить само подключение на домашнем компьютере и знать его IP-адрес . Но знать IP-адрес мы наверняка не можем, так как он - динамический и может быть каким угодно в тот момент когда мы захотим подключится к компьютеру. Классическая система доменных имен (DNS ) работает только со статическими IP-адресами. И привязать доменное имя к нашему IP-адресу мы не можем.

Вот здесь нам и пригодится DynDNS . Данный сервис позволяет отслеживать изменения нашего IP-адреса и следит за тем, чтобы наше доменное имя было связано с актуальным на данный момент IP-адресом нашего компьютера. Тогда нам нужно запомнить только доменное имя компьютера, а DynDNS уже позаботится, чтобы с этим именем всегда был связан актуальный на данный момент IP-адрес.

Как это работает на практике? Расскажу на своем примере. Существует сайт который предоставляет такой сервис. Он так и называется dyndns.com . Зарегистрировавшись на этом сайте я завел там доменное имя вида kuzmenko.dyndns.org . И дальше на своем ADSL-модеме в разделе DynDNS , прописал свои учетные данные. Все. Теперь я по доменному имени всегда (пока сбоев за полтора года не было) могу зайти на свой компьютер. Если нужно более подробное описание регистрации или настройки на модеме - пишите, дополню.

Написал более подробно о том . Главное запомните, что настраивать DynDNS клиент нужно только на одном устройстве в сети , и по возможности на том, которое получает внешний динамический IP адрес.



Понравилась статья? Поделиться с друзьями: