Вначале, я хочу рассказать общий принцип работы сервиса DynDNS. Программа-клиент установленная на вашем компьютере сообщает сервису DynDNS о изменении вашего IP адреса, DynDNS сразу-же изменяет запись DNS о вашем хосте в мастер и слейв серверах DNS (не дожидаясь репликации зоны). Поскольку время кеширования для кешурующих серверов определено всего в 30 минут (выделено жирным ниже), то максимальным временем в течением которого ваш хост получивший новый IP будет недоступен (в худшем случае) будет составлять 30 минут.
; <<>> DiG 9.7.3 <<>> dyndns.info soa
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 23222
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; QUESTION SECTION:
;dyndns.info. IN SOA
;; ANSWER SECTION:
dyndns.info. 85981 IN SOA ns1.dyndns.org. hostmaster.dyndns.org. 2233940346 10800 1800 604800 1800
;; ADDITIONAL SECTION:
ns1.dyndns.org. 3 IN A 204.13.248.75
;; Query time: 8 msec
;; SERVER: 10.112.0.1#53(10.112.0.1)
;; WHEN: Sun Jul 3 13:26:33 2011
;; MSG SIZE rcvd: 106
Таким образом, для работы с сервисом DynDNS необходимо выполнить два условия: регистрация на сайте DynDNS для получения учетных данных и настройка программы клиента для обновления информации при изменении IP адреса вашего компьютера. В данной заметке я опишу оба пункта (казалось бы первый пункт не имеет смысла описывать, но почему-то я сразу не понял как все правильно зарегистрировать на сервисе, поэтому и этот шаг тоже приложил к заметке)
Регистрация на сайте DynDNS
Заходим на сайт DynDNS, нажимаем на кнопку Sign In в верхнем правом углу экрана.
В появившейся форме выбираем ссылку "Create an Accaunt"
Заполняем все поля формы, отмечаем чекбокс "I agree...", получаем письмо по эл. почте с просьбой активировать аккаунт, активируем учетную запись нажатием ссылки в письме.
Входим в систему DynDNS используя опять-таки кнопку "Sign In". Выбираем ссылку "Add Host Services" для добавления нашего хоста.
Заполняем форму выбираем домен третьего уровня по своему желанию и второго уровня из выпадающего списка. В этой же форме видим поле IP адрес - введите сюда любой адрес пока, честно говоря вообще смысл этого поля в момент добавления для меня является загадкой, неужели нельзя сделать по умолчанию запись A на любой IP принадлежащий DynDNS.
Добавляйте в корзину и продолжайте далее.
Активируйте сервис.
Если, вы все выполнили, то первая часть завершена - осталось настроить клиента на стороне вашего компьютера для обновления записи о вашем IP адресе.
Настройка программы клиента
Существует несколько клиентов для сервиса DynDNS. Ubuntu по умолчанию предоставляет два для виртуального пакета dyndns-client, - это ez-ipupdate и ddclient. В данной заметке я опишу использование клиента ddclient.
Установите клиент
$ sudo apt-get install ddclient
В конце установки будет запущен скрипт настройки ddclient (который в дальнейшем, вы можете вызвать в любой момент запустив команду dpkg-reconfigure ddclient). Ниже пошаговая настройка.
Все настройки приведены исходя из того, что мой внешний интерфейс ppp0.
Итак, если ваш внешний интерфейс всегда одинаков и выбрали "Да" на предпоследнем шаге, то настройка клиента для вас завершилась и теперь как только будет поднят сетевой интерфейс ppp0 новый IP адрес этого интерфейса будет передан службе DynDNS. Проверить насколько корректно все у вас настроено можно следующим образом:
Получите новый IP адрес, повторно выполнив соединение с вашим провайдером и проверьте отображается ли сейчас адрес в DynDNS используя следующую команду:
$ host ВАШ_ДОМЕН.dyndns.info ns1.dyndns.org
Проверьте, что команда выводит новый IP адрес для вашего компьютера.
Напоследок, что еще нужно знать о ddclient? В Ubuntu у него есть два конфигурационных файла: /etc/default/ddclient и /etc/ddclient.conf. /etc/default/ddclient имеет три опции: нужно ли быть запущенным как демоном, мониторить ли изменение сетвых интерфейсов и с какой периодичностью обновлять имя для сервиса DynDNS (в случае, если запущен как демон).
Вот как выглядит этот файл у меня:
# Configuration for ddclient scripts
# generated from debconf on Вс. июля 3 14:22:58 MSD 2011
#
# /etc/default/ddclient
# Set to "true" if ddclient should be run every time a new ppp connection is
# established. This might be useful, if you are using dial-on-demand.
run_ipup="false"
# Set to "true" if ddclient should run in daemon mode
# If this is changed to true, run_ipup must be set to false.
run_daemon="false"
# Set the time interval between the updates of the dynamic DNS name in seconds.
# This option only takes effect if the ddclient runs in daemon mode.
daemon_interval="300"
Обратите внимание, что опция run_ipup и run_daemon у меня установлены в false. В обычной настройке это приведет к тому, что ddclient будет работать только в ручном режиме, но у меня это сделано специально - почему см. раздел "Немного тюнинга".
Файл /etc/ddclient.conf содержит информацию о пользователе сервиса, внешнем интерфейсе, домены для обновления.
Немного тюнинга
Вышеописанный способ будет отлично работать в 99% процентов случаев,однако вот какой момент был замечен мной: у меня при подъеме соединения с провайдером интерфейс не всегда имеет название ppp0. Вероятно, это связано с тем, что я еще активно использую VPN соединения и в какой-то момент мое PPPoE (ppp0) соединение становится ppp1.
Как это исправить? В одной из прошлых заметок я рассказывал о механизме скриптов-триггеров обрабатывающих изменение списка сетевых интерфейсов в операционной системе.
Поскольку для моего провайдера у меня есть специальная секция в одном из таких скриптов, то я просто расширил эту секцию следующей записью:
if [ x"$CALL_FILE" = x"provider" ]; then
/usr/sbin/ddclient -syslog -ip $PPP_LOCAL
fi
Проверить насколько успешно это работает, можно точно также как я уже описывал выше.
Комментариев нет:
Отправить комментарий