我想调试 SSL 连接,因此我按照以下答案进行操作这问题并想运行第一个测试:
# openssl s_client -connect SERVER_IP:PORT -state -debug
并得到以下输出:
socket: Connection refused
connect:errno=111
我查了一下,发现它与 SSL 无关,这意味着服务器没有运行,或者端口被防火墙阻止。我登录到服务器并检查它是否确实正在运行,并且端口已打开以侦听所有 IP 地址:
# netstat -plan | grep PORT
tcp 0 0 0.0.0.0:PORT 0.0.0.0:* LISTEN PID/java
有趣的是:当我使用服务器的内部 IP 运行上述 openssl 命令时,我得到了预期的输出。
无论我尝试从客户端还是从服务器本身连接到服务器,行为都是相同的。
我将端口添加到了 iptables。它们现在的样子如下:
# iptables -L -v | grep PORT
40 4252 ACCEPT tcp -- any any anywhere anywhere tcp dpt:PORT
0 0 ACCEPT tcp -- any any anywhere anywhere state NEW tcp dpt:PORT
为什么我无法使用外部IP连接服务器,但使用内部IP却可以?
编辑:我的所有iptables
规则都有ACCEPT
关键字-该命令iptables -L -v | grep REJECT
没有输出。