UMGUM.COM 

DynDNS + Linux ( Связка Static Domain + Dynamic IP на Debian Squeeze. )

29 января 2011  (обновлено 27 мая 2017)

Эта публикация отнесена в архив. Она неактуальна.

OS: Debian GNU/Linux Squeeze.

Задача: научить ноутбук объявлять своё местонахождение при подключении к сети Интернет путём формирования связки static.domain/dynamic.IP.

Идём на сайт http://dyndns.com
Регистрируем аккаунт. Бесплатно можно привязать к одному аккаунту два хоста. За 15 USD в год - тридцать хостов.
Выбираем доменное имя и режим работы. Больше на сайте делать нечего.

Сервис интересный, но не супер безопасный. Для удостоверения подлинности клиента при подключении к серверу DynDNS используются тот же логин и пароль в открытом виде, что и для доступа в панель управления аккаунтом. Возможности отвязать реквизиты удостоверения клиента от реквизитов входа в панель управления на сайте я не нашёл. При чём, если в панель управления мы входим с использованием "секурного" соединения HTTPS, то для удостоверения клиента таковой по умолчанию не используется, насколько я мог заметить. Для включения поддержки SSL требуется явно указать соответствующую опцию в конфигурационном файле, что мы и сделаем в процессе настройки.


Клиент для Linux написан на Perl. Для использования защиты соединения SSL требуется модуль Perl - IO::Socket::SSL.

Теперь на ноутбуке инсталлируем пакет ddclient:

# aptitude install ddclient libio-socket-ssl-perl

В процессе инсталляции у нас попросят уточнить ряд параметров в попытке автоматически всё настроить. Один из вопросов достаточно важен, чтобы отдельно о нём написать:

Please choose whether ddclient should try to find the IP address of this machine via the DynDNS web interface. This is recommended for machines that are using Network Address Translation.

Find public IP using checkip.dyndns.com?

Согласие на него означает активизацию дополнительного функционала определения реального "белого" IP маршрутизатора в том случае, если мы находимся за NAT. Если мы работаем непосредственно на этом IP, то срабатывает принцип: "каши маслом не испортишь." Если отказаться от использования этого функционала, то будет использован тот IP, с которого работает компьютер; если это "серый" IP локальной сети, то извне, из сети Интернет, устройство не будет доступно.

Корректируем файл настроек запуска клиента, приводя его примерно к следующему виду:

# cat /etc/default/ddclient

# Опция, инициирующая режим обновления связки domain/IP при каждом перезапуске сессии "ppp" (dial-up  - не наш случай)
run_ipup="false"

# Запускаем клиента в "фоне", в качестве постоянно работающей службы
run_daemon="true"

# Задаём интервал обновления связки domain/IP в секундах
daemon_interval="300"

Приводим файл настроек непосредственно ddclient’а к следующему виду:

# cat /etc/ddclient.conf

# Прямо указываем месторасположение pid-файла (вдруг понадобится в скриптах управления)
pid=/var/run/ddclient.pid
# Указываем писать о событиях с системный журнал
syslog=yes
# Определяем версию протокола используемого клиентом при обращении к серверу DynDNS
protocol=dyndns2
# Определяем частоту обновления клиентом связки domian/IP
daemon=300
# Включаем дополнительный функционал определения реального "белого" IP для использования его в связке domain/IP
use=web, web=checkip.dyndns.com, web-skip='IP Address'
# Указываем на сервер авторизации
server=members.dyndns.org
# Принудительно включаем SSL шифрование трафика соединения клиента и сервера DynDNS
ssl=yes
# Указываем здесь логин аккаунта DynDNS
login=userLogin
# Указываем здесь пароль аккаунта DynDNS
password='strongPassword'
#
# В последнюю очередь (важно) перечисляем домены, привязанные к этому компьютеру
example0.dyndns.org
example1.dyndns.org
....
exampleX.dyndns.org

Перезапускаем клиент:

# /etc/init.d/ddclient restart

В файле /var/log/syslog можно будет посмотреть, насколько успешно запустился наш клиента. Если всё хорошо, то увидим нечто вроде следующего:

....
user ddclient: SUCCESS: updating example.dyndns.org: good: IP address set to xxx.xxx.xxx.xxx
....


Заметки и комментарии к публикации:


Оставьте свой комментарий ( выразите мнение относительно публикации, поделитесь дополнительными сведениями или укажите на ошибку )