1. ホーム
  2. linux

[解決済み] TCP: サーバはクライアントから[SYN]を受信後すぐに[RST, ACK]を送信する

2022-03-08 02:05:29

質問

ホスト_AがTCPでホスト_Bにあるデータを送信しようとした。Host_Bはポート8181でリッスンしている。Host_A & Host_B は両方とも Linux ボックス (Red Hat Enterprise) である。TCPレイヤーは、Java NIO APIを使用して実装されています。

Host_Aが何を送っても、Host_Bは受信できない。WireSharkを使ってワイヤ上のデータをスニッフィングしたところ、以下のようなログが得られました。

<ブロッククオート

1) Host_A (33253) > Host_B (8181)。[SYN] Seq=0 Win=5840 Len=0 MSS=1460 TSV=513413781 TSER=0 WS=7
2) Host_B (8181) > Host_A (33253)。[RST, ACK] Seq=1 Ack=1 Win=0 Len=0

ログを見ると、Host_Aは接続を確立するためにHost_Bに[SYN]フラグを送信していることがわかります。しかし、Host_Bは[SYN, ACK]の代わりに[RST, ACK]で応答し、接続をリセット/クローズしています。この動作は常に観察されます。

TCPリスナーが[SYN]に応答して[RST,ACK]を送信するのは、どのような状況なのでしょうか?

どのように解決するのですか?

RST, ACK は、ポートが閉じられていることを意味します。Host_Bが正しいIP/インターフェイスでリッスンしていることは確かですか?

また、ファイアウォールに -j REJECT --reject-with tcp-reset が設定されていないか確認してください。