mingming

Windows TCP/IP 포트 고갈 문제 해결 본문

Windows

Windows TCP/IP 포트 고갈 문제 해결

mingming_96 2025. 6. 3. 21:53

문제 상황

얼마 전, Datadog 에이전트가 Down되었다는 알림을 받았습니다. 도메인 계정으로 원격 접속을 시도했지만, 아래와 같은 오류 메세지와 함께 접속이 실패했습니다. 

원격 데스크톱 컴퓨터와 원격 컴퓨터 간에 시간 또는 날짜 차이가 있기 때문에 원격 컴퓨터의 ID를 확인할 수 없습니다. 컴퓨터의 시계가 올바른 시간으로 설정되어 있는지 확인한 다음 다시 연결해 보세요. 문제가 다시 발생하면 네트워크 관리자 또는 원격 컴퓨터 소유자에게 문의하세요.

 

단서를 찾아서

위의 원격 접속 실패 오류 메세지와 관련된 공식문서를 찾을 수 있었습니다.

https://learn.microsoft.com/ko-kr/troubleshoot/windows-server/remote/remote-desktop-cannot-verify-identity-connecting-remote-machine#rdp-error-is-intermittent

 

원격 데스크톱에서 원격 컴퓨터의 ID를 확인할 수 없음 - Windows Server

원격 데스크톱이 도메인에 가입된 원격 컴퓨터에 연결할 때 원격 컴퓨터 오류의 ID를 확인할 수 없는 문제를 해결하는 데 도움이 됩니다.

learn.microsoft.com

 

" 영향을 받는 컴퓨터에 포트 소모가 있는지 확인하려면 이벤트 뷰어 시스템 로그를 열고 다음 이벤트 중 어느 것이 기록되는지 확인합니다. "

 

이벤트 ID 원본 설명
1129 그룹 정책 도메인 컨트롤러에 대한 네트워크 연결이 부족하여 그룹 정책 처리에 실패했습니다. 일시적인 상태일 수 있습니다. 컴퓨터가 도메인 컨트롤러에 연결되고 그룹 정책이 성공적으로 처리되면 성공 메시지가 생성됩니다. 몇 시간 동안 성공 메시지가 표시되지 않으면 관리자에게 문의하세요.
4227 TCPIP 선택한 로컬 엔드포인트가 최근에 동일한 원격 엔드포인트에 연결하는 데 사용되었기 때문에 TCP/IP가 나가는 연결을 설정하지 못했습니다. 이 오류는 일반적으로 나가는 연결이 높은 속도로 열리고 닫혀 사용 가능한 모든 로컬 포트를 사용하고 TCP/IP가 나가는 연결에 로컬 포트를 다시 사용하도록 강제하는 경우에 발생합니다. 데이터 손상 위험을 최소화하기 위해 TCP/IP 표준은 지정된 로컬 엔드포인트에서 지정된 원격 엔드포인트로의 연속 연결 간에 최소 기간이 경과해야 합니다.
4231 TCPIP 이러한 모든 포트가 사용 중이기 때문에 전역 TCP 포트 공간에서 임시 포트 번호를 할당하는 요청이 실패했습니다.
5719 NETLOGON 이 컴퓨터는 다음으로 인해 도메인 CONTOSO의 도메인 컨트롤러를 사용하여 보안 세션을 설정할 수 없습니다.
도메인을 사용할 수 없으므로 이 자격 증명으로 로그인할 수 없습니다. 디바이스가 조직의 네트워크에 연결되어 있는지 확인하고 다시 시도합니다. 이전에 다른 자격 증명으로 이 디바이스에 로그인한 경우 해당 자격 증명으로 로그인할 수 있습니다.
이로 인해 인증 문제가 발생할 수 있습니다. 이 컴퓨터가 네트워크에 연결되어 있는지 확인합니다. 문제가 지속되면 도메인 관리자에게 문의하세요.

 

 

문제 진단

로컬 계정으로 로그인한 뒤, 아래 명령어로 현재 포트 사용 상황을 확인했습니다:

netstat -an | find /i "TIME_WAIT"

생각보다 TIME_WAIT 상태의 포트는 많지 않았습니다. 우선 임시 조치 방안으로 동적 포트의 범위를 확장하였습니다.

 

임시 조치: 동적 포트 범위 확장

Windows에서는 기본적으로 사용하는 동적 포트 범위가 제한되어 있는데, 이 범위를 넓혀주면 일시적으로 문제를 해소할 수 있습니다.

## 현재 동적 포트 범위 확인
netsh int ipv4 show dynamicport tcp

## 출력 값
프로토콜 tcp의 동적 포트 범위
---------------------------------
시작 포트           : 49152
포트 수             : 16384

## 동적 포트 범위 재 정의
netsh int ipv4 set dynamicport tcp start=35000 num=30535

 

근본 원인 분석

시간이 지난 뒤 다시 문제가 재발하지 않도록, 파워쉘을 통해 현재 사용 중인 동적 포트 수와 프로세스별 사용 현황을 점검했습니다:

사용 중인 동적 포트 개수 확인

Get-NetTCPConnection | Where-Object {
    ($_.LocalPort -ge (Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters" -Name "MaxUserPort").MaxUserPort -or
    $_.LocalPort -ge 49152)
} | Measure-Object | Select-Object -ExpandProperty Count

 

프로세스별 사용 중인 포트 수 확인

$startPort = 49152  # 기본 동적 포트 시작 번호
Get-NetTCPConnection | Where-Object {
    $_.LocalPort -ge $startPort
} | Group-Object -Property OwningProcess | Sort-Object Count -Descending | ForEach-Object {
    $procName = (Get-Process -Id $_.Name -ErrorAction SilentlyContinue).ProcessName
    [PSCustomObject]@{
        ProcessId = $_.Name
        ProcessName = $procName
        PortCount = $_.Count
    }
}
 

마무리

처음엔 netstat 명령어로 명확한 포트 고갈 징후를 찾지 못해 원인 파악이 쉽지 않았습니다. 하지만 파워쉘을 활용해 동적 포트 사용 현황과 프로세스를 추적하면서, 결국 문제의 실체를 확인하고 해결할 수 있었습니다.

단순한 접속 실패처럼 보였던 현상이 실제로는 시스템 자원 고갈 문제였다는 점에서, 겉으로 드러난 증상만 보고 판단하는 것의 한계를 느꼈습니다. 이 경험이 비슷한 문제를 겪는 분들에게 실질적인 도움이 되었으면 합니다.