1. 먼저 공유 방식 확인: 기기에서 PC 프록시에 직접 연결

가장 간단한 방법은 PC에서 Clash 또는 Clash Meta(mihomo) 기반 클라이언트를 실행하고 로컬 네트워크 접근을 허용하는 것입니다. 휴대폰과 PC를 같은 홈 네트워크에 연결한 뒤, 휴대폰의 Wi-Fi 프록시 설정에 PC의 로컬 IPv4 주소와 혼합 포트를 입력합니다. PC와 클라이언트가 계속 실행 중이면 프록시 설정을 따르는 휴대폰 앱의 요청이 PC의 코어로 전달되어, PC에서 사용 중인 규칙과 정책 그룹에 따라 처리됩니다.

이 문서에서는 PC 주소 192.168.50.10, 홈 서브넷 192.168.50.0/24, 혼합 포트 7890을 예시로 사용합니다. 실제 설정에서는 현재 네트워크에 맞는 값으로 바꿔야 합니다. 휴대폰에는 127.0.0.1을 입력하지 마세요. 이 주소는 항상 휴대폰 자신을 가리키며 PC를 가리키지 않습니다.

  1. 먼저 PC에서 구독이 활성화되어 있고 정책 그룹에 사용할 수 있는 노드가 선택되어 있는지 확인합니다. PC 브라우저에서 대상 사이트에 정상적으로 접속되는지도 확인하세요.
  2. 휴대폰과 PC가 게스트 네트워크에 연결되어 있지 않고 무선 클라이언트 격리도 꺼져 있는지 확인합니다. 같은 Wi-Fi 이름을 사용하더라도 기기 간 통신이 허용된다는 보장은 없습니다.
  3. PC가 현재 사용하는 네트워크 어댑터의 주소를 확인합니다. 라우터에서 두 기기 간 통신을 허용한다면 유선 PC와 무선 휴대폰도 함께 사용할 수 있습니다.

2. mixed-port, allow-lan, 바인딩 주소의 역할

혼합 포트는 HTTP 프록시와 SOCKS5 프록시의 진입점을 하나의 포트로 통합하며, 코어는 연결 핸드셰이크를 보고 프로토콜을 판별합니다. 모든 네트워크 프로토콜을 HTTP로 변환하는 기능도 아니고 라우터의 포트 포워딩도 아닙니다. 휴대폰에서 HTTP 프록시를 선택하면 7890을 입력할 수 있습니다. SOCKS5를 지원하는 앱도 같은 포트에 연결할 수 있지만, 앱에서 올바른 프록시 유형을 선택해야 합니다.

설정 항목기능이 문서의 예시
mixed-portHTTP와 SOCKS5가 함께 사용하는 인바운드 포트7890
allow-lan다른 기기에서 프록시 수신 주소에 연결하도록 허용true
bind-address연결을 수신할 로컬 주소 지정192.168.50.10
mode코어로 들어온 트래픽의 분기 방식 결정rule
authenticationHTTP 및 SOCKS 인바운드에 계정과 비밀번호 설정인증을 지원하는 기기라면 설정 권장

allow-lan: true는 로컬 네트워크 접근을 허용하기 위한 설정 중 하나일 뿐입니다. 실제 수신 주소가 여전히 127.0.0.1뿐이거나 시스템 방화벽에서 인바운드 연결을 차단하면 휴대폰은 연결할 수 없습니다. 반대로 모든 인터페이스에 바인딩했다고 해서 포트를 안심하고 노출해도 되는 것은 아닙니다. 네트워크 경계를 함께 제한해야 합니다.

기존의 port는 보통 HTTP 프록시 포트이고 socks-port는 별도의 SOCKS 포트입니다. 혼합 포트를 이미 사용 중이라면 공유를 위해 두 종류의 진입점을 추가로 열 필요가 없습니다. 여러 설정 항목에서 같은 포트를 사용해 주소 사용 중 오류가 발생하면 중복 수신 설정을 삭제하거나 진입점마다 다른 포트를 지정하세요.

