Связываем домен и динамический IP. Принцип работы DDNS

Что мы имеем:
1. компьютер с осью и установленными mysql, apache, php (тут ничего писать не буду, благо мануалов хватает)
2. интернет с присваиваемым динамическим IP, роутер.

Что мы хотим:
1. Что бы люди вбивая в адресную строку браузера доменное имя второго уровня (купленное нами или полученное на каком либо сервисе), попадали на наш сайт (в независимости от того на каком IP он сейчас находиться).
2. Хотим это бесплатно.

Итак, то как это было реализовано мной в виде краткой инструкции можно прочитать под катом, быть может кому-нибудь это пригодиться или просто-напросто будет интересно. Так же, буду рад объективной критике. Спасибо за внимание, и кому интересно добро пожаловать под хабракат.

Поехали:

1. Регистрируемся на сайте dyndns (стоит заметить что бесплатная регистрация на этом ресурсе требует обязательного посещения его раз в 30 дней, иначе будет удалена, так что если для для вас это большое неудобство, альтернатив хватает, некоторые названы в комментариях, остальные легко можно найти воспользовавшись поисковиком)
2. Добавляем там хост типа Любое_Имя.dyndns.org c текущим вашим внешним IP.

3.1. Скачиваем тулзу с сайта dyndns www.dyndns.com/support/clients которая каждый раз как вам будет присвоен новый айпи, будет связывать его с полученным адресом типа Любое_Имя.dyndns.org

3.2 В настройках роутера настраиваем Dynamic DNS (если данная настройка в роутере присутствует то лучше все же выбрать именно этот пункт нежели доверять работу программе)

4. Получаем доменное имя. *Тут кучу бесплатных решений вам поможет найти гугл, ну и если доменное имя у вас уже есть, то пропускаем этот пункт. В любом случае далее по тексту я буду называть его «Наше_Доменное_Имя.com»

5. Регистрируемся на сайте zoneedit
6. Добавляем новую зону, удаляем все настройки зоны в разделах MailForward и Mail Servers, а в разделе Aliases (CNAME) прописываем 2 перенаправления:
одно, Наше_Доменное_Имя.com < - Любое_Имя.dyndns.org
второе, www. Наше_Доменное_Имя.com < - Любое_Имя.dyndns.org

7. На zoneedit в разделе Viev, смотрим Nameservers, и прописываем их как NS-сервера у нашего поставщика домена.

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

9. И что бы внутренний айпи был неизменным в настройках роутера (Network > LAN > Client List) привязываем его по мак адресу.

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

Теперь вбивая в адресную строку браузера Наше_Доменное_Имя.com, либо же www.Наше_Доменное_Имя.com , пользователь будет видеть то что поднято на apache сервере в независимости от того какой IP присвоил провайдер.

Что мы имеем:
1. компьютер с осью и установленными mysql, apache, php (тут ничего писать не буду, благо мануалов хватает)
2. интернет с присваиваемым динамическим IP, роутер.

Что мы хотим:
1. Что бы люди вбивая в адресную строку браузера доменное имя второго уровня (купленное нами или полученное на каком либо сервисе), попадали на наш сайт (в независимости от того на каком IP он сейчас находиться).
2. Хотим это бесплатно.

Итак, то как это было реализовано мной в виде краткой инструкции можно прочитать под катом, быть может кому-нибудь это пригодиться или просто-напросто будет интересно. Так же, буду рад объективной критике. Спасибо за внимание, и кому интересно добро пожаловать под хабракат.

Поехали:

1. Регистрируемся на сайте dyndns (стоит заметить что бесплатная регистрация на этом ресурсе требует обязательного посещения его раз в 30 дней, иначе будет удалена, так что если для для вас это большое неудобство, альтернатив хватает, некоторые названы в комментариях, остальные легко можно найти воспользовавшись поисковиком)
2. Добавляем там хост типа Любое_Имя.dyndns.org c текущим вашим внешним IP.

