Clash가 포트 사용 중으로 시작되지 않을 때: Windows netstat·PID·mixed-port 해결

이 증상이면 이 글부터 읽으면 됩니다

Clash·Clash Verge Rev·Mihomo 계열을 Windows에 설치·업데이트한 뒤, 앱이 곧바로 꺼지거나 로그·상태에 “listen failed”, “bind: Only one usage of each socket address”, “address already in use” 같은 문구가 뜨는 경우가 있습니다. UI에는 “포트를 사용할 수 없습니다”·“이미 사용 중”에 가까운 설명이 붙기도 합니다. 흔히 쓰는 7890(HTTP), 7891(SOCKS) 또는 mixed-port 한 곳에 HTTP·SOCKS를 같이 올릴 때와 충돌이 맞닿아 있습니다. 방화벽이 원인인지 포트 점유인지부터 가르는 것이 빠르며, 이 문서는 방화벽·룰 편집이 아니라 netstat·프로세스 ID(PID)·mixed-port 쪽 절차를 본선으로 둡니다.

같은 증상이라도 WSL2 가상 스위치·Docker Desktop·LAN 공유(Allow LAN)와 겹쳐 보일 수 있으나, 그 글들은 라우팅·브리지·다른 PC 측면이 강하고, 본문은 호스트에서 TCP 포트가 누가 listen 중인지에 초점을 맞춥니다. 기본 흐름이 필요하면 문서·빠른 시작을 함께 보시면 맥락이 잇닿습니다.

핵심: Clash 코어(Mihomo)는 설정에 적힌 port·socks-port·mixed-port·(환경에 따라) redir-port 등에 동시에 바인딩하려 합니다. 그중 하나라도 OS가 “이미 점유”라고 보면 전체가 실패하는 빌드·버전이 많습니다. 그래서 “7890만”이 아니라, 실제 열려 있는 포트 전체를 로그·YAML과 맞춰 보면 덜 헛갈립니다.

1. 어떤 포트를 의심해야 할까? mixed-port·port·socks

구독·프로필마다 기본 포트는 다를 수 있으나, 한국·글로벌 자료에서 자주 보이는 조합은 port: 7890(HTTP), socks-port: 7891 또는 mixed-port: 7890 처럼 한 포트에 혼합을 쓰는 방식입니다. mixed-port를 켜면 보통 port·socks-port는 비활성·중복이 되도록 쓰는 것이 일반적입니다. 둘 다 살아 있고 숫자가 겹치면, 한 클라이언트 안에서 먼저 자기끼리라도 엇갈릴 수 있으니 GUI·YAML에서 실제로 어떤 키가 켜져 있는지를 먼저 스샷·복사해 두는 것이 좋습니다. 로그에 실패한 소켓이 0.0.0.0:7890인지 127.0.0.1:7890인지도, 다른 프로세스와 공존할 수 있는지 가늠에 도움이 됩니다(보통 루프백이면 기존 로컬 프록시일 가능성이 큽니다).

2. CMD에서 netstat로 PID 잡기

netstatWindows에 기본 포함입니다. CMD를 연 뒤, 의심 포트를 넣어 필터합니다. 예를 들어 7890이면 netstat -ano | findstr :7890 입니다. -a는 모든 연결·리스닝, -n는 숫자 주소, -oPID를 뜻합니다. 출력 오른쪽에 붙는 숫자가 그대로 프로세스 ID입니다. 7891·mixed-port에 넣은 값도 같은 방식으로 반복하세요. 한 줄이 LISTENING이고 PID가 1234라면, 이어서 tasklist /FI "PID eq 1234"실행 파일 이름을 볼 수 있습니다. 예전 Clash·다른 GUI가 남아 있으면 clash·verge·mihomo·다른 VPN/프록시 툴 이름이 뜨는 일이 흔합니다.

3. PowerShell: Get-NetTCPConnection

PowerShell 5.1 이상이면 Get-NetTCPConnection -LocalPort 7890 -ErrorAction SilentlyContinue | Select LocalAddress,LocalPort,State,OwningProcess 식으로 로컬 포트를 기준으로 PID(OwningProcess)를 볼 수 있습니다. 여러 행이 나오면 IPv4/IPv6·루프백이 나뉜 것일 수 있으니, 모두 같은 PID인지 확인하세요. 이후 Get-Process -Id (PID)프로세스 경로 힌트를 얻을 수 있어, 육안으로 “뭐가 7890을 쥐고 있는지” 판단하기 쉬워집니다. 관리자 권한이 꼭 필요한 것은 아닌 경우가 대부분이나, 일부 엔드포인트는 권한에 따라 가려질 수 있어 첫 시도는 일반·관리자 둘 다 열어 보는 정도로 충분합니다.

4. 충돌을 끊는 두 갈래: 끄기 vs 포트 바꾸기