3. 적용할 설정 수정 및 포트 작동 확인

기존 설정을 보존하고 최상위 항목 수정

먼저 현재 설정을 백업합니다. 그래픽 클라이언트에 설정의 ‘로컬 네트워크 연결 허용’ 또는 ‘Allow LAN’ 옵션이 있다면 우선 이용할 수 있습니다. 클라이언트마다 메뉴 위치와 한국어 명칭은 다릅니다. 중요한 것은 스위치 상태만 보는 것이 아니라 최종 실행 설정을 확인하는 것입니다. 구독을 클라이언트에서 관리한다면 구독 갱신 시 수동 변경 사항이 덮어써지지 않도록 클라이언트가 제공하는 오버라이드, 병합 또는 영구 설정 기능을 사용하세요.

아래는 기존 설정에 병합할 최상위 항목이며, 완성된 구독 설정이 아닙니다. 기존 노드, 정책 그룹, 규칙, DNS 설정은 유지해야 합니다. YAML은 공백으로 들여쓰고 탭은 사용하지 마세요. 같은 수준에 mixed-port를 두 번 작성해서도 안 됩니다.

mixed-port: 7890
allow-lan: true
bind-address: '192.168.50.10'
mode: rule

특정 로컬 네트워크 주소에 바인딩하면 수신 범위를 좁힐 수 있지만, 해당 주소가 실제로 PC에 할당되어 있어야 합니다. 주소가 바뀌어 실행에 실패하지 않도록 라우터의 DHCP 설정에서 PC에 고정 임대를 예약하는 것이 좋습니다. 기존 로컬 루프백 프록시 진입점도 유지해야 한다면 bind-address: '*' 사용을 고려하고, 방화벽으로 접속 출처를 정확히 제한하세요. 변경 후에는 PC 자체의 프록시도 정상 작동하는지 확인해야 합니다.

설정 다시 불러온 후 수신 상태 확인

설정을 저장한 뒤 클라이언트에서 제공하는 방법으로 다시 불러옵니다. 수신 설정이 갱신되지 않으면 코어를 재시작하세요. Windows에서는 PowerShell로 TCP 수신 상태를 확인할 수 있으며, macOS와 Linux에서는 각 운영체제의 도구를 사용할 수 있습니다.

# Windows PowerShell
Get-NetTCPConnection -LocalPort 7890 -State Listen

# macOS
lsof -nP -iTCP:7890 -sTCP:LISTEN

# Linux
ss -lntp 'sport = :7890'

PC의 로컬 네트워크 주소 또는 전체 주소 수신이 표시되어야 하며, 127.0.0.1:7890만 표시되어서는 안 됩니다. 결과가 전혀 없다면 먼저 코어 로그에서 포트 사용 중, 주소 없음, 설정 파싱 오류가 있는지 확인하세요. 일부 시스템은 관리자 권한으로만 프로세스 정보를 표시합니다. 필요한 경우 관리자 권한으로 확인하되, 문제를 찾기 위해 방화벽을 통째로 끄지는 마세요.

4. 신뢰할 수 있는 로컬 네트워크만 방화벽에서 허용

HTTP 프록시와 HTTPS의 CONNECT 터널은 먼저 TCP 연결을 사용합니다. 휴대폰에서 웹을 보는 용도라면 TCP 7890만 허용하면 되며 처음부터 UDP를 열 필요는 없습니다. SOCKS5의 UDP 포워딩은 클라이언트의 UDP ASSOCIATE 지원 여부, 코어 기능, 실제 노드 연결 경로에도 달려 있습니다. 혼합 포트가 열려 있다는 이유만으로 게임의 UDP 연결도 사용할 수 있다고 판단할 수는 없습니다.

Windows: 네트워크 프로필과 접속 출처 서브넷 제한

