Как я могу убедиться, что DDCLIENT использует SSL, и если это не так, как мне его форсировать?

9

Я следовал этому руководству по настройке VPN на моем пи. Часть шагов состоит в том, чтобы установить и настроить динамическую службу DNS. Я создал несколько учетных записей на нескольких платформах. Нет Ip и dynamicdns - это два имени. Ниже приведен вывод моего файла ddclient.conf, он прекрасно подключается на обоих сайтах динамического DNS.

daemon=60                               # check every 60 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
                                        # ssl-library
use=web, web=myip.dnsdynamic.com        # get ip from server.
server=www.dnsdynamic.org               # default server
login=YOURUSERNAME                      # default login
password=YOURPASSWORD                       # default password
server=www.dnsdynamic.org,              \
protocol=dyndns2                        \
MYDOMAIN.dnsdynamic.COM

Моя проблема заключается в том, что в этой статье они показывают, как проверить, подключен ли ваш пи по SSL. Когда я бегу

sudo ddclient -verbose -debug -noquiet -query 

это показывает соединение по HTTP против HTTPS или SSL для каждого сайта. Я проверил, что ssl был установлен, запустив

sudo apt-get install ssh libio-socket-ssl-perl

Любые идеи о том, если он подключается через SSL или как я могу заставить его? Я пробежал эту статью тоже. Я видел, что ddclient заявил, что будет использовать SSL, если он доступен, мне интересно, является ли это ограничением использования бесплатного сайта dynamicdns или я что-то пропускаю. Из-за статей это выглядело так, как будто сайты, которые я использую, не поддерживают IP и dnsdynamic.

Shaulinator
источник
1
Я вижу sudo ddclient -debug -verbose -noquietне так, sudo ddclient -verbose -debug -noquiet -query как у вас ... как во второй ссылке
Джордж Удосен
@ Джордж, это моя ошибка, я пропустил добавление -query. Тем не менее, если вы снова посмотрите на проблему со свежим настроением, и вы предложите мне снова взглянуть на проблему, это действительно помогло мне ее решить! Добавляем ответ и будем редактировать вопрос.
Шаулинатор,

Ответы:

4

Я нашел ответ и чувствую себя очень глупо, не понимая его раньше.

daemon=60                               # check every 60 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
                                        # ssl-library
use=web, web=https://myip.dnsdynamic.org        # get ip from server.
server=www.dnsdynamic.org               # default server
login=USERNAME                          # default login
password=PASSWORD                       # default password
server=www.dnsdynamic.org,              \
protocol=dyndns2                        \
YOUR DOMAIN GOES HERE

Вышеуказанное заставит SSL и соединится через SSL. Есть два изменения, которые я сделал.

Линия use=web, web=myip.dnsdynamic.comдолжна быть use=web, web=https://myip.dnsdynamic.org. Переключение с .comна .orgостанавливает сбои соединения. Добавление https://до строки подключения позволяет подключаться через SSL.

Выход из use=web, web=myip.dnsdynamic.orgшоу:

use=web, web=loopia address is IPADDRESSISHERE
CONNECT:  myip.dnsdynamic.org
CONNECTED:  using HTTP
SENDING:  GET / HTTP/1.0
SENDING:   Host: myip.dnsdynamic.org
SENDING:   User-Agent: ddclient/3.8.2
SENDING:   Connection: close

Выход из use=web, web=https://myip.dnsdynamic.orgшоу:

use=web, web=loopia address is IPADDRESSISHERE
CONNECT:  myip.dnsdynamic.org

The verification of cert '/C=US/O=GeoTrust Inc./CN=RapidSSL SHA256 CA/CN=www.dnsdynamic.org'
failed against the host 'myip.dnsdynamic.org' with the default verification scheme.

   THIS MIGHT BE A MAN-IN-THE-MIDDLE ATTACK !!!!

To stop this warning you might need to set SSL_verifycn_name to
the name of the host you expect in the certificate.

CONNECTED:  using SSL
SENDING:  GET / HTTP/1.0
SENDING:   Host: myip.dnsdynamic.org
SENDING:   User-Agent: ddclient/3.8.2
SENDING:   Connection: close

Я все еще не уверен, почему форсирование ssl=yesне заставляет его использовать HTTPS автоматически, но теперь оно подключается через SSL, и команда, видимая @George, помогает мне убедиться, что это:sudo ddclient -verbose -debug -noquiet -query

Shaulinator
источник
1

Это только часть «получить IP». Фактическое обновление динамического DNS-сервера не отображается в ваших выходных данных. Это все еще может быть сделано через HTTP.

root@ad26e03e9704:/bin# ddclient -daemon=0 -noquiet -debug -file /config/ddclient.conf
DEBUG:    get_ip: using cmd, /config/get_ip.sh reports 10.0.0.1
DEBUG:
DEBUG:     nic_dyndns2_update -------------------
DEBUG:    proxy  =
DEBUG:    url    = http://dyndns.strato.com/nic/update?system=dyndns&hostname=bla.mydomain.com&myip=10.0.0.1
DEBUG:    server = dyndns.strato.com
SUCCESS:  updating bla.mydomain.com: good: IP address set to 10.0.0.1

Если я поставлю https перед сервером, я получу:

DEBUG:    url    = http://https://dyndns.strato.com/nic/update?system=dyndns&hostname=bla.mydomain.com&myip=10.0.0.1
itbastian
источник
С момента публикации я выключил свой Pi, который запускает мой DDClient. Мне придется раскрутить экземпляр и дать еще один тест, чтобы увидеть, что показывает отладка. Спасибо!
Shaulinator
0

Так как меня тоже смутило то, что URL в строке вывода

DEBUG:    url    = http://(...)

начинается с HTTP вместо HTTPS, хотя у меня есть ssl=yesв моей конфигурации, я решил заглянуть в исходный код, чтобы увидеть, что происходит. Оказывается, что в функции, geturlгде инициируется соединение с сервером, http://деталь все равно удаляется из URL, так что это не указывает на фактический тип соединения. Если вы хотите убедиться, что ddclient использует SSL, просто вызовите ddclient из терминала как

sudo ddclient -verbose -force

и искать линии

CONNECTED:  using HTTP

или

CONNECTED:  using SSL

В последнем случае ddclient действительно использует SSL, и вы готовы к работе. Обратите внимание, что этот ssl=yesпараметр не применяется к начальному поиску IP-адреса, который ddclient использует для проверки того, изменился ли ваш общедоступный IP-адрес (тот, который настроен use=...), так что для этого начального соединения вы все еще видитеCONNECTED: using HTTPкак упомянуто @Shaulinator, если вы явно не установите адрес HTTPS. Однако это не должно быть проблемой безопасности, поскольку IP-адрес, возвращаемый этим запросом, вероятно, используется только для того, чтобы избежать ненужных усилий на стороне сервера; он не отправляется на сервер в реальном запросе на обновление, поскольку сервер тривиально знает ваш IP-адрес, когда ddclient инициирует соединение SSL. Я только проверил это явно для протокола freedns, но я был бы удивлен, если бы он был другим для других протоколов.

Eruvaer
источник