DDNS - DNS для динамически меняющихся IP

Динамический DNS - это сервис DNS, предоставляющий механизм для частого обновления IP. Включает в себя 3 системы:
- DNS сервер, отвечающий на запросы резолвинга доменных имён
- Сервис DDNS предоставляющий интерфейс для запросов обновления
- Клиент, который следит за изменением айпи хоста и отправляет при изменении запросы на сервер

Почему меняется IP и приходится использовать DDNS

В Интернете чаще всего используются статические IP, но иногда они бывают динамическими, как это распространено в локальных сетях (корпоративных и домашних). Это происходит в нескольких случаях:

  • когда используется сервер DHCP для назначения IP. При этом сервер указывает время аренды адреса TTL, на которое за клиентом закрепляется этот айпи. Обычно это 2 недели, но провайдеры могут его менять сильно занижая период, чтобы повышать эффективность использования своего пула адресов.
  • когда используется NAT, и на роутере указывается несколько адресов для трансляции. Такое поведение характерно для корпоративных сетей. В домашних сетях с Wi-Fi роутером всегда используется NAT, и как правило это один белый IP, и смена айпи в таком случае обуславливается DHCP.

Стандартный протокол DDNS

Протокол обновления адресов DNS является стандартным и описывается RFC 2136. Механизм обновления DDNS не был описан консорциумом IETF, но де-факто тоже является стандартизированным. Компания DynDNS (ныне известная как DYN.COM, принадлежащая Oracle) являлась первым DDNS сервис-провайдером, поэтому такой протокол называют DynDNS2, и он имеет следующий формат.

wget -O - http://{username}:{password}@dynupdate.alviy.com/nic/update?hostname={yourhostname}&myip={ipaddress}
где username и password это соответственно имя пользователя и пароль в системе DDNS, yourhostname хостнейм, адрес которого обновляется и IP ipaddress.

Стоит учесть, что DynDNS2 формат более не поддерживается большинством браузеров, поскольку считается небезопасным из-за передачи учетных данный в открытом виде. В итоге на сервер приходит запрос без username и password, что приводит к ошибкам авторизации noauth.

Белые и серые IP адреса в работе DDNS

Часто можно слышать термины "белый" IP или "серый". Что же это такое и работает ли с ними динамический DNS. Доступ в интернет предоставляют провайдеры, они выдают пользователям IP адреса, что позволяет подключаться к глобальной паутине. Как известно, IPv4 адреса закончились. Для получения провайдером новых айпи в IANA (международной организации, которая управляет распределением подсетей), они должны сделать запрос и встают в многомесячную очередь на получение освобождаемых IP адресов. Помимо этого каждый айпи стоит денег за обслуживание и провайдеры ежегодно выплачивают аренду IANA. В связи с этим часто встречается картина, что у провайдера меньше доступных адресов, чем имеющихся у него клиентов, что приводит к необходимости динамически (DHCP) ими управлять, либо использовать NAT.

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

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

  • 10.0.0.0 — 10.255.255.255 (10.0.0.0/8)
  • 100.64.0.0 — 100.127.255.255 (100.64.0.0/10)
  • 172.16.0.0 — 172.31.255.255 (172.16.0.0/12)
  • 192.168.0.0 — 192.168.255.255 (192.168.0.0/16)
Уже на стороне провайдера роутер организует таблицу маршрутизации, позволяя транслировать трафик таких клиентов в "белые" адреса, этот механизм полностью скрыт от пользователя, и нет возможности в него вмешаться. При использовании "серой" адресации работа сайтов никак не ограничивается, но сервисы требующие входящих подключений функционировать не могут.

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