linux – 为什么TLS握手在VPS上*永远*(20秒)?

我有一台服务器通常可以正常工作,但在尝试连接SSL时会卡住20秒(SSH或HTTPS显示相同的模式.)

我尝试了没有SSL的各种连接,例如telnet:

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查看服务器使用情况,CPU为0%,当发生某些事情时,它会在1分钟内达到0.01%的百分比.使用报告.因此整个服务器没有被任何方式挂钩(即,此时它是一个测试服务器,我们还没有被其他人点击.)

所以我的问题是:什么可能导致这种放缓?

我想也许OpenSSL可能会尝试使用/ dev / random,但我以前从未听说过这样的问题.随机设备在该VPS上根本不输出太多.但是,/ dev / urandom非常有效.我可以在几秒钟内获得1Mb的随机数据.我可以通过什么来解决这个问题呢?

/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.1地址之外的所有127.0.0.0.

Debian和Ubuntu使用您的域名在127.0.1.1的/ etc / hosts中定义了一个条目.您应该在/ etc / hosts文件的开头看到类似的内容:

127.0.1.1     hostname.example.com hostname

我不得不检查我的防火墙,实际上我决定打开所有的127.x.x.x,因为它们都是私有网络的一部分,这些都是安全的IP.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


查找全部容器的日志文件 $ sudo find /var/lib/docker/containers -name *.log 查看日志位置 $ docker inspect --format='{{.LogPath}}' <container_name> 实时查询内容 $
Linux日志文件中列属性的详细解析
在Linux系统中没有duf命令,如何有效地管理磁盘空间?
深入探讨EncryptPad在Linux操作系统中的功能和优势
原理和应用场景:Linux中ttyload工具的工作原理和实际用途
深度解析SELinux的三种策略类型
评估Linux系统性能的ttyload工具使用效果
分享在Linux系统中检测SSH版本的方法
介绍Linux平台上的数据加密工具EncryptPad
在Linux系统中,如何查看和诊断块设备信息?
在Linux环境下如何查看块设备信息?
探索Linux操作系统下的数据加密工具EncryptPad
学会在Linux系统中查看硬盘信息
分析SELinux:原理与实践
掌握SELinux策略类别
技巧:有效解读和管理Linux日志文件
查看Linux系统中的所有用户
了解Linux系统中各种不同类型的日志文件
深入理解Linux PS命令
方法:在Linux操作系统中查看用户