Назад | Перейти на главную страницу

Почему рукопожатие TLS занимает * вечность * (20 секунд) на VPS?

У меня есть сервер, который обычно работает нормально, но зависает на 20 секунд при попытке подключиться с помощью SSL (SSH или HTTPS отображают тот же шаблон).

Я пробовал разные соединения без SSL, например, телнет:

telnet server-name 80

Введена команда GET

GET http://server-name/
Host: server-name
Accept: text/html, */*
Accept-Language: en-us
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)

И ответ на 100% мгновенный.

Однако, когда я пытаюсь подключиться к серверу через HTTPS в моем браузере или использую SSH для подключения к тому же серверу, он остается около 20 секунд перед подключением.

Тогда для SSH он будет работать нормально (т.е. больше не будет медленным). Для HTTPS каждый раз при повторном подключении он будет медленным. Однако соединение, которое не закрывается, продолжит работать быстро.

Я добавляю снимок экрана с информацией о сети, появляющейся в Firebug. Как мы видим, каждый раз при попытке нового подключения 20 секунд. Глядя на использование сервера с помощью htop, загрузка ЦП составляет 0%, а когда что-то происходит, он достигает 0,01% в течение 1 минуты. отчет об использовании. Таким образом, сервер в целом никоим образом не привязан (то есть на данный момент это тестовый сервер, и мы еще не получаем обращений от других).

Поэтому у меня вопрос: что могло вызвать такое замедление?

Я подумал, может быть, OpenSSL пытается использовать / dev / random, но я никогда раньше не слышал о такой проблеме. Случайное устройство не выводит много данных на этом VPS. Однако / dev / urandom работает очень хорошо. Я могу получить 1 МБ случайных данных за несколько секунд. Что я могу найти, чтобы решить эту проблему?


/etc/resolv.conf похоже на Google DNS. Должно быть быстро ...

# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
#     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
nameserver 8.8.8.8
nameserver 8.8.4.4

Обратите внимание, что сама по себе настройка Apache2 не имеет прямого значения, так как это также происходит с SSH ...


Также я пробовал с ssh -vvv. Подключение происходит мгновенно.

OpenSSH_6.6.1, OpenSSL 1.0.1f 6 Jan 2014
debug1: Reading configuration data /home/alexis/.ssh/config
debug1: /home/alexis/.ssh/config line 202: Applying options for do-nia2match
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug1: Hostname has changed; re-reading configuration
debug1: Reading configuration data /home/alexis/.ssh/config
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug2: ssh_connect: needpriv 0
debug1: Connecting to 178.62.213.172 [178.62.213.172] port 22.
debug1: Connection established.
...
debug1: SSH2_MSG_NEWKEYS received
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug2: service_accept: ssh-userauth
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug2: key: /home/alexis/.ssh/do-nia2match_rsa, explicit

SUPER LONG PAUSE HAPPENS HERE (~20s)

debug1: Authentications that can continue: publickey,password
debug3: start over, passed a different list publickey,password
debug3: preferred publickey,keyboard-interactive
debug3: authmethod_lookup publickey
...

Я не совсем уверен, почему при отправке ключа SSH-сервер зависал на 20 секунд ...

Я узнал (далеко назад - см. Комментарии), что блокировал все адреса 127.0.0.0, кроме 127.0.0.1.

Debian и, следовательно, Ubuntu определяют запись в вашем /etc/hosts на 127.0.1.1 с вашим доменным именем. Вы должны увидеть что-то подобное в начале своего /etc/hosts файл:

127.0.1.1     hostname.example.com hostname

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