Настройка ddclient для No-IP
ddclient
клиент динамического обновления (DUC), который можно использовать для обновления записей динамического DNS Он регулярно проверяет текущий IP-адрес и обновляет информацию DNS при обнаружении изменений. Вот как установить и настроить его для службы No-IP (noip.com/no-ip.com).
Сначала установите ddclient
пакет. Мы настроим это вручную позже, поэтому просто нажмите Enter для всех вопросов конфигурации.
sudo apt-get install ddclient
Останови ddclient
демона. Команда sudo service ddclient stop
не работает в Ubuntu 12.04 из-за ошибки, поэтому мы используем pkill
вместо этого.
sudo pkill ddclient
Отредактируйте файлы конфигурации. Чтобы отключить файлы резервных копий (например /etc/ddclient.conf~
), которые gedit
создаются по умолчанию и которые могут, например, содержать пароли после того, как вы думали, что удалили их, отключите настройку
Edit -> Preferences -> Editor -> Create a backup copy of files before saving
.
sudo gedit /etc/ddclient.conf /etc/default/ddclient
Удалить старое содержимое /etc/ddclient.conf
и вставьте в шаблон, показанный ниже.
Прочитайте комментарии шаблона и настройте файл в соответствии с вашими потребностями.
Было бы неплохо использовать суб-аккаунт noip.com, то есть группу с паролем (эта функция является платной услугой). Таким образом, пароль дает доступ только к обновлению указанных хостов, а не к полному доступу ко всей учетной записи No-IP, которая может включать записи MX (злоумышленник, получивший ваш пароль, может изменить записи MX, чтобы перехватить ваши электронные письма. ) или другие услуги, такие как учетные записи IMAP.
Вы должны, вероятно, установить daemon_interval=3600
(см. Комментарии шаблона).
Проверьте свою конфигурацию с помощью следующей команды:
sudo ddclient -daemon=0 -debug -verbose -noquiet -force
Вы должны получить ответ good
(IP-адрес обновлен) или nochg
(IP-адрес уже был установлен на это значение). На этом этапе можно получить следующее предупреждение (но не всегда получать предупреждение при нормальной работе):
WARNING: updating <hostname>: nochg: No update required; unnecessary attempts to change to the current address are considered abusive
Примечание. Похоже, на сервере без IP-адреса происходит некоторое кеширование, поэтому, если ответ, полученный от сервера, не соответствует ожидаемому, возможно, потребуется немного подождать.
Когда вы закончите настройку, запустите ddclient
демон:
sudo service ddclient start
Демон также будет запускаться автоматически каждый раз, когда вы запускаете компьютер.
Запись / записи DNS теперь будут обновляться при каждом обнаружении изменения IP-адреса.
Исправление проблем
Запустите настройку пакета снова:
sudo dpkg-reconfigure ddclient
Удалить пакет и конфигурационные файлы:
sudo apt-get purge ddclient
Управление демоном:
sudo service ddclient status
sudo service ddclient start
sudo service ddclient stop
# The stop command above does not work on Ubuntu 12.04 due to a bug, but
# it works on 14.04. Here are alternative ways to control the daemon:
ps -A f | grep -i ddclient
sudo pkill ddclient
Удалите кэш, чтобы заставить демона обновить запись DNS для целей отладки (во время нормальной работы запись DNS обновляется только в том случае, если текущий IP-адрес отличается от IP-адреса, хранящегося в кэше):
sudo pkill ddclient
sudo rm /var/cache/ddclient/ddclient.cache
sudo service ddclient start
# See the result:
tail /var/log/syslog
# If you have set up mail=..., you should also receive an e-mail.
# The syslog and e-mail should show a "good" or "nochg" response.
Проверьте, будет ли демон фактически обновлять запись DNS при изменении IP-адреса, установив IP-адрес записи DNS на 1.2.3.4, а затем запустив демон:
sudo pkill ddclient
sudo ddclient -daemon=0 -debug -verbose -noquiet -force -use ip -ip 1.2.3.4
sleep 30 # ddclient will not perform updates less than 30 seconds apart
sudo service ddclient start
Выполнение отладки (обновляйте запись DNS никогда / по мере необходимости / всегда):
sudo ddclient -daemon=0 -debug -verbose -noquiet -noexec
sudo ddclient -daemon=0 -debug -verbose -noquiet
sudo ddclient -daemon=0 -debug -verbose -noquiet -force
Попробуйте определить текущий IP-адрес, используя различные методы:
sudo ddclient -query
Интересующие файлы:
/etc/ddclient.conf
/etc/default/ddclient
/var/cache/ddclient/ddclient.cache
Сообщения от демона появятся здесь (и также будут отправлены по электронной почте, если настроены для этого):
/var/log/syslog
Документация:
Шаблон для /etc/ddclient.conf
################################################################################
# Configuration file for ddclient
################################################################################
################################################################################
# Misc. configurations
# To choose between ipup mode (for dial-on-demand) and daemon mode, please edit
# /etc/default/ddclient.
#mail=root # E-mail messages to this address
#mail-failure=root # E-mail messages about failed updates to this address
################################################################################
# How to obtain current IP address
# Methods:
# use=ip, ip=ADDRESS # Set the IP address to ADDRESS
# use=if, if=INTERFACE, if-skip=PATTERN # Obtain IP address by calling 'ifconfig INTERFACE'
# use=web, web=PROVIDER|URL, web-skip=PATTERN # Obtain IP address from IP discovery web page
# use=cmd, cmd=PROGRAM, cmd-skip=PATTERN # Obtain IP address by calling PROGRAM
# use=fw|FWMODEL, fw=ADDRESS|URL, fw-skip=PATTERN # Obtain IP address from firewall web page
# fw-login=LOGIN, fw-password=SECRET
#
# The *-skip options can be used to skip IP addresses found before PATTERN.
#
# NOTE: The ddclient IP detection routines do not respect the HTTPS prefix in
# URLs, and instead fall back to HTTP (this is fixed in version 3.8.1). The
# option ssl=yes does not apply to the IP detection either (this is at least
# how versions 3.8.0 to 3.8.2 behave).
#
# The default time between each IP address change check is daemon_interval=300
# (5 minutes), which may be a bit too frequent when using an external IP
# discovery service. To set the checking interval to e.g. one hour instead,
# please edit /etc/default/ddclient and set daemon_interval=3600.
# Obtain IP address from network interface
#use=if, if=eth0
# Obtain IP address from no-ip.com IP discovery web page (unencrypted connection)
use=web, web='http://ip1.dynupdate.no-ip.com:8245/'
# Obtain IP address from no-ip.com IP discovery web page (encrypted connection)
# Encryption does not offer any real protection since a man-in-the-middle
# attack could route the HTTPS connection through a host belonging to the
# attacker, thus causing an incorrect IP address to be reported.
#use=cmd, cmd='bash -c "set -o pipefail; timeout 120 wget -qO- \
# --header=Host:ip1.dynupdate.no-ip.com https://dynupdate.no-ip.com/ | head -c 1000"'
################################################################################
# Dynamic DNS service setup
protocol=noip
#server= # Defaults to dynupdate.no-ip.com for noip protocol
ssl=yes # NOTE: Does not apply when obtaining IP address, just when updating the DNS entry!
login='nobody@nowhere.com' # Username. For No-IP sub-accounts (groups with passwords), use '<groupname>%3A<username>'.
password='1234'
################################################################################
# Hosts to update, with optional per-host options
# Examples:
# protocol=hammernode1, \
# login='my-hn-login', password='my-hn-password' \
# myhost.hn.org,myhost2.hn.org
#
# login='group2%3Ajohndoe@domain.com', password='1234' myhost3.no-ip.biz,myhost4.no-ip.biz
#
# myhost.no-ip.biz,myhost2.no-ip.biz
my.full.hostname
Обновление: зашифрованное соединение со службой обнаружения IP совершенно бессмысленно. Теперь это объясняется в шаблоне ddclient.conf, и теперь по умолчанию используется незашифрованное соединение для обнаружения IP.