PC 한 대로 집 안 모든 기기가 인터넷에 접속할 수 있는 이유
많은 사람이 Clash에 대해 "브라우저의 네트워크 경로를 바꿔주는 도구" 정도로만 알고 있지만, 실제로 Clash의 프록시 코어는 시스템 방화벽과 아무런 종속 관계가 없습니다. 본질적으로 로컬 PC의 특정 포트에서 대기하는 네트워크 서비스일 뿐이며, 이 포트에 접속할 수 있는 기기라면 같은 PC가 아니어도 트래픽을 이 서비스에 넘겨 처리를 맡길 수 있습니다. 즉 같은 네트워크 안의 다른 기기가 이 PC의 내부 IP와 Clash가 대기 중인 포트를 알고 있고, 자신의 네트워크 요청을 이 주소로 보내기만 하면, 이미 설정되어 있는 구독 노드와 분기 규칙을 그대로 빌려서 인터넷에 접속할 수 있습니다. TV박스나 게임기처럼 클라이언트를 설치하기 어려운 기기에서 매번 똑같은 설정을 반복할 필요가 없어지는 것입니다.
이런 방식은 가정 네트워크에서 흔히 사용됩니다. 항상 켜져 있는 PC나 NAS에서 Clash를 실행하고, 스마트폰·태블릿·스마트 TV·게임기가 모두 같은 네트워크를 통해 연결하면, 기기마다 클라이언트를 설치하고 구독을 유지 관리하는 번거로움을 줄일 수 있습니다. 이를 구현하려면 설정 파일 안의 두 필드만 알면 됩니다. 대기 포트를 결정하는 mixed-port, 그리고 같은 네트워크의 외부 연결을 허용할지 결정하는 allow-lan입니다. 이 두 필드를 잘 조합하면 PC 한 대가 집 전체의 출구 게이트웨이가 될 수 있습니다. 반대로 잘못 설정하면 다른 기기가 연결하지 못하는 정도로 끝날 수도 있지만, 심한 경우 인증 없는 프록시 포트를 전체 로컬 네트워크나 그보다 더 넓은 범위에 노출시킬 수도 있습니다.
mixed-port 필드는 정확히 무엇을 제어하는가
Clash 초기 버전에서는 HTTP 프록시와 SOCKS5 프록시가 각각 다른 포트에서 대기했고, 설정 파일에는 port(HTTP)와 socks-port(SOCKS5) 두 개의 독립된 필드가 있었습니다. 이런 분리 방식은 클라이언트가 브라우저 트래픽만 전달하면 될 때는 충분했지만, 접속하려는 기기 종류가 늘어나면서 문제가 생겼습니다. 일부 클라이언트는 HTTP 프록시만 지원하고, 일부는 SOCKS5만 인식하기 때문에 두 개의 포트를 각각 유지 관리하는 것이 번거로워진 것입니다. mixed-port는 이후 도입된 통합 방식으로, 같은 포트에서 HTTP와 SOCKS5 두 프로토콜의 연결을 동시에 받아들이며 Clash 코어가 클라이언트가 보낸 것이 어떤 프로토콜인지 자동으로 식별해 처리합니다.
현재 주요 클라이언트의 기본 설정에서는 믹스 포트가 일반적으로 7890으로 지정되어 있으며, 대부분의 튜토리얼에서 이 숫자가 등장하는 이유도 여기에 있습니다. 필드 작성 방식은 간단합니다.
mixed-port: 7890
이 포트 번호를 다른 기기에 알려주면, 각 기기는 Wi-Fi 또는 네트워크 설정에서 "이 PC의 내부 IP + 7890"을 프록시 주소로 입력하기만 하면 트래픽을 전달할 수 있습니다. 다만 mixed-port는 "어떤 포트로 클라이언트 연결을 받을지"만 결정할 뿐, 같은 네트워크의 다른 기기가 이 포트에 접근할 수 있는지 여부는 관여하지 않습니다. 이 권한은 완전히 다른 필드가 결정하는데, 바로 다음에 설명할 allow-lan입니다.
allow-lan: 포트를 외부에 개방할지 결정
기본적으로 Clash는 보안을 위해 allow-lan 필드 값을 false로 설정합니다. 이 상태에서는 mixed-port가 7890 포트에서 대기하고 있어도, 이 포트는 로컬 호스트(127.0.0.1)에서 오는 연결 요청만 받아들이고, 같은 네트워크의 다른 기기가 연결을 시도하면 바로 거부되어 연결 시간 초과 또는 연결 거부로 나타납니다. 이는 일종의 보호 장치입니다. 이 제한이 없다면 Clash를 실행하면서 공용 Wi-Fi에 연결된 PC는 같은 Wi-Fi에 있는 낯선 기기에도 자신의 프록시 포트를 노출시킬 위험이 있습니다.
같은 네트워크의 다른 기기가 접속하려면 이 제한을 명시적으로 해제해야 합니다.
allow-lan: true
bind-address: "*"
bind-address는 대기 주소를 어떤 네트워크 인터페이스에 바인딩할지 결정합니다. *로 지정하면 이 PC의 모든 네트워크 인터페이스(유선·무선 포함)에서 대기하므로, 다른 기기가 라우터의 어느 대역으로 접속하든 이 PC의 Clash 서비스에 연결할 수 있습니다. 이 PC가 유선 랜과 Wi-Fi에 동시에 연결되어 있고 두 네트워크가 서로 다른 서브넷에 속해 있다면, *로 바인딩하는 것이 특정 네트워크 인터페이스에서 오는 연결 요청을 놓치지 않는 방법입니다.
allow-lan: true를 켠 뒤에는 이론적으로 이 PC가 속한 대역에 접근할 수 있는 모든 기기가 이 포트에 연결을 시도할 수 있으며, 신뢰할 수 있는 가정용 기기에만 한정되지 않습니다. 이 PC가 회사 네트워크, 카페 Wi-Fi 또는 분리되지 않은 공용 네트워크에 연결되어 있다면, 이 필드를 켜기 전에 반드시 인증 설정(아래 참고)을 먼저 확인해야 합니다. 그렇지 않으면 출구 권한을 해당 대역 전체에 넘겨주는 것과 같습니다.
처음부터 가정용 다중 기기 공유 출구 구축하기
가정 네트워크 상황을 예로 들면, 전체 과정은 대략 4단계로 나뉩니다.
-
호스트 기기의 내부 IP 확인
Windows에서는 명령 프롬프트에서
ipconfig를 실행하고, macOS나 Linux에서는ifconfig또는ip addr을 실행해192.168.x.x또는10.x.x.x형태의 주소를 찾습니다. 이 주소는 가능한 한 고정되어야 합니다. 라우터 관리 페이지에서 이 PC의 MAC 주소에 고정 IP를 바인딩(보통 "정적 DHCP" 또는 "IP-MAC 바인딩"이라 부름)하는 것을 권장합니다. 그렇지 않으면 라우터가 재시작될 때마다 이 PC의 IP가 바뀌어 다른 기기의 프록시 설정도 함께 수정해야 합니다. -
mixed-port와 allow-lan 설정
Clash 클라이언트 설정 파일에 앞서 언급한 세 줄을 추가합니다:
mixed-port: 7890,allow-lan: true,bind-address: "*". 대부분의 GUI 클라이언트에도 이에 대응하는 스위치가 있어 파일을 직접 수정할 필요 없이 설정 패널에서 "LAN 연결" 또는 "Allow LAN" 옵션을 켜기만 하면 동일한 효과를 낼 수 있습니다. -
로컬 방화벽 허용 설정
Windows 시스템 방화벽과 macOS 앱 방화벽은 기본적으로 외부 기기가 알려지지 않은 포트에 접근하는 요청을 차단합니다. Clash가 이미 7890 포트에서 대기 중이더라도 방화벽 레벨에서 허용하지 않으면 같은 네트워크의 기기는 여전히 연결할 수 없습니다. Windows에서는 "방화벽을 통해 앱 허용" 항목에서 Clash 프로그램에 개인 네트워크 접근 권한을 부여해야 하고, macOS에서는 처음 대기를 시작할 때 시스템 권한 알림이 뜨는 경우가 많으므로 허용을 선택하면 됩니다.
-
다른 기기에서 프록시 주소 입력
스마트폰과 태블릿은 Wi-Fi 상세 정보의 프록시 설정에서 "수동"을 선택하고, 이 PC의 내부 IP와 7890 포트를 입력합니다. 스마트 TV와 게임기의 네트워크 설정에도 보통 비슷한 "HTTP 프록시" 옵션이 있으며 입력 방식은 동일합니다. 설정이 끝나면 웹 페이지를 열어 테스트해 정상적으로 로드되면 경로가 정상적으로 연결된 것입니다.
믹스 포트 인증: 대역 전체에 뒷문을 열어주지 않기
allow-lan을 켠 뒤 아무런 제한을 두지 않으면, 같은 대역에 있는 모든 기기(알지 못하는 이웃의 무단 접속 기기, 회사의 다른 동료 PC 포함)가 이론적으로 이 PC의 Clash에 트래픽을 전달해 여러분의 노드 트래픽을 무단으로 사용할 수 있으며, 극단적인 경우에는 여러분이 통제할 수 없는 네트워크 행위에 이용될 수도 있습니다. 믹스 포트에 사용자명·비밀번호 인증을 추가하는 것은 저비용으로 보안을 강화하는 방법입니다.
authentication:
- "homeuser:a-strong-password"
이 설정이 적용되면 기기 쪽에서 프록시를 입력할 때 이 사용자명과 비밀번호를 추가로 입력해야 인증을 통과할 수 있습니다. 대부분의 시스템 프록시 설정 화면은 프록시 주소를 입력한 뒤 계정·비밀번호 입력창을 띄워 이 기능을 지원합니다. 인증 팝업을 지원하지 않는 클라이언트(일부 TV박스의 네트워크 설정 메뉴)는 인증이 적용된 프록시를 사용할 수 없을 수 있으며, 이런 기기는 대역 분리에 의존하거나 인증 제한을 완화하는 방법밖에 없으므로 편의성과 보안성 사이에서 균형을 잡아야 합니다.
더 철저하게 격리하는 방법은 Clash를 실행하는 PC를 독립된 VLAN 또는 라우터의 "게스트 네트워크"가 아닌 신뢰 가능한 대역에 두고, 가정 내부에서 신뢰하는 기기만 이 대역에 접근할 수 있도록 하는 것입니다. 이렇게 하면 인증을 설정하지 않아도 외부의 낯선 기기에 노출되지 않습니다. 라우터 네트워크 토폴로지를 스스로 설정할 수 있는 사용자라면 이 방식이 계정·비밀번호만 의존하는 것보다 더 안전합니다.
LAN 공유 시 자주 발생하는 연결 실패 점검
실제 운영에서 가장 자주 마주치는 문제는 대부분 설정 파일 오류가 아니라 네트워크 환경의 세부 사항을 놓친 경우입니다. 다음은 점검 우선순위에 따라 정리한 몇 가지 상황입니다.
- 두 기기가 같은 대역에 있지 않은 경우: 라우터가 AP 격리(게스트 Wi-Fi에서 흔함)를 켜두었거나, 스마트폰이 5G 셀룰러 네트워크에 연결되어 있고 같은 Wi-Fi가 아닌 경우, 내부 IP끼리 서로 접근할 수 없습니다. 이런 상황에서는 설정을 어떻게 고쳐도 연결되지 않으므로, 먼저 두 기기가 같은 로컬 네트워크에 있는지 확인해야 합니다.
- 방화벽이 인바운드 연결을 차단하는 경우: 클라이언트 소프트웨어 레벨에서 allow-lan을 켰더라도 시스템 방화벽의 기본 규칙이 우선적으로 차단할 수 있습니다. Clash 프로세스 또는 7890 포트에 대해 별도로 인바운드 허용 규칙을 추가해야 합니다.
- bind-address가 잘못된 네트워크 인터페이스에 바인딩된 경우: 설정에 특정 IP가 지정되어 있고
*가 아니며, 이 IP에 대응하는 네트워크 인터페이스가 현재 네트워크에 연결되어 있지 않은 경우(예: PC에 가상 머신 네트워크 카드가 함께 설치된 경우), 대기 작업이 "죽은" 인터페이스에 걸려 있게 되어 외부 기기가 당연히 연결할 수 없습니다. - 클라이언트 화면의 스위치와 설정 파일이 충돌하는 경우: 일부 클라이언트는 GUI에서 독립적으로 "LAN 연결" 스위치를 관리하며, 구독 설정 파일 안의 필드와는 별개의 로직입니다. 설정 파일은 올바르게 작성되었지만 화면의 스위치가 함께 켜지지 않으면 마찬가지로 연결이 실패하므로, 클라이언트 화면의 실제 스위치 상태를 기준으로 다시 확인하는 것을 권장합니다.
- 포트가 다른 프로그램에 점유된 경우: 이 PC에 다른 프록시 소프트웨어나 데이터베이스 서비스가 이미 7890 포트를 점유하고 있으면, Clash가 실행될 때 대기에 실패하거나 다른 포트를 사용하게 됩니다. 클라이언트 로그를 확인해 실제 대기 포트가 기기 쪽에서 입력한 것과 일치하는지 확인해야 합니다.
믹스 포트 공유와 다른 분기 방식의 관계
참고로, mixed-port를 통해 공유되는 연결은 시스템 프록시 경로를 지나가며, 규칙 그룹·DNS 처리 등의 로직은 모두 호스트 기기(Clash를 실행 중인 그 PC)의 코어 안에서 완료됩니다. 접속하는 스마트폰이나 TV박스 자체는 Clash 개념을 전혀 이해할 필요가 없으며, 트래픽을 그대로 프록시 포트에 넘기고 처리 결과를 그대로 받기만 합니다. 이는 기기 자체에 Clash 클라이언트를 설치하고 TUN 모드를 켜는 것과는 다른 방식입니다. TUN 모드는 로컬 기기의 모든 네트워크 계층 트래픽(UDP와 프록시 프로토콜을 지원하지 않는 프로그램 포함)을 인수받는 반면, LAN 공유는 본질적으로 여전히 애플리케이션 계층의 HTTP/SOCKS5 프록시 전달이므로, 시스템 하위 네트워크 스택을 강제로 사용하고 프록시 설정을 인식하지 않는 일부 앱이나 게임은 기기가 공유 프록시에 연결되어 있어도 여전히 이를 우회해 직접 연결할 수 있습니다.
따라서 LAN 공유 방식은 브라우저, 동영상 클라이언트처럼 시스템 프록시 설정을 준수하는 상황에 더 적합합니다. 만약 특정 TV박스나 게임기의 특정 앱이 연결되지 않고 프록시를 우회한다면, 대부분 그 앱이 시스템 프록시 설정을 읽지 않기 때문이며, Clash 설정 오류가 아닙니다. 이런 상황을 완전히 해결하려면 보통 해당 기기 자체가 전역 투명 프록시를 지원하거나 라우터 레벨의 바이패스 라우터 방식이 필요하며, 이것이 많은 가정에서 결국 라우터에 코어를 직접 배치하는 방식을 선택하는 이유입니다.
mixed-port는 Clash가 어떤 포트로 HTTP와 SOCKS5 연결을 동시에 받을지 결정하고, allow-lan은 이 포트를 같은 네트워크의 다른 기기에 개방할지 결정합니다. 두 필드를 bind-address와 인증 필드와 함께 사용하면 PC 한 대를 집 전체 기기의 출구 게이트웨이로 만들 수 있습니다. LAN 접속을 열기 전에 현재 네트워크 환경이 신뢰할 수 있는지 먼저 확인하고, 포트에 계정·비밀번호 인증을 추가하는 것이 가장 기본적인 보호 조치입니다.