![클라이언트의 [SYN] 패킷을 수신한 후 내 HTTP 프록시가 [SYN,ACK]에 응답하지 않는 이유는 무엇입니까?](https://linux55.com/image/24079/%ED%81%B4%EB%9D%BC%EC%9D%B4%EC%96%B8%ED%8A%B8%EC%9D%98%20%5BSYN%5D%20%ED%8C%A8%ED%82%B7%EC%9D%84%20%EC%88%98%EC%8B%A0%ED%95%9C%20%ED%9B%84%20%EB%82%B4%20HTTP%20%ED%94%84%EB%A1%9D%EC%8B%9C%EA%B0%80%20%5BSYN%2CACK%5D%EC%97%90%20%EC%9D%91%EB%8B%B5%ED%95%98%EC%A7%80%20%EC%95%8A%EB%8A%94%20%EC%9D%B4%EC%9C%A0%EB%8A%94%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F.png)
Linux(RHEL 5.5)에서 실행 중인 http 프록시가 있고 클라이언트로부터 [SYN] 패킷을 받은 후 간헐적으로 [SYN,ACK] 패킷으로 응답하지 않습니다. 이 문제는 에이전트를 다시 시작하면 되돌릴 수 있습니다. 에이전트 프로세스에 대해 gstack을 실행했지만 각 스레드의 스택에 문제(중지)가 표시되지 않았습니다. 이 문제가 발생하는 동안 "SYN_RECV" 상태에 있는 연결은 100개 미만이었습니다.
어떤 아이디어가 있나요? 이와 같은 문제는 어디에서 디버깅을 시작해야 합니까?
어떤 조언이라도 대단히 감사하겠습니다.
답변1
SYN 및 ACK 부족은 일반적으로 서버 소프트웨어가 accept
연결되지 않았음을 나타냅니다. 이는 여러 가지 이유 때문일 수 있으며, 대부분 일종의 리소스 고갈일 가능성이 높습니다. 서버 프로세스를 시도하여 시스템 호출 strace
에 있는지 확인 accept
하거나 선택을 위해 파일 설명자의 서버 소켓에서 작업을 수행할 수도 있습니다 select
.poll
답변2
방화벽 문제인 것 같습니다. TCP 연결이 첫 번째 SYN+ACK 응답을 받으면 패킷이 프록시 서버로 전송되지 않을 가능성이 높습니다.
서버 측과 클라이언트 측을 확인하십시오.