Linux и серверы

Веб разработка: (HowTo) Настройка DynDNS для Linux (Ubuntu)

Материал перенесён из старой базы знаний ATC-IP и оформлен в едином стиле нового сайта.

Веб разработка
Блог в первую очередь как склерозник, возможно может быть интересен кому-то кроме меня - поэтому в паблике. В основном темы: разработка ПО, администрирование и использование утилит GNU/Linux и не только...
воскресенье, 3 июля 2011 г.
(HowTo) Настройка DynDNS для Linux (Ubuntu)
В случае, если ваш провайдер при выходе в интернет выдает вам динамические адреса, но у вас периодически возникает необходимость обращаться к вашему компьютеру из внешнего мира, а платить провайдеру за постоянный белый IP адрес так не хочется (или провайдер просто не предоставляет такую возможность), у вас есть выход - использовать сервис DynDNS.
Вначале, я хочу рассказать общий принцип работы сервиса DynDNS. Программа-клиент установленная на вашем компьютере сообщает сервису DynDNS о изменении вашего IP адреса, DynDNS сразу-же изменяет запись DNS о вашем хосте в мастер и слейв серверах DNS (не дожидаясь репликации зоны). Поскольку время кеширования для кешурующих серверов определено всего в 30 минут (выделено жирным ниже), то максимальным временем в течением которого ваш хост получивший новый IP будет недоступен (в худшем случае) будет составлять 30 минут.
$ dig dyndns.info soa
; <<>> 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
Проверить насколько успешно это работает, можно точно также как я уже описывал выше.
Автор:
ags
на
10:00
Отправить по электронной почте
Написать об этом в блоге
Опубликовать в Twitter
Опубликовать в Facebook
Ярлыки:
ddclient
dyndns
pppoe
vpn
коммент.:
Отправить комментарий
Следующее
Предыдущее
Главная страница
n(){ object[attribute] = val; }, false);
} else {
window.attachEvent('onload', function(){ object[attribute] = val; });
Позвонить +7 (343) 382-33-16