먼저 UWP 루프백 제한이 원인인지 확인하기

일반적인 증상은 브라우저가 Clash를 통해 정상적으로 인터넷에 접속하지만 Microsoft Store, Xbox, 사진, 메일 등 Microsoft Store에서 설치한 앱은 계속 오프라인으로 표시되는 것입니다. Microsoft 계정 로그인 창이 로딩 화면에서 멈추거나 “인터넷 연결을 확인하세요”라는 메시지를 표시할 수도 있습니다. Clash의 시스템 프록시를 끄면 오히려 앱이 직접 연결되는 경우도 있습니다.

이 차이는 대개 노드 전체의 장애를 의미하지 않습니다. 일반 데스크톱 프로그램은 127.0.0.1:7890처럼 로컬에서 대기 중인 Clash 프록시 포트에 연결할 수 있지만, AppContainer 샌드박스에서 실행되는 UWP 앱은 기본적으로 로컬 루프백 주소에 자유롭게 접근할 수 없습니다. 시스템 프록시가 Clash를 가리키고 있어도 앱이 로컬 프록시 포트로 첫 연결을 완료하지 못하는 것입니다.

루프백 제한을 의심할 수 있는 세 가지 특징

  • Chrome, Firefox 또는 일반 Win32 프로그램은 인터넷에 연결되지만 일부 Microsoft Store 앱만 실패합니다.
  • Clash에서 시스템 프록시가 켜져 있고 프록시 주소는 127.0.0.1이며, 일반적인 포트는 7890입니다.
  • 문제가 발생한 앱이 요청을 보낼 때 Clash 연결 목록에 해당 연결이 나타나지 않고, 로그에도 도메인 매칭 기록이 없습니다.

일반적인 프록시 장애부터 배제하기

  1. Clash 클라이언트를 열고 커널 상태가 실행 중인지 확인합니다. 시작 실패나 반복 재시작 상태가 아니어야 합니다.
  2. 「설정」→「시스템 프록시」로 이동해 시스템 프록시가 활성화되어 있는지 확인합니다.
  3. 현재 설정에 HTTP 또는 Mixed 수신 포트가 있는지 확인합니다. SOCKS 수신 포트만 있는 경우 Windows 시스템 프록시에서 일반적인 HTTP 프록시 방식으로 바로 사용할 수 없습니다.
  4. 브라우저에서 외부 IP를 확인할 수 있는 페이지를 열어 일반 데스크톱 프로그램이 프록시를 거치는지 확인합니다.
  5. 사용 가능한 다른 노드로 전환해 다시 테스트하여 특정 회선의 시간 초과인지 확인합니다.

UWP가 로컬 Clash 포트에 바로 연결할 수 없는 이유

UWP 앱은 일반적으로 AppContainer 격리 환경에서 실행됩니다. Windows는 앱에 패키지 ID, 기능 선언 및 제한된 네트워크 경계를 적용합니다. 루프백 주소 127.0.0.1과 IPv6 주소 ::1은 현재 컴퓨터를 가리키지만, 샌드박스 앱은 기본적으로 이를 사용해 다른 로컬 프로세스가 제공하는 서비스에 접근할 수 없습니다.

Clash의 시스템 프록시 모드는 로컬 수신 포트에 의존합니다. 일반적인 설정에서는 Windows가 HTTP 요청을 127.0.0.1:7890으로 전달하고, Clash가 연결을 받은 뒤 규칙에 따라 DIRECT, 프록시 노드 또는 다른 정책 그룹을 선택합니다. UWP 앱이 127.0.0.1:7890에 연결할 때 시스템 경계에 의해 차단되므로 이후의 규칙 매칭도 이루어지지 않습니다.

mixed-port: 7890
allow-lan: false
mode: rule

위의 allow-lan: false는 다른 LAN 기기가 수신 포트에 접근할 수 있는지를 제어할 뿐, UWP의 AppContainer 권한을 관리하지 않습니다. 이를 true로 바꿔도 루프백 예외를 대신할 수 없으며 LAN 접근 범위만 달라집니다. 로컬 Microsoft Store 앱을 처리할 때는 해당 앱의 Loopback Exempt 상태를 수정해야 합니다.

루프백 예외가 실제로 바꾸는 것

예외 설정은 지정한 패키지를 Windows의 루프백 예외 목록에 추가하여 해당 패키지가 로컬 서비스에 연결할 수 있게 합니다. Clash를 자동으로 시작하거나 앱 대신 노드를 선택하거나 모든 트래픽을 강제로 프록시로 보내지는 않습니다. 시스템 프록시, Clash 수신 포트 및 규칙 모드는 여전히 올바르게 설정되어 있어야 합니다.

