Динамический днс своими руками Сравнение версий

Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
wiki:динамический_днс_своими_руками [2014/05/19 12:10]
[Он сказал, поехали!]
wiki:динамический_днс_своими_руками [2014/05/19 21:08] (текущий)
[Ссылки]
Строка 6: Строка 6:
 В ходе создания сервиса было перерыто множество страниц в интернете,​ зачастую противоречащих друг другу. Поэтому,​ ссылки на исходники указаны не будут. Это статья как бы компиляция всех сведений,​ нарытых в сети. В ходе создания сервиса было перерыто множество страниц в интернете,​ зачастую противоречащих друг другу. Поэтому,​ ссылки на исходники указаны не будут. Это статья как бы компиляция всех сведений,​ нарытых в сети.
 ===== Начало работы ===== ===== Начало работы =====
-Для начала работы по созданию сервиса предполагается,​ что у вас ​установлены и настроен на сервере [[wpru>BIND|BIND]] ​и пакет **dnsutils**. Если обнаружилось вдруг, что у вас этого нет, почитайте,​ что написано в [[wiki:​руководство_по_ubuntu_server/​служба_доменных_имен/​installation|этой статье]].+Для начала работы по созданию сервиса предполагается,​ что у вас настроен на сервере [[wpru>​BIND]], установлены ​пакет **dnsutils** ​и программа [[wpru>​Curl]]. Если обнаружилось вдруг, что у вас этого нет, почитайте,​ что написано в [[wiki:​руководство_по_ubuntu_server/​служба_доменных_имен/​installation|этой статье]].
 Для простоты сразу договоримся,​ что оперировать будем доменом **dyndns.my** и поддоменом с динамическим IP **dhost**. Полный адрес получится **dhost.dyndns.my**. В домене должна быть запись A ns с IP вашего сервера. Или не ns, тут кому как нравится,​ но в этом примере дело обстоит именно так. Для простоты сразу договоримся,​ что оперировать будем доменом **dyndns.my** и поддоменом с динамическим IP **dhost**. Полный адрес получится **dhost.dyndns.my**. В домене должна быть запись A ns с IP вашего сервера. Или не ns, тут кому как нравится,​ но в этом примере дело обстоит именно так.
 Ну и для полной ясности,​ и сервер,​ и клиент - компы с Ubuntu. Версия уже принципиального значения не имеет. Ну и для полной ясности,​ и сервер,​ и клиент - компы с Ubuntu. Версия уже принципиального значения не имеет.
Строка 48: Строка 48:
 EOF EOF
 </​code>​ </​code>​
 +Сохраняем. Затем даем права на исполнение.
 +<code bash>
 +sudo chmod +x ddns.sh
 +</​code>​
 +Создаем символическую ссылку в каталог **/​usr/​sbin**,​ чтобы не добавлять в пути скрипт обновления зон. Это не обязательно,​ будет просто не лишним для того, чтобы из консоли набирать команду без путей.
 +<code bash>
 +sudo ln -s /​etc/​ddns/​ddns.sh /​usr/​sbin/​ddns_update
 +</​code>​
 +Раз добавили,​ то в /​etc/​crontab будем использовать его.
 +
 +==== Настройка серверной части ====
 +Настройка сервера имен заключается в прописывании домена и установке разрешения на обновления записей **A** доменных имен с динамическими IP.
 +Переходим в каталог bind.
 +<code bash>
 +cd /etc/bind/
 +</​code>​
 +<code bash>
 +sudo nano dnskeys.conf
 +</​code>​
 +Вставляем туда текст и тело ключа, о котором упоминалось в предыдущем разделе.
 +<code bash>
 +key "​dyndns.my"​ {
 +        algorithm hmac-md5;
 +        secret "​тут тело ключа";​
 +};
 +</​code>​
 +
 +Добавляем в файл **/​etc/​bind/​named.conf** строчку с указанием файла, где определен ключ.
 +<code bash>
 +include "/​etc/​bind/​dnskeys.conf";​
 +</​code>​
 +Следующим шагом необходимо в файл **/​etc/​bind/​named.conf.local** прописать доменную зону, которой мы оперируем.
 +<code bash>
 +zone "​dyndns.my"​ {
 +        type master;
 +        allow-update {key dyndns.my;​};​
 +        file "/​etc/​bind/​pri.dyndns.my";​
 +};</​code>​
 +Необходимо будет создать и файл /​etc/​bind/​pri.dyndns.my с различными записями для домена. Он обычный,​ с минимально необходимым набором записей для функционирования домена,​ потому и нет необходимости рассматривать его в данной статье.
 +Рестартуем сервер имен для завершения и применения настроек.
 +<code bash>
 +sudo service bind9 restart
 +</​code>​
 +Теперь в каталог,​ предназначенный для веб страниц,​ помещаем очень простой скрипт на php.
 +<code bash>
 +sudo nano /​var/​www/​ip.php
 +</​code>​
 +
 +Вставляем туда код.
 +<code php>
 +<?php
 +echo $_SERVER["​REMOTE_ADDR"​];​
 +?>
 +</​code>​
 +
 +Если вы обратитесь к этому файлу через веб, к примеру,​ http://​dyndns.my/​ip.php,​ то, кроме своего IP адреса ничего не увидите. Что нам и требовалось. Клиент,​ с помощью curl, его и получает и обновляет информацию на сервере.
 +
 +Вот и все телодвижения по настройке серверной части.
 +
 +==== Настройка заключительная ====
 +
 +Доделываем клиента.
 +<code bash>
 +sudo nano /​etc/​crontab
 +</​code>​
 +Добавляем строчку.
 +<code bash>
 +*/15 *  * * *   ​root ​   /​usr/​sbin/​ddns_update
 +</​code>​
 +Это означает,​ что раз в 15 минут скрипт будет запускаться.
 +На этом настройка клиентской части закончена. Можно подождать 15 минут и убедиться,​ что наш хости работает пингом со стороннего сервера. А можно и выполнить команду.
 +<code bash>
 +sudo ddns_update
 +</​code>​
 +Для чего, собственно,​ мы и делали симлинк в /usr/sbin.
 +Если вы не получили в ответ выхлоп со словом **REFUSED**,​ значит вы все сделали правильно и можете быть счастливы.
 +
 +===== Выводы =====
 +На выходе мы получили вполне себе работающий сервис динамических имен. Есть, конечно,​ и существенный недостаток. Используемый ключ подходит для изменения любого поддомена из прописанных. Т.е., он один для всех. Это открывает простор для хулиганства,​ если кто-то упрет ключ. Поскольку,​ сервис делался для себя, то особых проблем это не вызовет. Ибо надо быть не совсем здоровым психически,​ чтоб хулиганить самому у себя. Возможно есть и решение,​ позволяющее каждый поддомен авторизовать по своему ключу, но целью данной статьи это не ставилось,​ потому гугля сильно и не терзалась.
  
 +Большая просьба,​ при перепечатке данной статьи,​ указывать источник,​ в частности,​ этот ресурс.
 ===== Ссылки ===== ===== Ссылки =====
  
-  * [[FIXME]]+  * [[http://​forum.ubuntu.ru/​index.php?​topic=244234.0|Обсуждение статьи на форуме]]
  
-{{tag>​динамический_днс_своими_руками}}+{{tag>​динамический_днс_своими_руками ​dns сеть}}