调试两个 Linux 服务器之间的连接问题

调试两个 Linux 服务器之间的连接问题

我有两台运行 iptables 和 apf 的 CentOS 5 服务器。

我在从服务器 1 使用 ssh 连接到服务器 2 时遇到了问题。我可以从服务器 1 连接到第三台服务器,然后从第三台服务器连接到 1 和 2。

在所有情况下我都使用 IP 地址而不是主机名。

我已经在所有服务器上停止了 iptables 和 apf,但似乎没有任何改变。

调试这个过程的最佳方法是什么?

答案1

在服务器上,在不同的端口上运行 ssh 守护程序并打开调试功能,然后使用带有详细标志的 ssh 客户端连接到它。如下所示:

sshd -ddd -p 2222

在客户端(server1)上尝试:

ssh -vvv -p 2222 server2

这是典型的第一步,除非您有其他数据可以开始。如果这没有帮助(没有提供进一步的线索),我会尝试对 server2 上的正常 sshd 进行 strace 或 ltrace。

祝你好运。

这里的一般程序应该是排除问题类别以缩小问题范围,就像任何故障排除一样。最初,我以为你的问题特定于 ssh(特别是 Linux 上的 OpenSSH),如果你在 2 个主机之间遇到 ssh 问题,检查调试消息是有效的第一步。

但是,您提到两台机器之间的其他应用程序无法正常工作,这意味着这不是特定于应用程序的问题。OpenSSH 调试可能会有所帮助,但值得假设的是,所有这些协议(网络)都存在一些共同的问题。此外,您说第三台服务器可以访问 server2... 这样就消除了大量潜在问题。

目前,根据连接超时和其他信息,我最好的猜测是,服务器或客户端上存在 iptables 问题,某些设置被设置为丢弃从客户端发出或从服务器传入的数据包,但仅限于该框,而不包括其他框。由于我对 APF 的无知,我只能使用普通的 iptables。

如果 iptables 完全禁用(链策略重置为 ACCEPT),那么您必须假设这是一个更通用的网络问题。我问了网络掩码,因为我在想我很久以前见过的类似问题,不同子网上的盒子可以通信,但同一子网上的盒子无法工作。如果“server3”位于不同的网络上,并且仍然可以访问 server1 和 server2,那么这不是路由问题。

无论答案是什么,我都很好奇。

相关内容