먼저 ‘설정’ → ‘네트워크 및 인터넷’에서 현재 연결의 속성을 열고, 신뢰할 수 있는 홈 네트워크에서만 네트워크 프로필을 ‘개인’으로 설정합니다. 그런 다음 관리자 권한 PowerShell에서 아래 규칙을 추가합니다. 예시의 로컬 주소와 원격 서브넷은 실제 환경에 맞게 변경해야 합니다.

New-NetFirewallRule `
  -DisplayName "Clash LAN TCP 7890" `
  -Direction Inbound `
  -Action Allow `
  -Protocol TCP `
  -LocalPort 7890 `
  -LocalAddress 192.168.50.10 `
  -RemoteAddress 192.168.50.0/24 `
  -Profile Private

보안 소프트웨어가 별도의 규칙을 관리하는 경우도 있습니다. Windows 방화벽에서 허용했는데도 연결 시간이 초과되면 해당 프로그램의 네트워크 보호 로그를 확인하세요. ‘모든 포트, 모든 출처, 모든 네트워크’와 같은 광범위한 규칙으로 원인을 찾으려 하지 마세요. 공유를 중단한 뒤에는 이 문서에서 만든 규칙을 삭제할 수 있습니다.

Remove-NetFirewallRule -DisplayName "Clash LAN TCP 7890"

macOS 및 Linux: 실제로 수신 중인 프로세스 확인

macOS에서는 ‘시스템 설정’ → ‘네트워크’ → ‘방화벽’ → ‘옵션’에서 앱의 인바운드 연결 권한을 확인할 수 있습니다. 구버전 시스템에서는 ‘보안 및 개인 정보 보호’에 있을 수 있습니다. 프록시 수신이 별도의 코어 프로세스에서 이루어질 때도 있으므로, 클라이언트의 그래픽 셸만 허용하지 말고 수신 상태와 시스템 알림을 함께 확인하세요.

Linux에서 UFW를 사용한다면 출처 서브넷을 지정해 규칙을 추가할 수 있습니다. UFW를 사용하지 않는 시스템에서는 현재 방화벽을 관리하는 도구를 사용하세요. 명령을 그대로 따라 하기 위해 별도의 방화벽 관리자를 함께 실행하지 마세요.

sudo ufw allow from 192.168.50.0/24 to 192.168.50.10 port 7890 proto tcp

5. 휴대폰·TV·게임기별 설정 방법

iPhone 및 iPad: 현재 Wi-Fi의 HTTP 프록시 설정

  1. ‘설정’ → ‘Wi-Fi’를 열고 현재 네트워크 오른쪽의 정보 버튼을 탭합니다.
  2. ‘프록시 구성’을 찾아 ‘수동’을 선택합니다. 서버에 192.168.50.10, 포트에 7890을 입력합니다.
  3. 코어에 계정과 비밀번호가 설정되어 있다면 ‘인증’을 켜고 해당 정보를 입력합니다. 저장한 뒤 브라우저를 다시 열어 테스트하세요.

서버 항목에는 IP 주소만 입력하고 http://192.168.50.10:7890처럼 입력하지 마세요. 이 설정은 현재 Wi-Fi에만 적용되며 모바일 네트워크에는 자동으로 적용되지 않고 시스템 전체 VPN도 아닙니다. HTTPS 사이트에서는 일반 HTTP 프록시가 CONNECT로 터널을 만들므로 루트 인증서를 설치할 필요가 없습니다. 인증서 경고가 뜨면 먼저 시스템 시간, 사이트 인증서, 네트워크 환경을 확인하세요.

Android: 연결된 네트워크의 프록시 옵션 변경