3.1. Скачиваем тулзу с сайта dyndns www.dyndns.com/support/clients которая каждый раз как вам будет присвоен новый айпи, будет связывать его с полученным адресом типа Любое_Имя.dyndns.org

3.2 В настройках роутера настраиваем Dynamic DNS (если данная настройка в роутере присутствует то лучше все же выбрать именно этот пункт нежели доверять работу программе)

4. Получаем доменное имя. *Тут кучу бесплатных решений вам поможет найти гугл, ну и если доменное имя у вас уже есть, то пропускаем этот пункт. В любом случае далее по тексту я буду называть его «Наше_Доменное_Имя.com»

5. Регистрируемся на сайте zoneedit
6. Добавляем новую зону, удаляем все настройки зоны в разделах MailForward и Mail Servers, а в разделе Aliases (CNAME) прописываем 2 перенаправления:
одно, Наше_Доменное_Имя.com < - Любое_Имя.dyndns.org
второе, www. Наше_Доменное_Имя.com < - Любое_Имя.dyndns.org

7. На zoneedit в разделе Viev, смотрим Nameservers, и прописываем их как NS-сервера у нашего поставщика домена.

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

9. И что бы внутренний айпи был неизменным в настройках роутера (Network > LAN > Client List) привязываем его по мак адресу.

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

Теперь вбивая в адресную строку браузера Наше_Доменное_Имя.com, либо же www.Наше_Доменное_Имя.com , пользователь будет видеть то что поднято на apache сервере в независимости от того какой IP присвоил провайдер.

Первым делом приобретаем себе домен (к примеру, example.com ). Я покупал домен на nic.ru , но это далее рассказ буде привязан именно к их систему управления доменами (сервис также может предоставлять и бесплатные доменные имена третьего уровня).
После регистрации прямиком идем на dnsever.com и регистрируем аккаунт.
Далее порядок следующий:

  1. Жмем на «Add New Domain ». В появившейся форме заполняем поля «Enter Domain Name » и вводим капчу.
  2. Вас попросят подтвердить, что информация правильная. Прорвете еще раз чтобы быть уверенным, если все правильно то нажимаем «OK » (Не закрывайте эту страницу она нам еще пригодится).
  3. Мы добрались до заветного окна с NS серверами. Заходим под своей учетной записью на nic.ru и следуем по маршруту Мои домены -> Изменить (в колонке DNS-серверы для нужного доменного имени). В появившейся форме заполняем данные со страницы, полученной на предыдущем этапе (имена серверов и их IP в соответствующие поля). Из личного опыта могу сказать что чем больше DNS серверов тем меньше проблем с разрешение имени в ip и наоборот (к тому же сервис будет Вам постоянно сообщать что не все из предоставленных вас серверов прописаны в качестве серверов обслудивающих Ваш домен). Сохранив изменения необходимо перейти на страницу, на которой мы находились на предыдущем шаге.
  4. Нажимаем кнопку «Start DNS management for example.com » и приступам к настройке DNS. Преходим в категорию «Dynamic DNS ». В этой категории вы можете создать любое количество доменов 3 и так делее уровней. Вы наверняка также обратите внимание на поле с IP (под ним будет указа IP с которого вы зашли на сайт). Также вы можете создать и зависти типов «CNAME », «MX », «TXT », «SRV », «AAAA », «NS » (последние 4 секции находятся в разделе «Advanced »). Для меня была интересна возможность создавать SRV зиписи, для поднятия jabber сервер с возможность s2s.