구성 요소 담당 내용 실패 시 증상
Windows 시스템 프록시 시스템 프록시를 지원하는 요청을 로컬 주소로 전달 앱이 직접 연결되어 Clash에 요청이 표시되지 않음
UWP 루프백 예외 지정한 AppContainer가 로컬 프록시에 접근하도록 허용 앱이 127.0.0.1:7890에 연결하지 못함
Clash 규칙 도메인, IP 및 규칙 세트에 따라 출구 선택 커널에 들어온 연결이 잘못된 정책과 매칭됨
프록시 노드 원격 전송을 수립하고 출구 제공 Clash에 요청 기록은 있지만 시간 초과 또는 핸드셰이크 오류 발생

방법 1: 클라이언트에 포함된 루프백 도구로 앱별 허용

일부 Windows용 Clash GUI 클라이언트에는 UWP Loopback 도구가 포함되어 있습니다. 기존 Clash for Windows를 예로 들면 「General」→「UWP Loopback」에서 찾을 수 있습니다. 유지 관리 분기에 따라 「설정」→「네트워크」 또는 「도구」에 있을 수도 있으며, 보통 “UWP”, “Loopback” 또는 “루프백”이라는 이름이 포함됩니다.

GUI에서 설정하는 방법

  1. 먼저 Clash를 완전히 시작하고 Mixed Port 또는 HTTP Port가 수신 중인지 확인합니다. 일반적인 값은 7890입니다.
  2. 루프백 도구를 엽니다. Windows에서 권한 확인 창이 표시되면 프로그램 출처를 확인한 뒤 시스템 설정 변경을 허용합니다.
  3. 도구가 설치된 AppContainer 패키지를 읽을 때까지 기다립니다. 목록에는 보통 앱 이름과 Package Family Name이 함께 표시됩니다.
  4. 인터넷 연결 문제가 발생한 앱만 선택합니다. 예를 들어 Microsoft Store 또는 Xbox를 선택하고 모든 패키지를 한 번에 선택할 필요는 없습니다.
  5. 「Save Changes」, 「Apply」 또는 해당 저장 버튼을 클릭해 예외 목록을 시스템에 기록합니다.
  6. 문제가 발생한 앱을 완전히 종료한 뒤 시작 메뉴에서 다시 실행합니다. 창을 최소화하는 것만으로는 기존 네트워크 프로세스가 남아 있을 수 있습니다.
  7. Clash의 시스템 프록시를 켜 둔 상태에서 로그인, 다운로드 또는 페이지 새로 고침을 다시 실행합니다.

앱을 하나씩 추가하는 이유

하나씩 허용하면 쉽게 되돌릴 수 있고 실제로 영향을 받은 패키지도 정확히 찾을 수 있습니다. 일부 시스템 구성 요소는 계정 확인 시 별도의 ID 서비스 패키지를 호출하므로 전면 앱만 선택하면 로그인이 계속 실패할 수 있습니다. 이때 문제가 발생한 창을 관찰한 뒤 Microsoft Account, Xbox Identity Provider 또는 시스템 ID 구성 요소를 추가로 허용합니다.

앱 업데이트 후에도 Package Family Name은 일반적으로 유지되므로 일반적인 버전 업그레이드에서는 설정을 다시 할 필요가 없습니다. 앱을 삭제 후 재설치하거나 다른 배포 채널로 전환하거나 패키지 ID가 변경된 경우에는 기존 예외가 현재 설치된 패키지와 일치하지 않을 수 있으므로 다시 확인해야 합니다.

방법 2: CheckNetIsolation 명령으로 정밀 설정

GUI 도구가 없다면 Windows에 기본 포함된 CheckNetIsolation.exe를 사용할 수 있습니다. 명령줄 방식은 현재 목록 확인, 변경 대상 기록 및 도구에서 이름을 제대로 표시하지 못하는 패키지 처리에 적합합니다. 시작 메뉴에서 “터미널”을 검색한 뒤 「관리자 권한으로 실행」을 선택하는 것이 좋습니다.

첫 번째 단계: 앱의 패키지 패밀리 이름 찾기

PowerShell에서 다음 명령을 실행해 앱 이름과 Package Family Name을 확인합니다:

Get-AppxPackage | Select-Object Name, PackageFamilyName

목록이 길다면 이름으로 필터링할 수 있습니다. 다음 예시는 Microsoft Store를 찾는 방법입니다:

Get-AppxPackage *WindowsStore* |
  Select-Object Name, PackageFamilyName

일반적인 Microsoft Store 패키지 패밀리 이름은 Microsoft.WindowsStore_8wekyb3d8bbwe입니다. 실제 작업에서는 현재 PC의 명령 출력 결과를 기준으로 해야 하며, 표시 이름만 보고 패키지 패밀리 이름을 추측하지 마세요.