갈래 A점유 프로세스를 정리하는 것입니다. 작업 관리자에서 PID 열을 켜고(세부 정보 탭) 해당 PID를 작업 끝내기하거나, CMD에서 taskkill /PID 1234 /F 를 씁니다. /F는 강제이므로, 저장·동기화 중인 앱이 아닌지 확인하세요. 이전에 설치한 Clash가 백그라운드에 남은 경우, 트레이에서 완전히 종료·자동 실행 해제를 한 뒤 다시 시도하면 맞는 경우가 많습니다. 동일 바이너리가 중복 실행돼 둘 다 같은 포트를 잡으려다 하나만 살고 하나는 실패하는 패턴도 있어, 작업 관리자에서 이름이 같은 항목이 둘인지 훑는 것이 좋습니다.

갈래 BClashmixed-port·port·socks-port를 충돌이 없는 값(예: 7897·18080 등)으로 올려서 피하는 것입니다. Clash Verge류는 설정 화면에 코어·포트가 분리돼 있으니, 구독이 덮어쓰는지·런타임 override가 있는지 확인하세요. YAML을 직접 쓰는 경우, 한 파일 안에서 mixed-portport가 둘 다 켜져 있으면 코어·버전에 따라 해석이 달라질 수 있으니, 공식 문서·템플릿과 어긋나지 않게 정리하는 편이 안전합니다. 포트를 바꾸면, 브라우저·시스템 프록시·다른 앱이 예전 7890을 가리키고 있을 수 있으니 시스템 프록시 포트도 같이 갱신해야 합니다.

5. (선택) 리소스 모니터·그래도 안 보일 때

netstat에 자주 잡히지 않는 순간적 점유는 드뭅니다. 그래도 의심스러우면 리소스 모니터(resmon) → 네트크 → 수신 대기 포트에서 열람·정렬해 볼 수 있습니다. 본문 주선은 CMD·PowerShell이지만, GUI로 PID를 눈으로 짚는 용도로는 무방합니다. 반대로 방화벽이 “막힌다”는 메시지를 낼 때는 오히려 listen은 됐는데 연결이 막힌 케이스가 많고, 이 글의 “이미 누가 listen” 흐름과는 증상 문구가 다를 때가 있습니다. 제목·로그 키워드가 bind·address in use 쪽이면 이 문서 절차를, 차단·drop·timeout 쪽이면 방화벽·필터·TUN·DNS 글로 넘기는 식이 맞습니다.

6. WSL2·도커와의 관계(한 줄)

같은 PC에서 WSL2·가상 머신·Docker가 7890을 호스트에서 쓰기도 합니다. 그때는 “Clash 잘못”이 아니라 다른 데몬이 먼저 잡은 것이므로, 이 글 2~4절로 PID만 확인하면 갈릴 수 있습니다. 컨테이너 쪽이 아니라 Windows 프로세스 목록에 잡히는지부터 보면 됩니다.

한 페이지 체크리스트

  • 로그·UI에서 실패한 포트 번호·주소(127.0.0.1 / 0.0.0.0)를 적는다.
  • netstat -ano | findstr :포트로 LISTENING과 PID를 적는다.
  • tasklist /FI "PID eq ..." 또는 PowerShell Get-Process -Id프로세스명을 확인한다.
  • 필요하면 트레이·작업 관리자에서 이전 Clash·다른 프록시를 끄고, 포트가 비었는지 다시 netstat한다.
  • 살릴 앱이 정당히 그 포트를 쓰는 것이면, Clash mixed-port·port·socks-port를 바꾸고 시스템 프록시·클라이언트 쪽 대상 포트를 같이 맞춘다.
  • 구독·프로필 갱신 시 YAML이 덮어써 포트가 원래대로 돌아가지 않는지 확인한다.

주의: taskkill /F는 응용 프로그램을 강제로 종료합니다. 권한·회사 PC 정책·저장되지 않은 문서를 고려하세요. 출처를 알 수 없는 “최적화”·크랙·불명 바이너리는 PID로만 죽이는 것이 아니라 제거·재설치 쪽이 안전할 수 있습니다.

마무리

정리하면, ClashWindows에서 “포트를 쓸 수 없다”는 상황은, 설치·업데이트 직후에도 이전 인스턴스·다른 프록시·혼동된 mixed-port/포트 키가 겹쳤을 때가 많습니다. netstat·Get-NetTCPConnection으로 PID를 잡고, 끄거나 비우는 것이 빠르면 끄고, 아니면 mixed-port를 기준으로 한 번에 구성을 정리해 피하는 것이 재현성 있는 해결에 가깝습니다. 범용 도구에 비해 Clash·Mihomo는 규칙·스니펫·구독을 한데 묶기 좋아, 포트만 안정시키면 이후 흐름을 유지 보수하기 쉬운 편입니다.

같은 PC에서 프록시·DNS·시스템 설정이 어느 층에 걸렸는지를 나누어 두면, 다음에 포트 충돌이 나도 같은 표를 복붙하듯 점검할 수 있습니다. → Clash를 무료로 다운로드한 뒤, 위 체크리스트 순서로 7890·mixed-port를 다시 잡아 보시기 바랍니다.