А теперь самое интересное, настройка оповещения dnsever.com об изменении IP. (более детальное описание в разделе «Dynamic DNS USAGE »)
В кратце:
Windows - Скачиваем клиената из раздела «Dynamic DNS USAGE », устанавливаем, настраиваем (при настройке ошибиться сложно).
Linux и иже с ними - для подачи сигнала изменения IP будем использовать wget.
/usr/bin/wget -O - --http-user=username --http-passwd=PssW0RD dyna.dnsever.com/update.php?host&host
Я создал файл и записал в него эту строку. При добавлении нового домена 3 и так далее уровня просто добавьте к этой строке запись вида “&host”.
Исполнение этого скрипта можно повесить в cron (как это предложено в официальной документации).
*/5 * * * * /guul/path/to/script/ddnserv.sh > /dev/null 2>&1
А затем переложил это скрипт в /etc/ppp/ip-up.d/ с следующем виде

#!/bin/sh PPP_IPPARAM="$6" PPP_IFACE="$1" if [ "${PPP_IPPARAM}" = "ttk" ] then /usr/bin/wget -O - --http-user=username --http-passwd=PssW0RD dyna.dnsever.com/update.php?host&host fi

В моем случае при поднятии ppp соединения в качестве значения для ipparam указано ttk

Многие провайдеры выделяют своим клиентам динамические IP-адреса, предоставляю услугу статического IP за отдельную ежемесячную плату.

Что делать, если хочется создать собственный сервер с красивым именем, но тратить дополнительные средства нет возможности?

IP-адрес - уникальный сетевой адрес узла в компьютерной сети, построенной по протоколу IP. В сети Интернет требуется глобальная уникальность адреса; в случае работы в локальной сети требуется уникальность адреса в пределах сети.

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

IP-адрес называют динамическим (непостоянным, изменяемым), если он назначается автоматически при подключении устройства к сети и используется в течение ограниченного промежутка времени, указанного в сервисе назначавшего IP-адрес (DHCP).

Частный IP-адрес, также называемый внутренним, внутрисетевым, локальным или «серым » - IP-адрес, принадлежащий к специальному диапазону, не используемому в сети Интернет. Такие адреса предназначены для применения в локальных сетях, распределение таких адресов никем не контролируется. В связи с дефицитом свободных IP-адресов, провайдеры всё чаще раздают своим абонентам именно внутрисетевые адреса - а не внешние.

Иногда частные адреса называют неанонсированными, внешние (так называемые «белые IP») - анонсированными.

Итак, допустим ваш сервер имеет динамический белый IP, и у вас уже есть зарегистрированное доменное имя (например example.net). Если имя еще не зарегистрировано, вы можете это сделать через любого более менее изветного регитратора (reg.ru или imena.ua).

Для привязки имени к IP воспользуемся сервисом http://freedns.afraid.org/ .

Зарегистрируемся, подтвердим регистрацию по почте и перейдем в раздел «Domains» http://freedns.afraid.org/domain/

Теперь нужно зайти в панель управления доменом у вашего регистратора (или обратиться в его поддержку, если доступа к панели управления нет), и сменить нейм-сервера на:

ns1.afraid.org.
ns2.afraid.org.
ns3.afraid.org.
ns4.afraid.org.

Обратите внимание, если у вас уже были настроены зоны (например почта), то эти настройки отключатся при переносе.

Теперь на freedns.afraid.org можно кликнуть «Check for Broken domains» в верхней таблице. Если всё прошло успешно, ваш домен получит статус «Health: Active».

Переходим в раздел «Dynamic DNS» . Нас интересует нижняя таблица. Первоначально до первой активации в ней пусто. Система создала поддомены по умолчанию для вашего домена, но они еще не привязаны ни к одному IP. Можно привязать их все к одному, или каждый к отдельному адресу. Для этого на сервере, к которому вы хотите привязать имя, перейдите по ссылке возле имени («Direct URL» ), либо выполните скрипт («Wget Script» ), или просто отредактируйте запись вручную (» Edit Record» ).

Таким образом, имя привяжется к текущему IP сервера. Если всё прошло успешно, то перейдя по имени в браузере вы уже попадете на ваш сервер.

