Windows UWP 앱 프록시 연결 오류 해결: 루프백 예외 설정 및 해제 방법

Windows 스토어 앱이 로컬 루프백 주소에 기본적으로 접근하지 못하는 이유와 클라이언트 도구 또는 CheckNetIsolation 명령으로 UWP 앱에 예외를 추가하는 방법을 안내합니다.

주요 증상: 브라우저는 정상인데 특정 앱만 연결되지 않음

Windows 시스템 프록시를 켜면 브라우저에서는 클라이언트를 통해 웹사이트에 접속할 수 있지만, 특정 UWP 앱에는 계속 네트워크 오류가 표시되고 클라이언트 연결 목록에도 요청이 나타나지 않을 수 있습니다. 이 경우 AppContainer 네트워크 격리가 원인일 수 있습니다. 앱이 127.0.0.1:7890처럼 로컬 프록시에 연결하려 해도 mihomo 코어에 도달하기 전에 시스템에서 차단될 수 있습니다.

루프백 예외는 격리된 앱이 로컬 서비스를 이용할 수 있도록 하는 설정입니다. 노드 품질, 구독 만료 또는 프록시 규칙 문제를 해결하는 설정은 아닙니다. 원인이 이 단계에 있다고 확인된 경우에만 예외를 추가하세요. Microsoft Store에서 배포된 앱이라고 모두 UWP인 것은 아닙니다. 스토어의 기존 데스크톱 프로그램이나 패키징된 Win32 프로그램은 같은 제한을 받지 않을 수 있습니다.

루프백 주소와 AppContainer 네트워크 격리

127.0.0.1은 IPv4 루프백 주소이고 ::1은 IPv6 루프백 주소입니다. 이 주소로 접속하는 트래픽은 현재 컴퓨터 안에서만 이동합니다. 클라이언트가 HTTP 또는 혼합 포트 프록시를 루프백 주소에 바인딩하면 앱은 해당 포트로 요청을 보내고, mihomo 코어가 규칙을 적용해 외부 연결을 처리합니다.

UWP 앱은 일반적으로 AppContainer 격리 환경에서 실행됩니다. Windows는 이러한 앱의 로컬 루프백 서비스 접근을 제한하므로, 시스템 프록시가 로컬 주소를 가리켜도 앱이 연결을 설정하지 못할 수 있습니다. CheckNetIsolation.exe의 루프백 예외 기능을 사용하면 지정한 앱 컨테이너의 관련 제한을 해제할 수 있습니다.

예외를 추가해도 앱의 프록시가 자동으로 설정되지는 않으며 앱 매니페스트의 네트워크 기능이 추가되지도 않습니다. 앱이 시스템 프록시를 무시하거나 별도 네트워크 구성 요소를 사용하거나 기업 정책의 제한을 받는다면 해당 항목을 따로 확인해야 합니다.

시작 전 확인: 프록시 포트와 시스템 설정

현재 수신 대기 포트 확인

먼저 클라이언트에서 사용 중인 구성과 포트 설정을 확인하세요. 아래에서는 혼합 포트 7890을 예로 들며, 모든 클라이언트의 기본값이라는 뜻은 아닙니다. 실제 포트가 7897이라면 이후 명령과 시스템 설정에도 7897을 사용해야 합니다.

mixed-port: 7890
allow-lan: false
bind-address: 127.0.0.1
mode: rule

아래 내용은 매개변수 예시일 뿐 전체 설정이 아닙니다. 기존 구독 설정을 덮어쓰지 마세요. 로컬 UWP 앱에 루프백 예외를 추가하는 데 수신 주소를 0.0.0.0으로 바꾸거나 ‘로컬 네트워크 연결 허용’을 켤 필요는 없습니다. 원격 구독을 갱신하면 직접 입력한 설정이 덮어써질 수 있으므로 클라이언트의 저장 가능한 설정이나 오버라이드 기능을 우선 사용하세요.

Windows에서 같은 포트를 사용하도록 설정

  1. Windows 11에서는 ‘설정’ → ‘네트워크 및 인터넷’ → ‘프록시’ → ‘수동 프록시 설정’ → ‘프록시 서버 사용’ 옆의 ‘설정’을 여세요. Windows 10에서는 ‘설정’ → ‘네트워크 및 인터넷’ → ‘프록시’로 이동합니다.
  2. 주소와 포트가 현재 클라이언트 설정과 일치하는지 확인하세요. 클라이언트가 시스템 프록시를 자동 관리한다면 설정이 서로 덮어쓰이지 않도록 클라이언트의 스위치로 변경하는 것이 좋습니다.
  3. PowerShell에서 아래 명령으로 포트가 수신 대기 중인지 확인하세요. 결과가 없으면 먼저 코어를 시작하거나 포트를 바로잡은 뒤 앱 예외를 설정하세요.
Get-NetTCPConnection -State Listen -LocalPort 7890 |
  Select-Object LocalAddress, LocalPort, OwningProcess