두 번째 단계: 기존 루프백 예외 확인

CheckNetIsolation.exe LoopbackExempt -s

출력 결과에는 루프백 접근 권한을 얻은 AppContainer가 표시됩니다. 먼저 조회하면 중복 추가를 피할 수 있고 변경 전 상태도 기록할 수 있습니다. 대상 패키지가 이미 있다면 시스템 프록시 미활성화, 포트 불일치, 앱의 시스템 프록시 미사용 또는 Clash 규칙 오류가 원인일 가능성이 높습니다.

세 번째 단계: 지정한 앱 추가

CheckNetIsolation.exe LoopbackExempt -a -n="Microsoft.WindowsStore_8wekyb3d8bbwe"

-a는 추가를 의미하며, -n 뒤에는 완전한 Package Family Name을 입력해야 합니다. 명령이 성공하면 -s를 다시 실행해 대상 패키지가 목록에 추가되었는지 확인합니다. 그다음 앱 프로세스를 종료하고 다시 열면 되며, 한 번의 변경을 위해 컴퓨터 전체를 즉시 재시작할 필요는 없습니다.

필요할 때 단일 항목 삭제

CheckNetIsolation.exe LoopbackExempt -d -n="Microsoft.WindowsStore_8wekyb3d8bbwe"

-d는 지정한 패키지의 예외만 삭제합니다. 문제를 해결하는 동안 전체 목록을 바로 비우는 것은 권장하지 않습니다. 다른 로컬 개발 도구나 시스템 앱에 필요한 예외가 이미 설정되어 있을 수 있기 때문입니다. 변경 전후의 조회 결과를 보관하면 문제가 해결된 뒤 원래 상태로 복원하기 쉽습니다.

예외가 실제로 적용되었는지 확인

명령이 성공적으로 반환되었다는 것은 시스템이 설정을 수락했다는 뜻일 뿐입니다. 앱의 요청이 실제로 Clash에 들어오는지도 확인해야 합니다. 검증할 때는 수신 포트, 앱 동작 및 Clash 연결 기록을 함께 관찰하여 노드 전환이나 일시적인 네트워크 복구를 예외 설정 성공으로 오해하지 않도록 합니다.

Clash가 예상 포트를 수신 중인지 확인

Windows 터미널에서 실행합니다:

netstat -ano | findstr :7890

정상이라면 127.0.0.1:7890, 0.0.0.0:7890 또는 해당 IPv6 주소가 LISTENING 상태로 표시됩니다. 설정에서 mixed-port: 7891을 사용한다면 시스템 프록시도 7891을 가리켜야 합니다. 포트 번호가 다르면 루프백 권한이 올바르더라도 앱 연결은 실패합니다.

Clash 연결 패널에서 요청 확인

  1. 기존 연결을 삭제하거나 일시 중지하고 현재 시간을 기록합니다.
  2. 대상 UWP 앱을 다시 실행합니다.
  3. Microsoft Store 홈 새로 고침, 앱 검색 또는 계정 로그인 페이지 열기처럼 반복 가능한 작업을 수행합니다.
  4. Connections 또는 연결 패널에 새 도메인, 대상 IP 및 매칭된 규칙이 표시되는지 확인합니다.
  5. 요청은 표시되지만 시간 초과 상태라면 노드를 전환하거나 해당 정책 그룹을 확인합니다.
관찰 결과 가능성이 높은 원인 다음 단계
앱 복구, Clash에 연결 표시 루프백 예외가 적용됨 현재 단일 앱 예외 유지
앱은 계속 실패하고 Clash에 연결 없음 패키지 선택 오류, 프로세스 미재시작 또는 앱의 시스템 프록시 미사용 패키지 패밀리 이름을 확인하고 관련 프로세스 종료
Clash에 연결은 있지만 계속 시간 초과 노드, DNS 또는 정책 그룹 장애 노드 전환 및 규칙 매칭 확인
시스템 프록시를 끄면 직접 연결 복구 로컬 프록시 경로가 아직 구성되지 않음 수신 포트와 루프백 목록 확인

예외 설정 후에도 인터넷에 연결되지 않을 때 확인할 6가지

1. 시스템 프록시 포트와 Clash 설정이 다름

Clash 설정에서 78907897로 바뀌었지만 Windows 프록시는 이전 포트를 유지하고 있을 수 있습니다. 「설정」→「네트워크 및 인터넷」→「프록시」에서 현재 수동 프록시 주소를 확인하고, 클라이언트에 표시된 Mixed Port 또는 HTTP Port와 대조합니다. 클라이언트가 시스템 프록시를 자동 관리한다면 먼저 끈 다음 다시 켜 보세요.

