혼합 포트는 어떤 트래픽을 받나요?
mixed-port는 Clash와 mihomo 설정에서 사용하는 로컬 인바운드 포트입니다. 하나의 TCP 포트에서 HTTP 프록시와 SOCKS5 프록시 프로토콜을 구분해 처리합니다. 컴퓨터의 브라우저는 HTTP 프록시로 사용하고, SOCKS5를 지원하는 앱도 같은 포트에 연결할 수 있으므로 port와 socks-port를 따로 관리할 필요가 없습니다.
일반적인 설정에서는 혼합 포트를 7890으로 지정합니다. Clash가 실행 중인 컴퓨터의 주소가 192.168.1.20이라면 로컬 네트워크 기기에 입력할 프록시 주소는 192.168.1.20:7890입니다. 여기에는 가정용 네트워크에서 호스트가 사용하는 IPv4 주소를 입력해야 하며, 127.0.0.1이나 Clash 노드 서버 주소를 입력하면 안 됩니다.
mixed-port: 7890
allow-lan: true
bind-address: '*'
mode: rule
log-level: info
external-controller: 127.0.0.1:9090
mixed-port, port, socks-port의 차이
| 필드 | 프로토콜 | 일반적인 용도 |
|---|---|---|
mixed-port |
HTTP 및 SOCKS5 | 하나의 포트로 스마트폰·TV·데스크톱 앱 호환 |
port |
HTTP | 기존 HTTP 프록시 연결만 제공 |
socks-port |
SOCKS5 | SOCKS5를 명시적으로 지원하는 앱 연결 |
하나의 설정에서 세 필드를 모두 7890으로 지정할 필요는 없습니다. 하나의 포트를 여러 리스너가 동시에 사용할 수는 없습니다. 여러 유형의 기기를 호환해야 한다면 mixed-port: 7890만 유지하면 됩니다. 두 프로토콜을 분리해 점검해야 할 때는 서로 다른 port와 socks-port를 사용하세요.
allow-lan과 bind-address의 실제 역할
allow-lan: true는 다른 호스트가 Clash의 프록시 인바운드에 접속하도록 허용합니다. 즉, “로컬 네트워크 연결을 받을지”를 제어하는 설정입니다. 그래픽 클라이언트에서 “시스템 프록시”만 켜면 보통 현재 컴퓨터의 시스템 프록시만 변경되며, TV나 스마트폰이 자동으로 이 컴퓨터를 거쳐 연결되지는 않습니다.
bind-address는 인바운드 리스너가 어떤 네트워크 주소에서 동작할지 결정합니다. '*'는 사용 가능한 인터페이스에서 모두 수신한다는 뜻으로, DHCP에 따라 주소가 바뀔 수 있는 가정용 네트워크에 적합합니다. 일부 클라이언트가 생성하는 실행 설정은 이를 동일한 의미의 리스닝 방식으로 변환합니다. 특정 네트워크 카드에만 연결하려면 컴퓨터의 로컬 네트워크 주소(예: 192.168.1.20)를 입력할 수도 있지만, 주소가 바뀌면 설정도 함께 수정해야 합니다.
최소 설정 확인 목록
- Clash 설정에서
mixed-port에7890과 같은 명확한 포트가 지정되어 있는지 확인합니다. - 로컬 네트워크 접속을 활성화하고, 설정값은
allow-lan: true로 지정합니다. - 리스닝 주소가 루프백 주소
127.0.0.1로만 제한되어 있지 않은지 확인합니다. - 설정을 다시 불러오거나 코어를 재시작해 변경된 인바운드 리스너를 적용합니다.
- 호스트 컴퓨터에서
ipconfig,ip addr를 실행하거나 네트워크 설정을 확인해 현재 IPv4 주소를 기록합니다. - 호스트 컴퓨터와 대상 기기가 같은 가정용 네트워크에 연결되어 있고, 라우터에서 클라이언트 격리가 활성화되어 있지 않은지 확인합니다.
먼저 Clash가 실제로 로컬 네트워크에서 수신 중인지 확인하기
Windows에서는 PowerShell에서 Get-NetTCPConnection -LocalPort 7890 -State Listen을 실행할 수 있습니다. LocalAddress가 0.0.0.0 또는 호스트의 로컬 네트워크 주소로 표시되면 해당 인터페이스에서 연결을 받을 수 있다는 뜻입니다. 127.0.0.1만 표시된다면 다른 기기는 접속할 수 없습니다.
Linux에서는 ss -lntp | grep 7890, macOS에서는 lsof -nP -iTCP:7890 -sTCP:LISTEN을 실행할 수 있습니다. 문제를 점검할 때는 먼저 리스닝 상태를 확인한 뒤 방화벽을 살펴보세요. 클라이언트 화면에 “로컬 네트워크 허용”이 표시된다고 해서 시스템 방화벽의 인바운드 연결까지 허용된 것은 아닙니다.
스마트폰·TV·게임기에 프록시 입력하기
로컬 네트워크 공유의 핵심은 수동 프록시 설정입니다. 대상 기기는 기존 WiFi를 통해 IP, 게이트웨이, DNS를 그대로 받고, 프록시를 지원하는 앱의 요청만 Clash로 전달합니다. 호스트 컴퓨터는 켜져 있고 네트워크에 연결되어 있어야 하며 Clash 코어도 실행 중이어야 합니다. 컴퓨터가 절전 모드에 들어가면 다른 기기는 즉시 이 프록시 연결을 사용할 수 없습니다.
Android 및 iPhone
Android의 일반적인 경로는 「설정」→「네트워크 및 인터넷」→「WiFi」→현재 네트워크→「수정」→「고급 옵션」→「프록시」→「수동」입니다. iPhone과 iPad에서는 「설정」→「Wi-Fi」→현재 네트워크 오른쪽의 정보 버튼→「프록시 구성」→「수동」으로 이동합니다. 서버에는 호스트 컴퓨터 주소(예: 192.168.1.20)를 입력하고, 포트에는 7890을 입력하세요.
시스템 수준의 WiFi 프록시는 주로 HTTP 프록시 방식을 사용합니다. 대부분의 브라우저와 시스템 네트워크 설정을 따르는 앱에는 적용되지만, 일부 앱은 직접 연결을 만들거나 시스템 프록시를 우회하거나 HTTP 프록시로 전달할 수 없는 UDP 트래픽을 사용할 수 있습니다. “웹페이지는 열리는데 특정 앱은 직접 연결되는” 상황이 발생해도 mixed-port 설정이 잘못된 것은 아닙니다. 먼저 해당 앱이 시스템 프록시를 따르는지 확인하세요.
Android TV, Google TV 및 스마트 TV
Android TV의 메뉴 이름은 제조사에 따라 다르지만, 일반적인 경로는 「설정」→「네트워크 및 인터넷」→연결된 WiFi→「프록시 설정」→「수동」입니다. 프록시 호스트명에는 컴퓨터의 로컬 네트워크 IP를 입력하고, 프록시 포트에는 7890을 입력하세요. TV에 “호스트명” 입력란만 있다면 숫자 IP만 입력하고 http://를 붙이지 마세요. 포트를 같은 입력란에 함께 입력해서도 안 됩니다.
일부 TV 시스템에는 수동 프록시 메뉴가 없거나 브라우저만 프록시 설정을 따릅니다. 이 경우 Clash의 mixed-port만으로 TV 전체의 트래픽을 처리할 수 없습니다. 모든 앱에 적용하려면 투명 프록시를 지원하는 라우터나 보조 게이트웨이를 사용하거나, 지원되는 기기에서 클라이언트를 직접 실행해야 합니다.
PlayStation, Nintendo Switch 및 기타 게임 기기
PlayStation 네트워크 설정의 사용자 지정 연결 과정에서 “프록시 서버”를 찾을 수 있으며, 주소와 포트에는 호스트 컴퓨터의 IP와 7890을 입력합니다. Nintendo Switch에서는 「본체 설정」→「인터넷」→「인터넷 설정」→현재 네트워크→「설정 변경」→「프록시 설정」에서 서버와 포트를 지정할 수 있습니다.
게임 트래픽에는 UDP, P2P 연결, 엄격한 NAT 검사가 자주 포함됩니다. 수동 HTTP 프록시는 일반적으로 계정 로그인, 스토어 페이지, 다운로드 API 같은 TCP 요청만 처리하며, 기기 전체에 적용되는 투명 프록시와는 다릅니다. 온라인 매칭, 음성 채팅, NAT 유형이 HTTP 프록시를 입력했다고 해서 반드시 바뀌지는 않습니다. 기기 전체의 TCP 및 UDP 트래픽을 전달하려면 mixed-port를 계속 조정하기보다 라우터 측 투명 프록시를 사용해야 합니다.
Windows, macOS 및 Linux 방화벽 허용
로컬 네트워크 연결이 컴퓨터의 네트워크 카드에 도달한 뒤에도 운영체제 방화벽을 통과해야 합니다. 프록시 포트는 가정용 서브넷에서만 접근할 수 있도록 허용하고 모든 원격 주소에 개방하지 않는 것이 좋습니다. 아래 예시는 가정용 네트워크가 192.168.1.0/24이고 혼합 포트가 7890인 경우를 가정합니다.
Windows 인바운드 규칙
Windows의 그래픽 경로는 「Windows 보안」→「방화벽 및 네트워크 보호」→「고급 설정」→「인바운드 규칙」→「새 규칙」입니다. “포트”를 선택하고 TCP를 지정한 뒤 특정 로컬 포트에 7890을 입력합니다. 프로필은 현재 사용하는 “개인”만 선택하세요. 범위 설정에서 원격 IP를 가정용 서브넷으로 제한할 수 있습니다.
관리자 권한 PowerShell에서 제한된 서브넷 규칙을 생성할 수도 있습니다:
New-NetFirewallRule `
-DisplayName "Clash mixed-port LAN" `
-Direction Inbound `
-Action Allow `
-Protocol TCP `
-LocalPort 7890 `
-RemoteAddress 192.168.1.0/24 `
-Profile Private
WiFi가 Windows에서 “공용 네트워크”로 인식되는데 규칙이 “개인”에만 적용되도록 되어 있으면 연결이 계속 차단됩니다. 가정용 라우터를 사용한다면 「설정」→「네트워크 및 인터넷」→「WiFi」→현재 네트워크에서 네트워크 프로필을 확인하세요. 테스트를 위해 방화벽을 전부 끄지 말고 먼저 규칙, 포트, 네트워크 유형을 점검해야 합니다.
macOS 및 Linux
macOS에서는 「시스템 설정」→「네트워크」→「방화벽」→「옵션」에서 Clash 클라이언트가 인바운드 연결을 받을 수 있는지 확인합니다. 클라이언트에 따라 앱 이름이 다르며, 실제로 포트를 수신하는 프로세스가 클라이언트 본체일 수도 있고 별도의 코어 프로세스일 수도 있습니다. 코어 파일을 업그레이드하거나 교체하면 시스템에서 연결 허용 여부를 다시 물을 수 있습니다.
UFW를 사용하는 Linux 호스트에서는 아래 규칙을 실행해 지정한 가정용 네트워크 대역만 TCP 7890에 연결하도록 제한할 수 있습니다:
sudo ufw allow from 192.168.1.0/24 to any port 7890 proto tcp
sudo ufw status numbered
시스템에서 firewalld, nftables 또는 클라우드 호스트 보안 그룹을 사용한다면 실제로 적용되는 방화벽 계층에 규칙을 설정하세요. 여러 규칙 체계를 동시에 겹쳐 구성할 필요는 없습니다. 가정용 로컬 네트워크 공유에는 라우터의 포트 포워딩도 필요하지 않습니다. 포트 포워딩은 내부 리스너를 라우터 외부에 노출하는 기능이며, 같은 WiFi 안에서 공유하는 것과는 다릅니다.
연결에 실패하면 네트워크 계층별로 점검하기
1단계: 기기 간 통신이 가능한지 확인
스마트폰이나 다른 컴퓨터에서 프록시에 접속하기 전에 두 기기가 같은 서브넷에 있는지 확인하세요. 예를 들어 호스트가 192.168.1.20/24이고 스마트폰이 192.168.1.36/24이면 일반적으로 바로 통신할 수 있습니다. 한쪽 주소가 192.168.1.x이고 다른 쪽이 192.168.50.x라면 게스트 WiFi, Mesh 격리 네트워크 또는 다른 VLAN에 연결된 것은 아닌지 확인해야 합니다.
많은 라우터의 “게스트 네트워크”, “AP 격리” 또는 “무선 클라이언트 격리” 기능은 WiFi 기기가 로컬 네트워크 호스트에 접속하지 못하게 합니다. 이 경우 기기는 인터넷에 연결되지만 192.168.1.20:7890에는 접속할 수 없습니다. 두 기기를 일반 가정용 네트워크로 전환하거나 라우터에서 해당 네트워크 대역 간 통신을 허용하세요.
2단계: 노드보다 먼저 포트 테스트
다른 컴퓨터에서 Test-NetConnection 192.168.1.20 -Port 7890을 실행해 Windows 호스트를 테스트할 수 있으며, nc -vz 192.168.1.20 7890도 사용할 수 있습니다. TCP 연결이 실패한다면 문제는 리스닝 주소, 방화벽 또는 로컬 네트워크 격리에 있으므로 먼저 프록시 노드를 바꿀 필요가 없습니다.
포트 연결이 확인되면 명령줄 프록시를 지원하는 기기에서 다음 명령을 실행할 수 있습니다:
curl -x http://192.168.1.20:7890 https://example.com/
curl --socks5-hostname 192.168.1.20:7890 https://example.com/
첫 번째 명령은 mixed-port의 HTTP 프록시 입구를 확인하고, 두 번째 명령은 SOCKS5 입구를 확인합니다. --socks5-hostname을 사용하면 도메인 조회 요청이 SOCKS5 프록시 측에서 처리되므로 로컬 DNS 문제와 프록시 경로 문제를 구분하는 데 적합합니다.
3단계: Clash 로그와 규칙 적용 결과 확인
포트에는 연결되지만 대상 웹사이트가 열리지 않는다면 클라이언트의 연결 목록이나 로그를 확인하세요. 새 연결이 전혀 나타나지 않으면 일반적으로 대상 기기에 프록시 설정이 저장되지 않았거나 앱이 시스템 프록시를 우회하는 경우입니다. 로그에 연결은 표시되지만 최종적으로 DIRECT로 처리된다면 현재 모드와 규칙 매칭을 확인하세요. 프록시 그룹에 연결된 뒤 시간이 초과된다면 프록시 그룹 선택과 노드 상태를 점검합니다.
- 연결 거부: Clash가 해당 주소에서 수신 중이지 않거나 포트 입력이 잘못되었습니다.
- 연결 시간 초과: 방화벽, 클라이언트 격리 또는 네트워크 대역 라우팅이 접속을 차단하고 있습니다.
- 로그는 있지만 웹페이지 실패: 규칙, DNS, 프록시 그룹 및 상위 노드를 확인하세요.
- 브라우저는 정상인데 앱 실패: 앱이 시스템 프록시를 읽지 않거나 주로 UDP를 사용할 수 있습니다.
- 시간이 지나면 작동 중단: 호스트의 DHCP 주소가 바뀌었거나 컴퓨터가 절전 모드에 들어갔거나, 클라이언트가 설정을 업데이트하면서 로컬 네트워크 접근을 비활성화했을 수 있습니다.
장기간 사용할 때의 주소와 접근 제어
수동 프록시는 호스트 컴퓨터의 IP에 의존합니다. 라우터가 매번 다른 주소를 할당하면 스마트폰과 TV의 프록시 설정이 작동하지 않습니다. 라우터의 DHCP 설정에서 호스트 컴퓨터의 주소를 예약해 항상 192.168.1.20을 할당하도록 구성하는 것이 좋습니다. 컴퓨터에 정적 IP를 직접 지정하는 것보다 게이트웨이, DNS, 네트워크 대역 설정을 일관되게 유지하기 쉽습니다.
공유 포트는 신뢰할 수 있는 로컬 네트워크에서만 개방해야 합니다. mihomo는 인바운드 프록시에 인증을 설정할 수 있으므로 사용자 수가 많거나 모든 기기를 완전히 신뢰하기 어려운 네트워크에 적합합니다:
mixed-port: 7890
allow-lan: true
bind-address: '*'
authentication:
- "livingroom:change-this-password"
인증을 활성화하면 TV나 게임기에서 프록시 사용자 이름과 비밀번호를 입력해야 합니다. 인증을 지원하지 않는 기기는 이 연결을 사용할 수 없습니다. 가정용 환경에서는 방화벽으로 원격 주소를 특정 기기로 제한할 수도 있습니다. 예를 들어 192.168.1.36과 192.168.1.48만 허용하면 같은 네트워크의 다른 기기가 접속할 수 있는 범위를 줄일 수 있습니다.
로컬 네트워크 공유는 스마트폰, TV 또는 소수의 기기에 HTTP 및 SOCKS5 프록시를 임시로 제공할 때 적합합니다. 집 안의 모든 기기를 자동으로 연결하거나 프록시를 지원하지 않는 앱까지 처리하거나 게임 UDP 트래픽을 전달해야 한다면 라우터 또는 독립 게이트웨이에 프록시 기능을 배치해야 합니다. mixed-port는 명확한 앱용 프록시 입구이지 투명 게이트웨이가 아니며, 라우팅 포워딩과 NAT 설정을 대신하지 않습니다.