curl.exe --proxy http://127.0.0.1:7890 --head --max-time 15 https://example.com/

curl.exe에서 프록시를 명시하면 포트로 요청을 보낼 수 있는지 확인하기 좋습니다. HTTP 응답을 받으면 이 테스트 연결은 성립한 것입니다. 시간 초과가 발생하면 노드와 로그를 확인하세요. 이 명령은 일반 데스크톱 프로세스에서 실행되므로 성공하더라도 UWP 루프백 제한이 해제됐다는 뜻은 아닙니다. 응답만으로 실제 출구가 예상대로인지 판단할 수도 없습니다.

방법 1: 클라이언트에 내장된 루프백 예외 도구

일부 Windows 클라이언트에는 루프백 예외 도구가 포함되어 있으며, ‘UWP 루프백’, ‘Loopback’, ‘루프백 예외’ 등의 이름으로 표시될 수 있습니다. 메뉴 위치는 클라이언트와 버전에 따라 달라지므로 특정 구버전의 경로를 모든 mihomo 클라이언트에 적용할 수는 없습니다.

구형 Clash for Windows를 사용한다면 ‘General’ → ‘UWP Loopback’ → ‘Launch Helper’에서 해당 도구를 열 수 있습니다. 이 클라이언트는 더 이상 유지 관리되지 않으므로 기존 설치 환경을 식별하기 위한 안내일 뿐, 이 메뉴를 사용하려고 구형 클라이언트를 설치하는 것은 권장하지 않습니다. 현재 클라이언트에 같은 이름의 옵션이 없다면 다음 절의 Windows 명령을 사용하세요.

  1. 도구를 열고 필요한 경우 관리자 권한 요청을 확인하세요. 게시자와 프로그램 출처를 확인하고 출처가 불분명한 ‘복구 도구’는 실행하지 마세요.
  2. 앱 목록에서 문제가 발생한 앱을 찾고 패키지 정보를 확인하세요. 표시 이름이 비슷하다는 이유만으로 선택하지 마세요.
  3. 대상 앱만 선택한 다음 도구의 저장 또는 적용 버튼을 누르세요. 선택만 하고 저장하지 않으면 예외 목록에 반영되지 않는 경우가 많습니다.
  4. 대상 앱을 완전히 종료한 뒤 다시 여세요. 창을 닫아도 백그라운드에서 계속 실행된다면 작업 관리자에서 해당 작업을 종료한 후 테스트하세요.

그래픽 도구는 대개 시스템 예외 기능을 쉽게 사용하도록 감싼 것입니다. 작업 후에도 CheckNetIsolation.exe LoopbackExempt -s로 결과를 별도로 확인할 수 있습니다. 도구에서 앱을 찾지 못하면 현재 계정에 설치되어 있는지, 해당 앱 유형이 이 기능의 대상인지 먼저 확인하세요.

방법 2: CheckNetIsolation으로 지정한 앱에 예외 추가

관리자 권한으로 터미널 열기

시작 메뉴에서 ‘터미널’ 또는 ‘Windows PowerShell’을 검색한 뒤 ‘관리자 권한으로 실행’을 선택하세요. 아래 예시는 PowerShell 문법을 사용합니다. 관리자 인증에 다른 계정을 사용했다면 앱 패키지를 조회하는 사용자 범위가 달라질 수 있습니다. ‘현재 사용자에게 설치되지 않음’을 프로그램이 존재하지 않는다는 뜻으로 오해하지 않도록 주의하세요.

PackageFamilyName 조회

루프백 예외의 -n 매개변수에는 패키지 계열 이름인 PackageFamilyName을 사용합니다. 바탕 화면 바로 가기 이름이나 버전 및 아키텍처 정보가 포함된 PackageFullName이 아닙니다. 먼저 현재 사용자에게 설치된 패키지를 나열하세요:

Get-AppxPackage |
  Sort-Object Name |
  Select-Object Name, PackageFamilyName

아래에서는 Microsoft Store 패키지를 예로 들어 검색 방법을 설명합니다. 다른 앱을 확인할 때는 위 목록에서 해당 패키지를 찾아 검색 조건을 바꾸세요. 관련 없는 앱에 권한을 추가하지 마세요.

Get-AppxPackage -Name Microsoft.WindowsStore |
  Select-Object Name, PackageFamilyName

일반적인 결과의 패키지 계열 이름은 Microsoft.WindowsStore_8wekyb3d8bbwe이지만, 실제로는 이 컴퓨터에서 출력된 값을 기준으로 해야 합니다. 조회 결과가 비어 있으면 사용자 범위와 패키지 이름부터 확인하세요. 다른 기기의 패키지 전체 이름을 온라인에서 찾아 추측하지 마세요.

예외 추가 및 목록 확인

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

CheckNetIsolation.exe LoopbackExempt -s

