Почему 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).
Решение:
- Добавьте этот PPA с
sudo apt-add-repository ppa:nathan-renniewaldock/ppa
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
пропустив эту крошечную запятую выдает ошибку