私は実際には少し奇妙な問題を抱えています。 Ubuntu Server 12.04を実行していますが、最小限のパッケージセット:ベースシステム、sshd、およびIRCサーバーを使用しています。他の誰かがIRCネットワークに接続するようにサーバーを構成できるようにする必要があります。ただし、lsまたはcatの2行後にドロップしているようです。
オッダー、これはこのサーバーでのみ発生し、私はPuTTYまたはsshクライアントを使用してまったく再現することができませんでした。これを診断するにはどこを調べるべきですか? auth.log
は通常の接続と認証を示し、ドロップに関する詳細は提供しません。 fail2banには、発信元IPアドレスに関する違反はありません。
これは、転送されたポートを持つ仮想マシンです(ブリッジモードであり、通常のネットワーク接続があります)。ローカルで、LAN経由で、およびリモートロケーションからPuTTYを使用して問題なく接続できます。他の人はLinuxでssh
を使用して接続できますが、接続が切断されます。
サーバー側のログには、異常なものは何もありません。
開始する前に、両端のシステム時刻が同期されていることを確認してください。これは、後で比較するのに役立ちます。
TCPポート22でフィルター処理された両端でtcpdump
を実行します。クライアントがPuTTYを使用していることに言及しているため、Windowsを想定しています。 Wireshark for Windowsを入手でき、tcpdump
の代わりに使用できるキャプチャ機能があります。
tcpdump
を使用すると、tcpdump -w/tmp/ssh.pcap -s0 -ieth0 port 22
などのようになります。 Windows上のWiresharkでは、GUIを使用してポート22に対してフィルター処理されたキャプチャを設定し、キャプチャをディスクに保存できます。
次に、wiresharkで両方のキャプチャを開きます。切断点を見つけます。接続のシャットダウンを開始した端を確認できるはずです(FINまたはRST接続は最初にどこから到着しますか?)
また、サードパーティのホスト(ルーター、ISPなど)が接続に干渉していないかどうかを確認することもできます。たとえば、反対側から送信されたことのない到着パケットを見つけた場合、これを識別します。これが発生している場合、RSTパケットである可能性があります。
LTS14.04(以前は12.04からアップグレードされていました)から古い12.04サーバーに接続する際にこの問題が発生しました
問題は実行後のMTU関連であることがわかりました
Sudo ip li set mtu 1480 dev eth0
問題はなくなります..... 1500に戻すと戻ります
(有線eth0接続を使用していると仮定)
奇妙なsshタイムアウトが発生しましたが、次の方法で解決しました。
Sudo sysctl -w net.ipv4.tcp_keepalive_time=50 \
net.ipv4.tcp_keepalive_intvl=10 \
net.ipv4.tcp_keepalive_probes=5
これが役立つかどうかはわかりませんが、試してみる価値があるかもしれません。
問題のより良い説明なしではわかりにくい(「ドロップ」とはどういう意味ですか?TCPティアダウン?TCP RST?接続の停止?)パスMTUの検出に問題がある可能性があります...