일반적인 경로는 ‘설정’ → ‘네트워크 및 인터넷’ → ‘인터넷’ → 현재 Wi-Fi → ‘수정’ → ‘고급 옵션’ → ‘프록시’ → ‘수동’입니다. 제조사별 시스템에서는 네트워크 상세 화면에 메뉴가 있을 수도 있습니다. 프록시 호스트 이름에 192.168.50.10, 프록시 포트에 7890을 입력합니다. 공유 연결만 테스트할 때는 대상 도메인이 제외되지 않도록 우회 목록을 추가하지 마세요.

일부 Android 시스템의 Wi-Fi 수동 프록시 화면에는 사용자 이름과 비밀번호 입력란이 없습니다. 이 경우 인증이 필요한 설정을 그대로 사용할 수 없습니다. 인증을 지원하는 앱별 프록시 기능을 사용하거나, 신뢰할 수 있고 격리된 홈 네트워크에서 엄격한 방화벽 규칙과 함께 공유 방법을 검토하세요. 앱이 시스템 HTTP 프록시를 따르지 않으면 이 화면을 변경해도 해당 앱의 트래픽을 강제로 프록시 처리할 수 없습니다.

TV 및 게임기: 기기에 프록시 설정 메뉴가 있는지 먼저 확인

TV의 브라우저나 네트워크 설정에서 HTTP 프록시를 지원하면 같은 주소와 포트를 입력할 수 있습니다. SOCKS5를 지원하는 플레이어는 앱에서 SOCKS5를 선택하세요. 게임기의 HTTP 프록시 설정은 일부 시스템 서비스나 다운로드에만 영향을 주는 경우가 많습니다. 이 설정만으로 온라인 대전, 음성 채팅, NAT 유형까지 달라진다고 볼 수는 없습니다.

기기 전체의 TCP와 UDP를 프록시로 보내려면 보통 라우터 측 투명 프록시나 제대로 설계된 게이트웨이 구성이 필요하며, 포워딩, 라우팅, DNS, 반환 경로를 함께 다뤄야 합니다. 게임기의 게이트웨이를 PC IP로 바꾸거나 PC에서 TUN을 켜는 것만으로는 완전한 구성이 되지 않습니다. 네트워크 관련 경험이 없다면 앱에서 명시적으로 설정하는 프록시 범위부터 사용하세요.

6. 연결 기록으로 포트·인증·규칙 문제 구분하기

테스트할 때는 한 번에 하나의 조건만 바꾸세요. 먼저 PC의 규칙 모드와 노드를 그대로 둔 채 다른 기기에서 포트를 테스트하고, 이어서 프록시 요청을 테스트한 다음 코어의 연결 기록을 확인합니다. 아래 명령의 도메인은 연결 확인용 예시입니다. 사이트가 열려도 프록시 노드를 통해 접속했다는 뜻은 아니므로 실제로 적용된 규칙도 확인해야 합니다.

# 다른 Windows 기기에서 TCP 연결 가능 여부 확인
Test-NetConnection 192.168.50.10 -Port 7890

# HTTP 프록시 테스트: Windows PowerShell에서는 curl.exe를 명시적으로 호출
curl --proxy http://192.168.50.10:7890 --connect-timeout 5 -I https://example.com/

# SOCKS5 테스트: 대상 도메인을 프록시 측에서 조회
curl --proxy socks5h://192.168.50.10:7890 --connect-timeout 5 -I https://example.com/
증상우선 확인할 항목다음 단계
TCP 연결 시간 초과주소 오류, 서브넷 격리, 방화벽 차단네트워크 어댑터 주소와 출처 서브넷 규칙 확인
연결 거부됨수신 중인 프로세스 없음, 포트 오류 또는 프로세스 종료수신 상태 목록과 코어 로그 확인
HTTP 407 응답프록시 인증 필요기기가 인증을 지원하는지 확인하고 계정과 비밀번호 입력
연결 기록은 있지만 대상 사이트가 열리지 않음노드, 규칙, DNS 또는 대상 서비스 문제적용된 규칙, 정책 그룹, 오류 세부 정보 확인
브라우저에서는 되지만 게임은 안 됨앱이 프록시를 우회하거나 UDP에 의존함앱의 프록시 지원 여부를 확인하고 포트를 반복해서 바꾸지 않기

