Мне очень трудно заставить ddclient
(который обновляет OpenDNS с моим текущим IP-адресом) работать. Он работает как демон, но мне никогда не удается обновить мой IP-адрес на openDNS
.
Для устранения неполадок я запускаю ddclient
из командной строки следующим образом.
(В этих примерах значения в квадратных скобках [] являются резервными для реальных значений по соображениям безопасности)
My /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
работает один раз, но затем происходит сбой при последующих раз.
Это от известной "ошибки" - она вызывается динамическим поставщиком DNS, использующим dyndns2 протокол неправильно и отправляющим уродливые ответы на ddclient
.
Проблема была давно решена в ddclient (на основе одного из патчей, связанных в trac), но ddclient Ubuntu является столь древним (наследованный от восходящего потока), что это не может даже быть исправлено вручную. (Ubuntu находится на версии. 106/Jan-2009, в то время как последнее r130/Nov-2011).
sudo apt-add-repository ppa:nathan-renniewaldock/ppa
sudo apt-get update && sudo apt-get install ddclient
(обновит при необходимости),PPA имеет последние версии для 10,04, 11.10 и 12.04.
Для любопытного вот бит патча/багги:
# bug #10: some dyndns providers does not return the IP so # we can't use the returned IP my ($status, $returnedip) = split / /, lc $line; $ip = $returnedip if (not $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 не показывает в их примере с Базой знаний, но я вспомнил, что должен был сделать раньше. То есть я должен поставить запятую между именами хостов, которые я хочу обновить (имя, которое стоит перед доменным именем). Ниже приведен мой пример, который в настоящее время работает с моим поставщиком домена.
daemon = 3600
ssl = yes
protocol = namecheap
use = web, web = dynamicdns.park-your-domain.com / getip
server = dynamicdns.park-your-domain.com
login = yourdomainname.com
password = 0fc0ur5ethi5i5n0tmypa55w0rdfoob
@, hostname1
< sup> пропустить эту крошечную запятую выдает ошибку sup>