[networking] TCP / IP 재설정 (RST) 플래그가 전송되는 원인은 무엇입니까?

내 앱의 TCP / IP 연결이 10 분마다 (정확히 1 ~ 2 초 내에) 계속 딸꾹질하는 이유를 알아 내려고합니다. Wireshark를 실행 한 결과 10 분 동안 활동이 없으면 상대방이 재설정 (RST) 플래그가 설정된 패킷을 보내는 것을 발견했습니다. Google 검색에서 “RESET 플래그는 수신자가 혼란스러워서 연결을 중단하려고 함을 나타냅니다.”라는 메시지가 표시되지만 필요한 세부 정보가 조금 부족합니다. 원인은 무엇입니까? 그리고 도중에 일부 라우터가이를 담당 할 수 있습니까? 아니면 항상 다른 엔드 포인트에서 올 수 있습니까?

편집 : 내 컴퓨터와 다른 엔드 포인트 사이에 라우터 (특히 Linksys WRT-54G)가 있습니다. 라우터 설정에서 찾아봐야 할 것이 있습니까?



답변

‘라우터’는 무엇이든 할 수 있습니다. 특히 NAT는 트래픽에 버그가 많은 엉망이 될 수 있습니다.

장치가 RST를 보내는 한 가지 이유는 닫힌 소켓에 대한 패킷 수신에 대한 응답입니다.

TCP가 시작된 이래로 가능한 모든 변태가 TCP에서 방문되었고 모든 종류의 사람들이 트래픽을 차단하기 위해 RST를 삽입 할 수 있기 때문에 확고하지만 일반적인 대답을하기는 어렵습니다. (예를 들어 일부 ‘국가 방화벽’은 이와 같이 작동합니다.)


답변

피어에서 패킷 스니퍼 (예 : Wireshark)를 실행하여 RST를 보내는 피어인지 중간에있는 사람인지 확인합니다.


답변

이 문제를 해결하는 데 상당한 시간을 보냈습니다. 제안 된 솔루션 중 어느 것도 작동하지 않았습니다. 우리 시스템 관리자가 실수로 서로 다른 그룹에 속하는 두 개의 관련없는 서버에 동일한 고정 IP를 할당했지만 동일한 네트워크에있는 것으로 나타났습니다. 최종 결과는 간헐적으로 vnc 연결이 끊어졌고, 웹 페이지를 가져 오기 위해 여러 번 새로 고쳐야하는 브라우저 및 기타 이상한 것들이었습니다.


답변

일부 방화벽은 연결이 x 분 동안 유휴 상태 인 경우이를 수행합니다. 일부 ISP는 다양한 이유로 라우터를 설정합니다.

이 시대에는 그 상태를 우아하게 처리 (필요에 따라 다시 설정)해야합니다.


답변

RST는 마지막 ACK를 보내는 쪽이기 때문에 액티브 클로즈를하는 쪽에서 보냅니다. 따라서 잘못된 상태에서 패시브 클로즈를 한 쪽에서 FIN을 받으면 상대방에게 오류가 발생했음을 알리는 RST 패킷을 보냅니다.


답변

NAT를 수행하는 라우터, 특히 리소스가 거의없는 로우 엔드 라우터가있는 경우 가장 오래된 TCP 세션을 먼저 에이징합니다. 이를 위해 RST수신 스테이션에 (매우 비정상적으로) 연결을 종료하도록 효과적으로 알리는 패킷에 플래그를 설정합니다 . 이것은 자원을 절약하기 위해 수행됩니다.


답변

주의해야 할 한 가지는 많은 Linux netfilter 방화벽이 잘못 구성되어 있다는 것입니다.

다음과 같은 경우 :

-A FORWARD -m state –state RELATED, ESTABLISHED -j ACCEPT

-A 앞으로 -p tcp -j REJECT –reject-with tcp-reset

그런 다음 패킷 재정렬로 인해 방화벽이 패킷이 유효하지 않은 것으로 간주하고 재설정을 생성하여 정상적인 연결을 끊을 수 있습니다.

재정렬은 특히 무선 네트워크에서 발생할 가능성이 높습니다.

대신 다음과 같아야합니다.

-A FORWARD -m state –state RELATED, ESTABLISHED -j ACCEPT

-A FORWARD -m 상태 –state INVALID -j DROP

-A 앞으로 -p tcp -j REJECT –reject-with tcp-reset

기본적으로 다음이있을 때마다 :

… -m state –state RELATED, ESTABLISHED -j ACCEPT

바로 뒤에 다음이 와야합니다.

… -m state –state INVALID -j DROP

패킷을 삭제 한 다음 tcp 재설정을 방해하는 잠재적 인 프로토콜을 생성하는 것이 좋습니다. 재설정은 보낼 수있는 올바른 것일 때 더 좋습니다. 이렇게하면 시간 초과가 제거되기 때문입니다. 그러나 그들이 무효 일 가능성이 있다면 이런 종류의 고통을 유발할 수 있습니다.