Clash LAN 프록시 공유: allow-lan으로 휴대폰·TV에서 PC 프록시 사용
mixed-port 원리부터 allow-lan·bind-address 설정, 방화벽 허용, 다른 기기에 프록시 주소를 입력하는 방법까지 단계별로 안내합니다.
프록시 공유 연결 방식: 기기에서 PC의 7890 포트로 연결
Clash LAN 프록시 공유는 휴대폰이나 TV가 PC의 프록시 포트에 요청을 보내면, PC에서 실행 중인 Clash 또는 mihomo가 현재 설정에 따라 규칙을 적용하고 프록시 노드나 직접 연결을 선택하는 방식입니다. 다른 기기는 PC의 HTTP 또는 SOCKS 프록시를 이용하며, PC에 저장된 구독을 직접 가져오는 것은 아닙니다.
이 글에서는 PC의 LAN IPv4 주소를 192.168.1.20, 휴대폰 주소를 192.168.1.35, mixed-port를 7890으로 설정한 예를 사용합니다. 실제 설정에는 본인 PC의 주소를 입력하세요. PC는 유선 LAN으로 공유기에 연결하고 휴대폰은 Wi-Fi를 사용할 수도 있습니다. 연결 방식이 같을 필요는 없으며, 두 기기 사이에 통신이 가능해야 합니다.
mixed-port: 하나의 포트에서 HTTP와 SOCKS 프록시 연결을 모두 받습니다. 이 글에서는 휴대폰에서 HTTP 프록시로 연결합니다.allow-lan: 다른 기기에서 들어오는 프록시 연결을 허용합니다. PC에서 시스템 프록시를 켜는 것만으로는 보통 LAN 접속이 허용되지 않습니다.bind-address: 프록시 서비스가 수신할 로컬 주소를 지정합니다.allow-lan: true와 함께 설정해야 합니다.external-controller: 관리 API가 연결을 받는 주소입니다. 휴대폰에 입력할 프록시 주소가 아닙니다.
먼저 PC 주소, 네트워크 격리, 로컬 프록시 확인하기
현재 연결된 네트워크 어댑터의 IPv4 주소 확인
Windows에서는 「설정」→「네트워크 및 인터넷」→ 현재 사용 중인 「Wi-Fi」 또는 「이더넷」→ 네트워크 속성에서 IPv4 주소를 확인하거나 아래 명령을 실행할 수 있습니다. PC에 가상 머신, VPN 또는 TUN 네트워크 어댑터가 설치되어 있다면 가정용 공유기에 연결된 물리 네트워크 어댑터의 주소를 사용하세요. 가상 어댑터 주소를 그대로 복사하면 안 됩니다.
ipconfig
macOS에서는 「시스템 설정」→「네트워크」→ 현재 연결 →「세부사항」→「TCP/IP」에서 IP 주소를 확인할 수 있습니다. Linux에서는 ip -4 addr를 실행한 뒤 현재 사용 중인 유선 또는 무선 네트워크 어댑터의 inet 항목을 확인하세요. 127.0.0.1은 기기 자체를 가리키는 루프백 주소입니다. 휴대폰에 이 주소를 입력하면 휴대폰 자신에 연결됩니다.
기기 간 통신이 가능한지 확인
- 휴대폰에서 모바일 데이터를 잠시 끄고 PC와 통신할 수 있는 가정용 Wi-Fi에 연결합니다.
- 공유기의 게스트 네트워크는 사용하지 마세요. 게스트 네트워크 격리, AP 격리 또는 무선 클라이언트 격리로 인해 다른 기기에서 PC에 접속하지 못할 수 있습니다.
- 서로 다른 서브넷 간 통신에는 라우팅과 접근 규칙이 필요합니다. 예를 들어
192.168.1.0/24와192.168.50.0/24는 같은 공유기에 연결되어 있다는 이유만으로 통신이 보장되지 않습니다. - 공유 연결을 점검하기 전에 PC에서 Clash 구독이 정상적으로 작동하고 노드가 선택되어 있으며, 규칙 모드로 대상 사이트에 접속할 수 있는지 먼저 확인하세요.
공유기 DHCP 설정에서 PC에 고정 임대를 예약하는 것이 좋습니다. 예를 들어 192.168.1.20을 계속 할당하도록 설정할 수 있습니다. PC의 IP 주소가 바뀌면 휴대폰에 저장된 프록시 서버 주소도 함께 변경해야 합니다.
allow-lan, bind-address, mixed-port 설정하기
클라이언트 화면에서 관련 스위치는 ‘LAN 연결 허용’ 또는 ‘Allow LAN’으로 표시될 수 있으며, mixed-port는 포트 설정에 있을 수 있습니다. 메뉴 위치는 클라이언트마다 다르므로 실제 적용 중인 설정과 수신 상태를 기준으로 확인하세요. mihomo 설정 파일을 사용하는 경우 아래 세 항목은 YAML 최상위에 있어야 하며, proxies나 dns 아래에 들여쓰기하면 안 됩니다.
# 기존 설정의 최상위 항목에 추가하고 구독 전체를 바꾸지 마세요
mixed-port: 7890
allow-lan: true
bind-address: "192.168.1.20"
이 예시는 지정된 IPv4 주소에서만 연결을 수신합니다. PC가 실제로 해당 주소를 가지고 있어야 수신이 시작됩니다. 여러 네트워크 어댑터에서 연결을 받으려면 bind-address: "*"를 사용할 수 있지만, 접속 가능한 네트워크 범위가 넓어지므로 방화벽 규칙도 더 엄격하게 설정해야 합니다. 127.0.0.1에만 바인딩하면 휴대폰의 LAN 연결을 받을 수 없습니다.
- 기존 설정을 기록해 두고
7890포트를 다른 프록시 프로세스가 사용 중인지 확인합니다. - 클라이언트의 설정 메뉴나 설정 오버라이드 기능으로 수정 사항을 저장하세요. 구독 업데이트 때 덮어써질 수 있는 임시 파일을 직접 수정하지 않는 것이 좋습니다.
- 설정을 적용한 뒤 수신 상태가 바뀌지 않으면 클라이언트 안내에 따라 코어를 재시작합니다.
- 실행 로그에서 주소 바인딩 실패나 포트 사용 중 오류가 없는지 확인합니다.
Windows PowerShell에서 수신 주소를 확인할 수 있습니다. 출력된 LocalAddress에 지정한 LAN 주소가 포함되어야 합니다. 모든 인터페이스에서 수신하도록 설정했다면 와일드카드 주소가 표시될 수도 있습니다. 127.0.0.1만 표시된다면 LAN 연결이 아직 적용되지 않은 것입니다.
Get-NetTCPConnection -State Listen -LocalPort 7890 |
Select-Object LocalAddress, LocalPort, OwningProcess
Linux에서는 ss -lntp 'sport = :7890', macOS에서는 lsof -nP -iTCP:7890 -sTCP:LISTEN을 사용할 수 있습니다. 클라이언트 설정이 YAML 파일보다 우선 적용된다면, 클라이언트의 설정 메뉴에서 수정하세요. 불러오지 않는 파일을 반복해서 수정할 필요는 없습니다.
신뢰할 수 있는 LAN에 한해 방화벽에서 TCP 7890 허용
수신이 시작되었다는 것은 프로그램이 연결을 받을 준비가 되었다는 뜻일 뿐, 운영체제 방화벽이 외부 기기의 접속을 허용한다는 뜻은 아닙니다. 이 글의 Wi-Fi HTTP 프록시 테스트에는 인바운드 TCP 7890만 필요합니다. 모든 포트를 열거나 PC 방화벽 전체를 끌 필요는 없습니다.
Windows: 허용할 네트워크와 출발지 범위 제한
먼저 현재 네트워크가 신뢰할 수 있는 가정용 네트워크인지 확인하고, Windows 네트워크 속성에서 ‘개인 네트워크’로 설정합니다. 그런 다음 관리자 권한으로 PowerShell을 열고 실제 네트워크 범위에 맞게 아래의 출발지 주소를 수정하세요. 이 예시는 192.168.1.0/24에서 오는 연결만 허용하며, 개인 네트워크 프로필에서만 적용됩니다.
New-NetFirewallRule `
-DisplayName "Clash LAN TCP 7890" `
-Direction Inbound `
-Action Allow `
-Protocol TCP `
-LocalPort 7890 `
-RemoteAddress 192.168.1.0/24 `
-Profile Private
휴대폰 한 대만 허용하려면 -RemoteAddress를 해당 휴대폰의 IP 주소로 바꾸고, 휴대폰에 DHCP 예약 주소를 설정하세요. 공유를 중지한 뒤에는 다음 명령으로 이 규칙을 삭제할 수 있습니다:
Remove-NetFirewallRule -DisplayName "Clash LAN TCP 7890"
macOS 및 Linux: 앱과 포트 규칙 확인
macOS에서는 「시스템 설정」→「네트워크」→「방화벽」→「옵션」으로 이동해 실제로 연결을 받는 클라이언트 또는 코어 프로그램의 수신 연결이 허용되어 있는지 확인하세요. ‘모든 수신 연결 차단’이 켜져 있다면 먼저 정책을 검토하고 조정해야 합니다. 타사 방화벽이 별도로 연결을 차단할 수도 있으므로 시스템 설정만으로 허용 여부를 단정할 수 없습니다.
Linux에서 UFW를 사용 중이라면 출발지 범위를 제한한 규칙을 추가할 수 있습니다. UFW를 사용하지 않는 경우에는 기존 nftables, firewalld 또는 다른 방화벽 체계에서 설정하세요. 한 번의 테스트를 위해 방화벽 관리 도구를 바꾸지 마세요.
sudo ufw allow from 192.168.1.0/24 to any port 7890 proto tcp
휴대폰과 TV에 프록시 서버 주소 입력하기
아래 방법은 HTTP 프록시 설정에 해당합니다. 서버 입력란에는 192.168.1.20, 포트 입력란에는 7890만 입력하세요. 서버 입력란에 http://, 경로 또는 포트를 덧붙이지 마세요. 프록시 URL 전체를 요구하는 앱에서만 http://192.168.1.20:7890 형식으로 입력합니다.
| 기기 | 주요 설정 경로 | 입력할 값 |
|---|---|---|
| iPhone / iPad | 설정 → Wi-Fi → 현재 네트워크 옆 정보 버튼 → 프록시 구성 → 수동 | 서버 192.168.1.20, 포트 7890 |
| Android 휴대폰 | 설정 → WLAN 또는 인터넷 → 현재 네트워크 → 네트워크 수정 → 고급 옵션 → 프록시 → 수동 | 프록시 호스트 이름 192.168.1.20, 프록시 포트 7890 |
| Android TV / Google TV | 설정 → 네트워크 및 인터넷 → 현재 네트워크 → 프록시 설정. 메뉴 위치는 제조사마다 다를 수 있습니다. | 수동을 선택한 뒤 동일한 호스트와 포트를 입력합니다. |
Android 및 iOS에서 알아둘 점
Android 기기에서는 ‘네트워크 수정’이나 편집 아이콘 안에 프록시 설정이 있을 수 있습니다. IP 설정은 DHCP로 유지하세요. 프록시를 설정하기 위해 고정 IP로 바꿀 필요는 보통 없습니다. iOS의 프록시 설정은 현재 Wi-Fi에만 적용되며, 모바일 데이터나 다른 Wi-Fi 네트워크에는 자동으로 적용되지 않습니다.
일부 앱은 연결을 시작할 때 프록시 설정을 읽습니다. 설정을 바꾼 뒤 앱을 완전히 종료했다가 다시 실행해 보세요. 브라우저는 되는데 특정 앱만 안 된다면 곧바로 전역 모드로 바꾸기보다 해당 앱이 시스템 HTTP 프록시를 지원하는지 먼저 확인하세요.
TV에 프록시 메뉴가 없을 때
일부 TV 펌웨어에는 HTTP 프록시를 직접 설정하는 메뉴가 없거나 브라우저만 해당 설정을 따릅니다. 이 경우 PC에서 allow-lan을 켜도 TV가 프록시를 사용하도록 강제할 수 없습니다. TV에서 지원하는 클라이언트나 앱 내 프록시 설정을 이용하거나, 별도로 설계한 공유기 게이트웨이 방식을 사용해야 합니다. PC의 공유 포트만으로 TV의 기본 게이트웨이가 바뀌지는 않습니다.
단계별 확인: 포트 연결, 로그, 규칙
웹페이지가 한 번 열렸다는 이유만으로 모든 트래픽이 프록시를 거친다고 판단하지 마세요. 먼저 다른 PC에서 포트와 프록시 프로토콜을 확인한 다음 휴대폰 브라우저로 테스트하고 Clash 연결 로그도 살펴보세요. 아래 명령은 기기 간 방화벽과 네트워크 격리 여부까지 확인할 수 있도록 다른 LAN 기기에서 실행해야 합니다.
# Windows: TCP 포트 연결 확인
Test-NetConnection 192.168.1.20 -Port 7890
# macOS, Linux 또는 curl을 사용할 수 있는 기기: HTTP 프록시를 명시해 요청
curl -I --connect-timeout 5 \
--proxy http://192.168.1.20:7890 \
https://example.com/
TcpTestSucceeded: True는 TCP 연결에 성공했다는 뜻일 뿐, 노드가 정상적으로 작동한다는 의미는 아닙니다. curl로 HTTPS를 테스트하면 HTTP CONNECT 터널을 사용하므로, 일반적인 프록시 공유에서는 휴대폰에 인증서를 설치할 필요가 없습니다. 인증서 오류가 발생하면 기기 시간, 대상 사이트, 기존 인증서 설정을 확인하세요. 인증서 검증을 끄는 방법으로 해결하려고 하지 마세요.
- 포트 시간 초과: PC IP 주소, 수신 주소, 방화벽, 공유기의 클라이언트 격리를 차례로 확인하세요.
- 연결 거부: 코어가 실행 중인지, mixed-port가 실제로 7890인지, 루프백 주소에서만 수신 중인지 확인하세요.
- 프록시에 요청은 도달하지만 접속 실패: 노드 연결 상태, 구독 만료 여부, 적용된 정책 그룹, DNS 로그를 확인하세요.
- 웹페이지는 되지만 앱은 실패: 앱이 시스템 프록시를 무시하는지, HTTP 프록시로 전달할 수 없는 UDP 트래픽을 사용하는지 확인하세요.
규칙 모드에서는 공유 기기의 요청도 PC에 설정된 규칙과 정책 그룹의 영향을 받습니다. DIRECT에 해당하는 요청은 PC에서 직접 연결되므로 모든 요청이 프록시 노드를 거치는 것은 아닙니다. 데스크톱 클라이언트에 표시되는 프로세스 이름이 휴대폰의 실제 앱을 나타내는 것도 아니므로, 이를 기준으로 휴대폰 앱을 정확히 식별할 수는 없습니다.
TUN, DNS 및 프록시 공유 시 알아둘 점
PC에서 TUN을 켜도 휴대폰 트래픽이 자동으로 전달되지는 않습니다.
PC의 TUN은 일반적으로 PC의 가상 네트워크 어댑터로 들어오는 연결을 처리합니다. 휴대폰이 PC와 같은 Wi-Fi를 사용하더라도 기본 경로는 공유기를 향하므로 PC의 TUN으로 자동 전달되지 않습니다. 여기서 안내하는 공유 방식은 휴대폰이 192.168.1.20:7890에 직접 연결하는 것이며, 이 설정만을 위해 TUN을 추가로 켤 필요는 없습니다.
PC를 휴대폰의 게이트웨이로 바꾸려면 IP 포워딩, 라우팅, 주소 변환, DNS 설정이 필요하며 이는 별도의 네트워크 구성입니다. 포워딩 설정 없이 게이트웨이 주소만 바꾸면 휴대폰이 인터넷에 연결되지 않을 수 있습니다. UDP를 포함한 모든 트래픽을 기기 단위로 처리해야 한다면 해당 기기에 맞는 VPN/TUN 클라이언트나 계획된 게이트웨이 구성을 사용하세요.
HTTP 프록시를 사용해도 휴대폰의 모든 DNS 요청이 PC를 거치는 것은 아닙니다.
앱이 도메인 이름을 HTTP 프록시에 전달하면 프록시 측 설정에 따라 이름 확인과 라우팅이 처리될 수 있습니다. 그러나 앱이 로컬에서 먼저 이름을 확인하거나, 자체 암호화 DNS를 사용하거나, 시스템 프록시를 완전히 우회할 수도 있습니다. 따라서 Wi-Fi 프록시를 설정했다는 이유만으로 휴대폰의 모든 DNS 요청이 mihomo에서 처리된다고 볼 수는 없습니다. 문제를 확인할 때는 대상 도메인, 실제 연결 기록, DNS 설정을 함께 살펴보고 TUN용 Fake-IP 설정을 그대로 적용하지 마세요.
공유 중에는 필요한 범위만 개방
- 공유기에서 공인망 포트를 PC의 7890으로 포워딩하지 마세요. 관리 API를 공인 인터넷에 노출해서도 안 됩니다.
- 인증이 필요하다면 mihomo의
authentication을 설정할 수 있습니다. 다만 먼저 기기의 수동 프록시 메뉴가 프록시 인증을 지원하는지 확인하세요. 일부 TV 메뉴에서는 인증을 지원하지 않습니다. - PC가 절전 모드에 들어가거나 종료되거나 Wi-Fi 연결을 바꾸거나 코어가 종료되면 해당 프록시에 의존하는 기기가 인터넷에 연결되지 않을 수 있습니다.
- 공유를 중지할 때는 휴대폰과 TV의 프록시 설정을 ‘사용 안 함’ 또는 ‘끔’으로 되돌린 다음 Allow LAN을 끄고, 더 이상 필요하지 않은 방화벽 규칙을 삭제하세요.
안정적으로 사용하려면 네 가지 조건이 모두 충족되어야 합니다. PC 주소가 고정되어 있고, 프록시가 올바른 주소에서 연결을 수신하며, 신뢰할 수 있는 기기의 연결이 방화벽을 통과하고, 앱이 실제로 프록시 설정을 따라야 합니다. TUN, DNS, 라우팅을 한꺼번에 바꾸기보다 먼저 브라우저에서 HTTP 프록시 요청을 한 번 성공시킨 뒤 TV와 다른 앱으로 범위를 넓히는 편이 문제를 찾기 쉽습니다. 더 많은 설정 항목은 고급 설정을 참고하고, 처음 구독을 가져오는 경우 Clash 사용 가이드를 먼저 읽어보세요.