Сделать это обновление автоматическим можно с помощью любого из предлагаемых сервисом клиентов, разработанных под разные операционные системы: http://freedns.afraid.org/scripts/freedns.clients.php . Либо можно добавить в планировщик (или cron) вышеуказанные URL или Wget-Script.

Сервис позволяет добавлять до 5 доменов бесплатно и управлять ими как угодно по отдельности.

В этой статье-инструкции постараюсь наиболее детально рассказать о том, как можно организовать работу динамически присваемого адресса и домена. А именно резолв последнего на понятный человеку язык: domen. com Дело в том, что если адресс IP меняется, то постоянно придётся вручную прописывать «A» запись в ваши эоны, что есть мягко говоря не очень удобным. Для автоматицации данного процесса можно использовать связку dyndns и zoneedit. Такая конфигурация может понадобится, к примеру если вы хотите захостить собственный сайт у себя на домашнем компьютере. С одной стороны получается что вам не нужно при таком раскладе арендовать у провайдера Интернета статический IP адресс, и соответсвенно платить за него, но с другой, надёжность и доступность вашего сайта ставится под сомнение, так как: сбои электричества, интернета, компьютера ит. д.

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

2. Логимся в свой свежесозданный аккаунт на dyndns. org, должны увидеть такую картину:

3. Самый важный момент, правильно заполнить настройки вашего хоста. Не должно быть распространённого названия, иначе просто не позволят зарегистрировать, а также, обязательно проверить IP адресс вашей машины где будет находится сайт, к примеру тут http://2ip. ru. http://www. whatismyip. com/. Этот IP прописывается в поле IP Address . все остальные настройки по умолчанию:

4. Теперь нужно настроить любой приемлемый способ обновления dns записей при смене IP адресса. Для этого существует три способа: ручной, через утилиту-клиент или на роутере. Наиболее верный и быстрый способ, это использовать аппаратные возможности роутера, но тут возможно много вариаций на тему: «где эти настройки прописывать?». Поэтому, для наглядности покажу пример со своего роутера, но в вашем не обязательно должно быть так:

Помимо этого способа используются другие утилиты для обновления DNS, самые распространённые: Ddclient, noip-updater для *nix. Для Windows http://dyn. com/support/clients/windows/ и полный перечень других тут: http://dyn. com/support/clients/. Рассказывать о каждой утилите нет смысла, ввиду распухания инструкции, возможно сделаю небольшой обзор в отдельной статье.

Итак, предположим что вы использовали способ обновления через роутер, тогда можно проверить функционирование простым пингом своего хоста ping localweb. dyndns. org в ответ должен показаться ваш истинный IP.

6. Логимся в аккаунт и нажимаем на New Zone . появится всплывающее окно в котором необходимо ввести название зоны, оно должно соответствовать вашему домену:

Нажимаем Submit и переходим к редактированию зоны Edit Zone . Далее заполняются поля как показано на рисунке, меняются только имена хостов. Самое главное чтобы у вас было не меньше 2-ух NS серверов, иначе работать не будет. Объяснять что зачем, это будет плавный переход в настройки Bind и вообще в понятия работы DNS.

7. Последний этап это прописывание NS серверов в настройках вашего домена. Это выполняется в аккаунте регистратора домена, типичный пример:

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

    — на момент написания статьи в dyndns. org можно было бесплатно регистрировать 2 хоста — в zoneedit. com аналогично 2. — не разрешается иметь несколько аккаунтов зарегистрированных на одного пользователя, иначе грозит баном.
    — в процессе поисков альтернативы у других провайдеров DNS, данную «фичу» нашёл только у zoneedit. com, у других такое запрещено и с динамическим ip такое там не прокатит. в /etc/hosts (%SystemRoot%\WINDOWS\SYSTEM32\DRIVERS\ETC\)желательно прописать ip компьютера и свой домен 2-го уровня (mydomen. com), иначе может возникнуть ситуация, что когда вы пытаетесь попасть на свой сайт, вместо этого попадаете в настройки роутера.