調試兩個 Linux 伺服器之間的連接問題
我有兩台執行 iptables 和 apf 的 CentOS 5 伺服器。
我在使用 ssh 從伺服器 1 連接到伺服器 2 時遇到問題。我可以從伺服器 1 連接到第三台伺服器,並從第三台伺服器連接到 1 和 2。
在所有情況下,我都使用 IP 地址而不是主機名。
我已經停止了所有伺服器上的 iptables 和 apf,它似乎沒有改變任何東西。
調試此過程的最佳方法是什麼?
在伺服器上,打開調試在不同的埠上執行 ssh 守護程序,並使用帶有詳細標誌的 ssh 客戶端連接到它。如:
sshd -ddd -p 2222
在客戶端(server1)上嘗試:
ssh -vvv -p 2222 server2
這是典型的第一步,除非您有一些其他數據要開始。如果這沒有幫助(沒有提供進一步的線索),我會嘗試對 server2 上的正常 sshd 進行 strace 或 ltrace 。
祝你好運。
這裡的一般程序應該是消除問題類別以縮小範圍,就像任何故障排除一樣。最初,我認為您的問題特定於 ssh(特別是 Linux 上的 OpenSSH),如果您在 2 個主機之間遇到 ssh 問題,檢查調試消息是有效的第一步。
但是,您提到兩個框之間的其他應用程序無法正常工作,這意味著這不是特定於應用程序的問題。OpenSSH 調試可能會有所幫助,但值得假設所有這些協議(網路)的共同點存在問題。此外,您說第三台伺服器可以到達 server2…,這樣就消除了大量潛在問題。
目前我最好的猜測是,根據連接超時和其他資訊,您在伺服器或客戶端上存在 iptables 問題,設置為從客戶端傳出或從伺服器傳入的 DROP 數據包,但僅來自那個盒子,而不是其他盒子。在這一點上,我對 APF 的無知使我步履蹣跚,我只使用股票 iptables。
如果 iptables 被完全禁用(鏈策略重置為 ACCEPT),那麼您必須假設這是一個更普遍的網路問題。我詢問了網路遮罩,因為我正在考慮我在遙遠的過去看到的類似問題,不同子網上的盒子可以說話,但同一子網上的盒子不能工作。如果“server3”在不同的網路上並且仍然可以到達 server1 和 server2,那麼這不是路由問題。
不管答案是什麼,我都很好奇。