从我的一台服务器连接到https站点时遇到一个奇怪的问题.
当我输入:
telnet puppet 8140
我看到了一个标准的telnet控制台,可以像往常一样与服务器通信:
Connected to athena.hidden.tld. Escape character is '^]'. GET / HTTP/1.1 <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> <html><head> <title>400 Bad Request</title> </head><body> <h1>Bad Request</h1> <p>Your browser sent a request that this server could not understand.<br /> Reason: You're speaking plain HTTP to an SSL-enabled server port.<br /> Instead use the HTTPS scheme to access this URL,please.<br /> <blockquote>Hint: <a href="https://athena.hidden.tld:8140/"><b>https://athena.hidden.tld:8140/</b></a></blockquote></p> <hr> <address>Apache/2.2.16 (Debian) Server at athena.hidden.tld Port 8140</address> </body></html> Connection closed by foreign host.
但是当我尝试使用ssl连接到同一主机和端口时:
openssl s_client -connect puppet:8140
它不起作用
connect: No route to host connect:errno=113
我很迷惑.起初它听起来像防火墙问题,但这不可能,是吗?因为这也会阻止telnet连接.
作为防火墙我在两台服务器上使用ferm.
这些系统是debian squeeze vm-Box.
[编辑1]
即使我尝试直接连接IP地址:
openssl s_client -connect 198.51.100.1:8140 #address exchanged connect: No route to host connect:errno=113
用两个主机关闭防火墙
service ferm stop
也没有帮助.
但是,当我这样做
openssl s_client -connect localhost:8140
它在服务器机器上正常连接.
[编辑2]
如果我用telnet连接到IP,它也无法正常工作.
telnet 198.51.100.1 8140 Trying 198.51.100.1... telnet: Unable to connect to remote host: No route to host
混乱可能来自IPv6.我的所有主机上都有IPv6.似乎telnet默认使用IPv6,这是有效的.
例如:
telnet -6 puppet 8140
工作,但
telnet -4 puppet 8140
不起作用.所以IPv4路由似乎有问题. openssl似乎只是(或默认情况下)使用IPv4,因此失败但telnet使用IPv6并成功.
解决方法
你能检查一下你是否可以ping目标主机吗? (IPv4)好像
>您的IPv4连接已损坏
>有AAAA和A记录
> telnet设法更喜欢IPv6
> openssl避免使用IPv6
这可能只是一个问题,沸腾到IPv4连接不起作用到目标主机.两台计算机上的IPv4路由都正常吗?