Как я могу получить ddclient для работы с freedns?

8

Я использую сервис динамического DNS на freedns.afraid.org для моего сервера 12.04. Я предполагал, что протоколы будут стандартизированы и что ddclient будет работать, но, очевидно, нет. Я получаю это сообщение в / var / log / syslog:

ERROR: Invalid update URL (2): unexpected status ()

Я пытался использовать обновленную версию ddclient из альтернативного PPA, описанного в этом ответе , но затем я столкнулся с этой ошибкой:

FATAL:    Error loading the Perl module Digest::SHA1 needed for freedns update.
FATAL:     On Debian, the package libdigest-sha1-perl must be installed.

И когда я пытаюсь установить этот пакет, я получаю это:

E: Unable to locate package libdigest-sha1-perl

Что приводит меня к этому сообщению об ошибке , которое, по-видимому, не имеет решения. Как поступить?

Роб Фишер
источник
Похоже, ошибка исправлена ​​в 3.8.2 , теперь ddclient отлично работает с freedns из коробки.
jesjimher

Ответы:

11

Пока ddclient не исправлен , вы можете вручную установить старый модуль, который он хочет:

sudo apt-get install cpanminus
cpanm --sudo Digest::SHA1

Страница клиентов бесплатного DNS и ddclient --helpпредоставьте примеры конфигураций ddclient. Перезапустите ddclient, чтобы изменения вступили в силу:

sudo service ddclient restart
ændrük
источник
Я предпочитаю это взламыванию самого ddclient, спасибо.
Роб Фишер
3

Я смог заставить FreeDNS работать, просто отредактировав эти две строки /usr/sbin/ddclient:

От:

my $sha1_loaded = eval {require Digest::SHA1};

Для того, чтобы:

my $sha1_loaded = eval {require Digest::SHA};

От:

import  Digest::SHA1 (qw/sha1_hex/);

Для того, чтобы:

import Digest::SHA (qw/sha1_hex/);
matrixman
источник
2

Комментарий в сообщении об ошибке свидетельствует о том , что он «легко менять программы использовать Digest :: SHA вместо Digest :: SHA1».

Итак, полные шаги, во-первых, потому что add-apt-repository не установлен по умолчанию:

sudo apt-get install python-software-properties

Затем, как описано в izx:

sudo apt-add-repository ppa:nathan-renniewaldock/ppa

Теперь этот репозиторий содержит много пакетов, но нам нужен только ddclient. Поэтому создайте файл настроек, такой как `/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

Теперь установите ddclient:

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

Теперь станьте пользователем root и отредактируйте / usr / sbin / ddclient. Ищите require Digest::SHA1и замените его на require Digest::SHA. Затем найдите import Digest::SHA1несколько строк позже и замените их на import Digest::SHA.

Наконец, откройте /etc/ddclient.conf и сделайте так, чтобы он выглядел примерно так (обратите внимание на протокол):

daemon=3600
protocol=freedns
use=if, if=eth0
ssl=yes
use=web, web=myip.dnsomatic.com
server=freedns.afraid.org
login=username
password='password'
mydomain.example.com

Главное, что меня не устраивает - это взлом файла и нарушение управления пакетами в Ubuntu. Лучшим решением было бы исправить PPA.

Роб Фишер
источник
-1

Вы можете получить его из: libdigest-sha1-perl

Вам также может понадобиться установить libio-socket-ssl-perl . Проверьте свой системный журнал

user211708
источник
N: Невозможно найти пакет libdigest-sha1-perl
Konstigt