2. 전면 앱만 허용되어 ID 구성 요소가 여전히 제한됨

Microsoft 계정 로그인에는 별도의 ID 프록시, Xbox Identity Provider 또는 시스템 Web 계정 구성 요소가 사용될 수 있습니다. Store 홈은 열리지만 로그인 버튼이 계속 로딩된다면 기본 Store 패키지는 허용되었지만 인증 과정에서 연결하는 다른 패키지가 아직 추가되지 않았을 가능성이 큽니다. 표시되는 창 이름과 패키지 목록을 기준으로 하나씩 테스트하고, 같은 Store 패키지를 반복해서 추가하지 마세요.

3. 앱이 네트워크 프로세스를 새로 만들지 않음

창을 닫아도 UWP 백그라운드 작업이 종료되지 않을 수 있습니다. 「작업 관리자」→「프로세스」에서 대상 앱과 관련 프로세스를 종료한 뒤 시작 메뉴에서 다시 실행합니다. 이전 상태가 계속 유지되면 현재 Windows 계정에서 로그아웃한 후 다시 로그인할 수 있습니다.

4. 앱 자체가 Windows 시스템 프록시를 사용하지 않음

루프백 예외는 로컬 접근만 허용할 뿐 앱이 시스템 프록시를 읽도록 강제하지는 않습니다. 일부 앱은 사용자 지정 네트워크 스택, 직접 연결 또는 특수 UDP 통신을 사용하므로 시스템 프록시 모드가 해당 트래픽을 처리하지 못할 수 있습니다. 이 경우 클라이언트에서 mihomo 커널 기반 TUN 모드를 활성화해 가상 네트워크 인터페이스를 통해 트래픽을 커널로 전달할 수 있습니다.

활성화 경로는 보통 「설정」→「TUN 모드」입니다. 켠 뒤 클라이언트에 가상 네트워크 어댑터 생성에 필요한 권한이 있는지 확인하고 시스템에 해당 인터페이스가 나타나는지도 확인합니다. TUN은 시스템 프록시와 처리 경로가 다르므로 활성화 전에 현재 설정을 저장하고, 포트·DNS·규칙을 동시에 변경해 변수가 늘어나지 않도록 합니다.

5. DNS 또는 규칙이 요청을 잘못된 출구로 보냄

연결이 이미 Clash 패널에 표시된다면 루프백 문제는 대부분 해결된 것입니다. 다음으로 매칭된 규칙과 정책 그룹을 확인합니다. 예를 들어 계정 도메인이 DIRECT로 전달되지만 현재 네트워크에서 직접 연결할 수 없을 수 있습니다. 또는 DNS가 비정상적인 결과를 반환해 핸드셰이크 실패, 시간 초과 또는 반복 재시도가 발생할 수도 있습니다. 이때는 로그에 표시된 실제 도메인을 기준으로 규칙을 수정하고 루프백 항목을 계속 추가하지 마세요.

6. 포트를 다른 프로그램이 사용 중임

netstat에 7890이 다른 PID에서 사용 중으로 표시되면 Clash가 포트에 정상적으로 바인딩되지 않았을 수 있습니다. 작업 관리자의 「세부 정보」 탭에서 PID로 프로세스를 찾거나 설정의 mixed-port7897처럼 사용되지 않는 포트로 변경한 뒤 설정을 다시 불러오고 시스템 프록시도 동기화합니다.

설정 완료 후 안정적인 구성 권장 사항

실제로 필요한 패키지만 유지하세요. 대상 앱의 Package Family Name, Clash 수신 포트 및 변경 날짜를 기록해 두면 나중에 시스템을 재설치하거나 클라이언트를 바꿀 때 빠르게 복원할 수 있습니다. 더 이상 사용하지 않는 앱은 CheckNetIsolation.exe LoopbackExempt -d로 해당 항목을 삭제할 수 있습니다.

일상적으로는 먼저 7890처럼 Mixed Port 하나를 고정한 다음 클라이언트가 시스템 프록시를 관리하도록 하세요. 문제를 해결하는 동안 커널, 구독, DNS 모드, 포트 및 TUN 설정을 동시에 바꾸지 마세요. 한 번에 한 항목만 변경하고 앱 재시작, 연결 패널 및 포트 수신 상태라는 세 가지 결과로 변화를 확인합니다.

최종 판단 기준은 명확합니다. 대상 앱에서 로그인 또는 로딩이 완료되고, Clash 연결 패널에 해당 요청이 표시되며, 규칙 매칭 결과가 예상과 일치해야 합니다. 이 세 가지가 충족되면 UWP에서 로컬 프록시 포트로 연결되는 경로, Clash 커널 처리 및 원격 출구가 완전한 연결을 구성한 것입니다.