ddclient для обновления поддомена namecheap?

У меня есть поддомен, который я хочу обновить с помощью ddclient. Я настроил ddclient для получения IP-адреса от dyndns, но он не обновляет поддомен в namecheap. Они сказали использовать yourdomain.com в качестве логина вместо моего реального домена.

Кто-нибудь смог обновить DNS namecheap с помощью ddclient?

Я использую CentOS 6.2 с ddclient 3.7.3.

Когда я запускаю ddclient, я получаю следующее.

CONNECT:  checkip.dyndns.org
CONNECTED:  using HTTP
SENDING:  GET / HTTP/1.0
SENDING:   Host: checkip.dyndns.org
SENDING:   User-Agent: ddclient/3.7.3
SENDING:   Connection: close
SENDING:
RECEIVE:  HTTP/1.1 200 OK
RECEIVE:  Content-Type: text/html
RECEIVE:  Server: DynDNS-CheckIP/1.0
RECEIVE:  Connection: close
RECEIVE:  Cache-Control: no-cache
RECEIVE:  Pragma: no-cache
RECEIVE:  Content-Length: 106
RECEIVE:
RECEIVE:  <html><head><title>Current IP Check</title></head><body>Current IP Address: IPADD</body></html>
Use of uninitialized value in string ne at /usr/sbin/ddclient line 1998.
WARNING:  skipping update of lf4bot from <nothing> to IPADD
WARNING:   last updated <never> but last attempt on Fri Jun 15 22:46:21 2012 failed.
WARNING:   Wait at least 5 minutes between update attempts.

Файл ddclient.conf

daemon=300                              # check every 300 seconds
syslog=yes                              # log update msgs to syslog
mail=root                               # mail all msgs to root
mail-failure=root                       # mail failed update msgs to root
pid=/var/run/ddclient.pid               # record PID in file.
ssl=yes                                 # use ssl-support.  Works with
use=web, web=checkip.dyndns.org/, web-skip='IP Address' # found after IP Address
protocol=namecheap \
server=dynamicdns.park-your-domain.com \
login=yourdomain.com \
password=PASSWORD \
lf4bot

3 ответа

Решение

Я использовал ddclient версии 3.7.3 на centos 6.2. Я не знаю, имеют ли значение версии, но способ, которым я в итоге настроил мои namecheap dyndns, был таким. Я сделал так, чтобы другие могли точно видеть, как они должны это сделать, просто заменив google.com, 8cc67226fadff52f402d31505ee85d6b и dev на ваши настройки.

Не добавляйте кавычки вокруг пароля и не ставьте запятые / обратную косую черту после каждой строки.

##
## NameCheap (namecheap.com)
##
protocol=namecheap
server=dynamicdns.park-your-domain.com
login=google.com
password=8cc67226fadff52f402d31505ee85d6b
dev

Я только что прошел этот процесс, и хочу отметить некоторые проблемы, которые взволновали меня.

Во-первых, это канонический справочник по настройке ddns для namecheap: http://www.namecheap.com/support/knowledgebase/article.aspx/583/11/how-to-configure-ddclient

Если вы не хотите полагаться на внешний веб-сервис для поиска вашего IP (как я), все немного сложнее. У ddclient есть возможность войти в свой маршрутизатор и получить оттуда ваш IP-адрес, что должно быть наиболее эффективным и надежным способом.

Первое, что вам нужно, это найти страницу, которая содержит ваш IP-адрес. Для меня это было http://192.168.1.1/RST_status.htm, Убедитесь, что когда вы "просматриваете источник" на этой странице, вы видите свой IP-адрес. Теперь выйдите из вашего роутера, иначе ddclient просто увидит сообщение об ошибке, как кто-то уже вошел в систему. Наконец, отредактируйте ваш /etc/ddclient.conf вот так:

protocol=namecheap
use=fw
fw=192.168.1.1/RST_status.htm
fw-login=admin
fw-password=<my-router-password>
server=dynamicdns.park-your-domain.com
login=<my-domain>.org
password='<8cc67226fadff52f402d31505ee85d6b>'
www

Чтобы убедиться, что это работает, запустите: ddclient --debug --verbose, Вы должны увидеть веб-страницу, которую он загружает с маршрутизатора, и IP-адрес, который он из него извлекает.

Вы, вероятно, не хотите использовать --noexec опция для отладки, так как тогда ddclient пропустит загрузку html с маршрутизатора и не найдет никакого IP-адреса. В этом случае вы увидите DEBUG: skipped network connection а также WARNING: unable to determine IP addressчто не хорошо.

У меня была такая же проблема с ddclient. Поэтому я написал простой модуль Perl, чтобы заботиться об обновлениях. Я разработал его, думая, как и все, что вы должны захватить ваш внешний ip и передать его в Namecheap с вашими основными параметрами. В этом нет необходимости, так как скрипт обновления на конце Namecheap сам определяет ваш IP.

Итак, вызов обновления прост:

use App::DDNS::Namecheap;

my $domain =  App::DDNS::Namecheap->new(
                  domain   => 'mysite.org',
                  password => 'abcdefghijklmnopqrstuvwxyz012345',
                  hosts    => [ "@", "www", "*" ],
);

while (1) {
    $domain->update();
    sleep (300); #5 minute cycle
}

Обратите внимание, что субдомены могут обрабатываться с использованием подстановочного знака. Просто определите "*" как субдомен A записи на вашей странице "Все записи хоста".

App:: DDNS:: Namecheap находится на CPAN, если вы заинтересованы.

Другие вопросы по тегам