HTTP 테스트에서 200 Connection established가 표시되면 프록시가 CONNECT 요청을 수락했다는 뜻일 뿐입니다. 이후 TLS 연결과 대상 서버 응답도 성공했는지 확인해야 합니다. 연결 패널에서 휴대폰의 출발지 주소로 필터링해 대상 도메인, 일치한 규칙, 최종 아웃바운드 경로를 확인하세요. 공유 요청에도 PC의 규칙 모드가 적용됩니다. DIRECT 규칙이 적용되어 직접 연결되는 것은 정상이며, 로컬 네트워크 공유 실패를 의미하지 않습니다.

DNS는 앱의 연결 경로에 따라 확인해야 합니다. HTTP 프록시는 보통 대상 호스트 이름을 전달받습니다. socks5h는 프록시 측에서 대상 도메인을 조회하도록 명시하며, 일반적인 socks5 사용 방식에서는 요청 기기에서 먼저 조회할 수 있습니다. Wi-Fi 수동 프록시는 휴대폰의 모든 DNS 조회를 PC로 보내지 않습니다. DNS 수신과 관련 방화벽 규칙을 별도로 구성하고 검증하지 않았다면 이 예시만 보고 휴대폰 DNS를 PC 주소로 바꾸지 마세요.

7. 인증·절전·공유 해제를 위한 마무리 확인

신뢰할 수 있는 네트워크에서도 인증을 지원하는 기기에는 별도의 계정을 설정하는 것이 좋습니다. HTTP 및 SOCKS 인증은 로컬 네트워크 구간을 암호화하지 않으며, 중요한 서비스의 비밀번호를 재사용해서도 안 됩니다. 아래 값은 설정 문법을 보여 주기 위한 예시일 뿐입니다. 실제로 적용하기 전에 별도의 무작위 인증 정보를 설정하고 기기가 인증을 지원하는지 확인하세요.

authentication:
  - "lan-device:ChangeThisLocalPass7890"
  • 인증 우회 설정 확인: 설정에 skip-auth-prefixes가 있다면 공유 네트워크 전체가 제외되어 있지 않은지 확인하세요. 계정을 설정했다는 이유만으로 인증이 적용된다고 판단해서는 안 됩니다.
  • 주소 유지: PC에 DHCP 임대를 예약하세요. 라우터를 교체하거나 네트워크를 변경하거나 다시 연결한 뒤에는 주소와 방화벽 범위를 다시 확인해야 합니다.
  • 절전 주의: PC가 절전 모드에 들어가거나 덮개를 닫거나 코어가 종료되면 해당 프록시를 사용 중인 휴대폰에서 인터넷에 연결되지 않을 수 있습니다. 휴대폰 네트워크를 초기화하기 전에 PC 상태부터 확인하세요.
  • 공유 중단: 먼저 휴대폰의 ‘프록시 구성’을 ‘끔’으로 변경하고 Android에서는 ‘없음’으로 설정합니다. 그런 다음 클라이언트에서 로컬 네트워크 접근을 끄고 전용 허용 규칙을 삭제하세요.

설정을 마친 뒤에는 세 가지를 명확히 파악할 수 있어야 합니다. 어느 기기가 연결을 수신하는지, 어떤 출처의 연결을 허용하는지, 요청이 코어에 들어온 다음 어떤 규칙으로 처리되는지입니다. 이 세 단계를 나누어 확인하면 전체 모드를 반복해서 전환하거나 클라이언트를 다시 설치하거나 방화벽을 통째로 끄지 않아도 혼합 포트 공유 문제를 해결할 수 있습니다. 코어 및 트래픽 분기 설정은 고급 설정에서, 구독을 처음 가져오는 방법은 입문 가이드에서 확인하세요.