TCP 설정 상태 소켓을 정리하는 방법은 무엇입니까?

TCP 설정 상태 소켓을 정리하는 방법은 무엇입니까?

Ubuntu 22.04를 실행하는 임대 VDS 서버에 문제가 있습니다. 내 서버를 보호하기 위해 ufw(간단한 방화벽)를 활성화하고 2222SSH 서버와 8080프록시 서버라는 두 개의 TCP 포트에 대한 액세스만 허용했습니다.

tcptrack들어오는 연결을 모니터링하는 일환으로 이 애플리케이션을 설치했습니다 . 처음에는 모든 것이 잘 진행되는 것처럼 보였습니다. 그러나 나는 나에게 알려지지 않은 IP 주소에서 시작되는 관련 없는 TCP 연결 요청이 많이 있다는 것을 발견했습니다. 대부분의 요청은 적절한 시간 내에 올바르게 거부되고 종료되지만 일부 연결은 ESTABLISHED 상태로 무기한 유지됩니다. 불행하게도 이 영구 연결 목록은 서버를 다시 시작하지 않는 이상 계속해서 늘어납니다.

조사를 위해 SSH 서버 로그를 확인했지만 /var/log/auth.log내 로그(인증만 지원) 외에는 성공적인 인증 인스턴스를 찾지 못했습니다.publickey

여전히 해당 ESTABLISHED상태에 있고 목록에 계속 나타나는 tcptrack연결이 걱정됩니다. 일정 기간 동안 활동이 없으면 이러한 연결이 종료될 것으로 예상됩니다. 왜 이런 상태가 무한정 유지되며, 늘어나는 목록이 내 서버 기능에 어떤 영향을 미치나요? 마지막으로 활동이 없을 때 설정된 연결을 자동으로 종료하도록 Linux 또는 sshd를 구성하는 방법이 있습니까?

tcptrack 출력

답변1

나는 가지고있다tcptrack 소스 코드 탐색, tcptrack이 자체 연결 상태 추적을 수행한다고 결론지었습니다. 표시되는 상태는 Linux 커널에 있는 TCP 상태 머신 1의 상태와 다릅니다.

즉, 이 디스플레이가 실제로 수십억 개의 연결된 장치에 전원을 공급하는 Linux 커널 내부의 버그인지, 아니면 단순히 tcptrack패킷을 잘못 해석하여 연결이 만성적으로 건강하지 못한 상태에 있다고 결론을 내리는 것인지 알 수 없습니다. -ESTABLISHED 상태가 확립되었습니다.

tcptrack실제 커널 네트워크 스택을 프로파일링할 때 연결 추적으로 인해 컴퓨팅 주기가 손실되고 있음을 알려주지 않는 한 이것이 잘못된 것이라고 생각합니다 . 테스트해 볼 수 있습니다. 중지 tcptrack하고 다시 시작하세요. 여전히 동일한 수의 ESTABLISHED가 있지만 몇 시간 동안 유휴 연결이 있습니까?


¹ 그렇게 부르고 싶다면 - 그게 바로 그거예요.복잡한.

관련 정보