-a는 추가, -s는 기존 예외 목록 표시를 뜻합니다. 목록에 앱 컨테이너 이름과 SID가 함께 표시될 수 있으니 대상 패키지가 있는지 확인하세요. 액세스 거부 메시지가 나오면 터미널을 관리자 권한으로 실행했는지 확인하세요. 앱 컨테이너를 찾을 수 없다는 메시지가 나오면 패키지 계열 이름과 설치 상태를 다시 확인하세요.

조회 결과에서 대상 패키지를 정확히 찾았다면 PowerShell 변수로 전달해 직접 복사하면서 생기는 오류를 줄일 수 있습니다:

$app = Get-AppxPackage -Name Microsoft.WindowsStore
if ($null -ne $app) {
    CheckNetIsolation.exe LoopbackExempt -a "-n=$($app.PackageFamilyName)"
} else {
    Write-Output "현재 사용자에게 지정된 앱 패키지가 없습니다."
}

결과 확인: 연결, 규칙, 출구 구분하기

테스트 조건을 동일하게 유지하세요. 같은 네트워크와 설정을 사용하고 동일한 작업을 수행합니다. 클라이언트의 연결 화면을 열어 둔 다음 앱에서 실제로 문제가 발생한 페이지를 새로 고치거나 로그인하세요. 앱 홈에 캐시된 내용이 표시되는지만으로 성공 여부를 판단하지 마세요.

확인할 결과문제가 있을 수 있는 단계다음 단계
예외 목록에 대상 패키지가 없음권한 또는 패키지 이름관리자 터미널에서 다시 조회하고 추가
목록에 대상 패키지가 있지만 연결 기록이 없음앱이 해당 프록시를 사용하지 않거나 요청이 전송되지 않음앱을 다시 시작하고 시스템 프록시 및 앱 네트워크 설정 확인
연결은 나타나지만 정책이 DIRECT규칙 기반 라우팅적용된 규칙을 확인하고 프록시 정책 대상인지 점검
연결이 프록시 정책에 들어간 후 시간 초과노드, DNS 또는 대상 네트워크코어 로그와 선택한 노드 상태 확인
네트워크 요청은 성공하지만 계정 작업은 실패앱 기능 또는 계정 지역서비스 상태, 계정, 오류 코드 확인

클라이언트에 프로세스 이름이 표시되면 대상 앱을 찾는 데 참고할 수 있습니다. 표시되지 않으면 요청 시간과 도메인을 함께 확인하세요. 로그에 DNS, TLS 또는 인증 오류가 있다면 해당 연결 단계에서 원인을 찾아야 합니다. 같은 예외를 반복해서 추가하지 마세요. 전역 모드로 잠시 바꾸면 규칙의 영향을 확인하는 데 도움이 될 수 있지만, 테스트 후에는 기존 모드로 되돌리세요.

TUN 모드와 루프백 예외의 적용 범위

시스템 프록시는 이를 사용하도록 설계된 앱에 프록시 주소를 전달합니다. TUN 모드는 가상 네트워크 인터페이스와 라우팅을 통해 대상 트래픽을 처리합니다. 두 기능은 트래픽을 연결하는 방식이 다릅니다. 앱이 시스템 프록시를 사용하지 않는다면 루프백 예외를 추가해도 자동으로 프록시를 이용하지 않습니다. 이 경우 클라이언트의 TUN 모드를 고려할 수 있습니다.

TUN을 켠다고 AppContainer의 모든 네트워크 제한이 반드시 해제되는 것은 아닙니다. 앱이 제한된 루프백 포트에 직접 연결한다면 해당 제한은 별도로 처리해야 합니다. TUN이 트래픽을 제대로 처리하는지는 권한, 라우팅, DNS, 인터페이스 제외 규칙과 다른 VPN 프로그램의 영향을 받습니다.

예외 해제 및 이후 관리

로컬 프록시 접근이 더 이상 필요하지 않거나 문제가 루프백과 무관하다고 확인되면 방금 추가한 예외를 삭제할 수 있습니다. 아래에서는 같은 예시 패키지를 사용해 해당 항목만 제거하며, 다른 앱의 기존 설정에는 영향을 주지 않습니다:

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

CheckNetIsolation.exe LoopbackExempt -s

-d는 지정한 항목을 삭제합니다. 실행 후 목록을 다시 확인해 대상 항목이 제거되었는지 확인하세요. 문제를 확인하기 전에 원래 목록을 저장해 두면 이번에 추가한 항목과 기기에 이미 있던 설정을 구분하기 좋습니다.

패키지 계열 이름이 유지되는 일반 업데이트에서는 보통 예외를 다시 추가할 필요가 없습니다. 앱을 삭제 후 재설치하거나 배포 채널을 바꾸거나 패키지 ID가 달라졌다면 다시 조회해야 합니다. 권장 순서는 포트 사용 여부 확인, 앱 유형 확인, 대상 패키지에 예외 추가, 앱 재시작, 연결 및 규칙 확인입니다. 연결은 정상인데 앱 기능만 계속 실패할 때 노드, DNS, 계정 서비스를 확인하세요.

Clash 다운로드