Почему ddclient выдает ошибку "Invalid IP" при попытке обновить динамический DNS?

Мне очень трудно получить ddclient (который обновляет OpenDNS с моим текущим IP-адресом), чтобы работать. Он работает как демон, но мне никогда не удается обновить мой IP-адрес в openDNS,

Чтобы устранить неполадки, я бегу ddclient из командной строки следующим образом.

(В этих примерах значения в квадратных скобках [] являются заменой реальных значений в целях безопасности)

мой /etc/ddclient.conf содержит:

use=web, web=checkip.dyndns.org/, web-skip='IP Address'
server=updates.opendns.com
protocol=dyndns2
login=[my login]
password=[my password]
Home

Когда я бегу:

sudo ddclient -daemon=0 -debug -verbose -noquiet

Я получил:

WARNING:  file /var/cache/ddclient/ddclient.cache, line 3: Invalid Value for keyword 'ip' = ''
...
WARNING:  skipping update of Home from <nothing> to [my real ip].
WARNING:   last updated <never> but last attempt on Tue Oct  4 08:38:32 2011 failed.

Если я rm файл кеша, ddclient работает один раз, но затем не работает в последующие времена.

3 ответа

Решение

Известная ошибка - исправлена ​​восходящая версия - получить последнюю версию из PPA

Это связано с известной "ошибкой", вызванной тем, что провайдер динамического DNS неправильно использует протокол dyndns2 и отправляет некорректные ответы ddclient,

Проблема уже давно была исправлена в ddclient (на основе одного из патчей, связанных в trac), но ddclient в Ubuntu настолько древний (унаследованный от апстрима), что его нельзя исправить даже вручную. (Ubuntu выпускается в редакции 106/ январь-2009, а последняя - в r130/ ноябрь-2011).

Решение:

  1. Добавьте этот PPA с sudo apt-add-repository ppa:nathan-renniewaldock/ppa
  2. sudo apt-get update && sudo apt-get install ddclient (будет обновлять при необходимости)

PPA имеет последние версии для 10.04, 11.10 и 12.04.


Для любопытных, вот немного патча / багги:

        # ошибка #10: некоторые провайдеры dyndns не возвращают IP, так
        # мы не можем использовать возвращенный IP
        my ($status, $returnip) = split / /, lc $line;
        $ip = $returnip if (не $ip);

Вам нужен более новый пакет ddclient из ppa:nathan-renniewaldock/ppa, но имейте в виду, что этот PPA содержит много других пакетов, которые вам могут не понадобиться, если все, что вам нужно, - это заставить работать ddclient. Используйте эти шаги только для обновления ddclient.

sudo apt-get install python-software-properties
sudo apt-add-repository ppa:nathan-renniewaldock/ppa

Теперь от имени root создайте файл /etc/apt/preferences.d/nathan-prefs и отредактируйте его, чтобы он выглядел так (включая пустую строку, которая важна)

Package: *
Pin: release o=LP-PPA-nathan-renniewaldock
Pin-Priority: 400

Package: ddclient
Pin: release o=LP-PPA-nathan-renniewaldock
Pin-Priority: 500

Это говорит apt-get игнорировать пакеты из PPA, отличные от ddclient. Так что теперь это должно быть безопасно сделать это, чтобы установить его:

sudo apt-get update && sudo apt-get install ddclient

Или, если вы уже установили его, сделайте это:

sudo apt-get upgrade

Просто убедитесь, что только ddclient будет обновлен.

пропустить обновление @ с до 71.422.000.000.

Большую часть времени, когда я получаю это предупреждение после настройки моего ddclient
ВНИМАНИЕ: файл /var/cache/ddclient/ddclient.cache, строка 3: недопустимое значение для ключевого слова 'ip' = ''
это из-за опечатки или просто небольшого изменения в файле ddclient.conf. Мне нужно построчно проверить и сравнить мои примеры с провайдерами домена.

Я использую NameCheap, потому что мне нравится безопасность их системы паролей, которая привязана к каждому домену индивидуально, генерируется автоматически и может быть изменена быстро и легко.

Моей последней проблемой было то, что NameCheap не показывает в их примере с Базой знаний, но я вспомнил, что должен был сделать раньше. То есть я должен поставить запятую между именами хостов, которые я хочу обновить (имя, которое стоит перед доменным именем). Ниже приведен мой пример, который в настоящее время работает с моим поставщиком домена.

демон =3600
= да SSL
Протокол = Namecheap
use = web, web =dynamicdns.park-your-domain.com / getip
Сервер =dynamicdns.park-your-domain.com
войдите =yourdomainname.com
пароль = 0fc0ur5ethi5i5n0tmypa55w0rdfoob
@, hostname1
пропустив эту крошечную запятую выдает ошибку

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