일이 지났습니다. 시의성에 유의하세요
⚠️ 본문에 언급된 노드 및 공항 구독 서비스는 모두 허구이며 실제로 존재하지 않습니다. 여기서는 데모 예시일 뿐이니 참고 바랍니다.
서문
Clash는 유용한 프록시 도구로, 본질은 Clash core라는 커맨드라인 도구입니다(어떤 소프트웨어든 본질은 커맨드라인이 아니겠습니까?). 개발자들은 이를 기반으로 다양한 GUI 인터페이스를 개발하여 설정과 사용을 편리하게 했습니다. 저는 Mac에서 ClashX와 Clash For Windows For Mac(놀랍게도 정확한 이름입니다), 일명 CFW를 사용해 본 적이 있습니다. 개발 편의성을 위해 Electron 아키텍처로 구현된 GUI라서 Mac과 Windows 버전으로 패키징할 수 있어 매우 편리했습니다.
현재는 Clash For Windows를 사용 중입니다.

물론, 국제적인 관례에 따라 이 글에서는 일반적인 설정의 용도 설명 외에도 구독 링크 업데이트와 노드 전환 방법을 간단히 소개합니다. “왜 behance가 또 안 열리냐!”, “프록시 설정이 왜 이렇게 복잡하냐!”, “이렇게 비싼 VPN을 샀는데 왜 이렇게 안 좋냐!” 같은 질문을 받을 때 이 글을 던져주고 게임을 계속할 수 있도록요.
⚠️ 용어 설명: 프록시 = VPN
주요 설정의 용도
이 설명들은 대부분 공식 문서에 있지만, 제 실제 사용 사례와 함께 소개합니다.
GeoIP Database
IP의 지리적 위치를 기반으로 프록시 사용 여부를 판단하는 기능입니다. 로컬에 데이터베이스를 유지하며 IP 주소를 조회하는 방식입니다. IP 주소는 지속적으로 업데이트되므로 이 데이터베이스도 가끔 업데이트해야 합니다(자주는 아님).

TUN Mode
터미널, iTerm, Infuse 등 시스템 프록시를 따르지 않는 소프트웨어를 위해 설계된 모드입니다. 이 모드는 시스템 프록시를 무시하는 트래픽을 가로채 CFW가 처리할 수 있게 합니다.
제 경우 Infuse의 Emby 시청에 사용합니다. 제 Emby 서비스는 특정 공항 노드가 필요한데, Infuse는 (아마도) 자체 요청 도구를 사용해 시스템 프록시를 무시합니다. 따라서 CFW를 시스템 프록시로 설정하고 올바른 노드를 지정해도 공항의 Emby 서비스에 접속할 수 없었습니다. TUN 모드를 활성화하면 이 문제가 해결됩니다.
또 다른 사용 사례는 iTerm 터미널 명령어도 프록시 트래픽을 타게 되는 점입니다. TUN 모드를 끄면 git clone 등이 프록시를 거치지 않아, 이전에는 수동으로 alias 명령어를 생성해 터미널 프록시를 지정했습니다. 필요할 때 ppp 엔터, 불필요할 때 sss 엔터를 눌렀습니다(제 프록시 포트는 7890):
1 | |
TUN 모드 사용에는 Service Mode가 필요하며, 자세한 내용은 문서를 참조하세요:
TUN 模式 | Clash for Windows "by Fndroid" https://docs.cfw.lbyczf.com/contents/tun.html#macos
하지만 제 경험상 CFW가 Service Mode가 활성화되었다고 알려도 지구본 아이콘이 빨간색인 경우가 있었습니다. Service Mode를 껐다가 다시 활성화하면 install과 uninstall 버튼만 보였고, install을 클릭해도 여전히 빨간색 아이콘이었습니다. uninstall 후 다시 install하면 CFW가 재시작되며 녹색 아이콘으로 변경되었습니다. GUI에 버그가 있을 수 있으니 문제 발생 시 다양한 방법을 시도해 보는 것이 좋습니다.
💡 TUN 모드를 정상 사용하려면 소프트웨어의 보안 DNS 기능을 꺼야 합니다. TUN 모드에서 작동하지 않는다면 이 기능 때문일 수 있습니다.

Parser
즉 "프로필 전처리 설정"입니다.
CFW의 분류 규칙이 적용되기 전에 사용자 정의 규칙을 설정할 수 있습니다. 대부분의 사용자는 공항 구독 링크를 사용하는데, 이러한 링크에는 자체 분류 규칙(예: 글로벌 직연, 글로벌 차단, 우회 규칙 등)이 포함되어 있습니다:

사용자가 특정 링크에 대한 프록시 규칙을 직접 설정하려면, 구독 링크에서 다운로드한 설정 파일을 수정하면 다음 업데이트 시 변경 사항이 덮어씌워집니다. 이 문제를 해결하기 위해 Parser가 등장했습니다.
간단히 말해, Parser는 공항 구독 규칙 적용 전에 사용자 규칙을 먼저 적용하고 최종 규칙에 병합합니다. 예를 들어, 제가 자주 방문하는 웹사이트는 두 가지 도메인을 가지고 있습니다. 중국 대륙 사용자에게는 대륙 콘텐츠를 반환하고, 해외 IP로 접속하면 해외 주소로 리디렉션됩니다.
TUN 모드를 활성화하면 이 사이트는 해외 사용자로 인식되어 대륙 계정으로 접속할 수 없게 됩니다(계정이 분리됨). Parser 기능을 사용해 이 사이트의 대륙 버전 주소를 직연 규칙에 추가하면 됩니다:

하지만, 비교적 난감한 점은 이 기능이 특정 yaml(즉 아래에서 말하는 구독 노드 목록)에만 적용된다는 것입니다. 따라서 여러 개의 구독 노드 목록(에어포트)을 가지고 있다면, 여러 개의 url을 작성해야 합니다.
업데이트: 좋은 소식은 CFW가 이제 하나의 규칙으로 여러 구독 노드 목록을 매칭할 수 있게 되었습니다. reg 필드에 정규 표현식을 사용하면 됩니다. 아래는 모든 프로필 파일을 매칭하는 예시입니다:


구독 노드 목록을 클릭하여 해당 설정에 대응하는 Parser를 확인하세요.

주의: 구독 변환 서비스는 Parser를 무효화할 수 있습니다.
주의: Parser 설정을 완료한 후에는 현재 프록시의 업데이트 버튼을 클릭해야 적용됩니다.
Diff
이 기능은 위의 Parser와 유사하게 작동하지만, Parser 이후에 적용됩니다. 원리는 수동으로 하나의 파일(git의 base 버전과 유사)을 생성하는 것입니다. 이 파일은 현재 구독 설정 파일을 기반으로 수정한 파일일 수 있습니다. 그런 다음 구독 설정 파일이 업데이트될 때마다 새로운 파일과 이전 파일을 diff하여 비교합니다. 문제가 발견되면 수동으로 충돌을 해결해야 합니다.
이 기능의 목적도 매번 업데이트할 때 현재 설정 파일의 수정 사항이 덮어쓰이지 않도록 보장하기 위함입니다.
Mixin
⚠️ **주의: 이 기능은 '***기능 속성’*을 주입하는 데만 적합하며, mixin의 규칙은 에어포트 구독 목록의 다른 규칙을 덮어씁니다! 따라서 mixin에서는 dns 등의 정보를 주입하는 설정만 해야 하며, rules 등의 정보는 설정하지 말아야 합니다. 그렇지 않으면 에어포트 구독의 노드가 무효화될 수 있습니다.

Setting 메뉴에도 설정入口가 있습니다. 여기서는 JavaScript 형식의 Mixin 설정을 선택할 수 있으며, 자세한 내용은 문서를 참조하세요:

System Proxy
이름 그대로 Clash를 시스템 프록시로 설정하는 기능입니다. 이 기능을 끄면 Safari와 같이 시스템 프록시에 의존하는 소프트웨어는 더 이상 프록시를 사용할 수 없습니다. 따라서 Safari가 프록시를 사용하도록 하려면 반드시 System Proxy를 켜야 합니다.
프록시가 정상적으로 작동하지 않을 때의 문제 해결 방법
프록시가 필요한 웹사이트에 접속할 수 없을 때는 아래 몇 가지를 간단히 확인해 볼 수 있습니다:
1단계: Proxies 확인
메뉴 바의 작은 고양이 아이콘을 클릭하세요.

열린 화면에서 Proxies 탭을 클릭한 후 노드를 선택하세요:

💡 자동 선택: CFW가 사용 가능한 노드를 자동으로 선택합니다.
이때 노드 선택 뒤의 텍스트가 '자동 선택’인지 확인하세요(기본값이며 이 설정을 변경해서는 안 됩니다). 자동 선택인지 확인한 후 속도 테스트를 클릭하여 현재 자동 선택된 노드의 속도를 확인하세요:

여기서 노드가 사용 불가능한 경우 Timeout 시간 초과로 표시됩니다. 지연 시간이 1000+와 같이 너무 높으면 빨간색 숫자로 표시되며, 프록시 속도가 느리다는 것을 의미합니다.
2단계: Profiles 확인
일반적으로 Profiles에는 여러 항목이 있을 것입니다. 예를 들면 다음과 같습니다:

1단계에서 노드 속도 테스트 결과가 모두 Timeout로 표시된다면, 노드 목록을 변경해 볼 수 있습니다. 위 그림에서 새로운 block을 클릭하면 왼쪽이 녹색으로 변하며, 현재 block의 노드 목록으로 전환되었음을 나타냅니다. 그런 다음 다시 1단계를 실행하여 노드 속도가 정상인지 확인하세요.
또한 위 그림의 노드 목록이 오랫동안 업데이트되지 않은 경우(괄호 안에 업데이트 시간이 표시됨), 위의 Update All을 클릭하여 업데이트를 시도하세요. 업데이트가 실패할 경우 다른 block을 클릭한 후 다시 Update All을 클릭하여 업데이트를 시도하세요:

주의: 여러 노드 목록 사이를 너무 빠르게 전환하지 마세요. 오류가 발생할 수 있습니다. 하나를 전환한 후 3~4초 정도 기다린 후 다른 것으로 전환하세요(필요한 경우).
3단계: 모든 연결 끊기
위 두 단계를 실행한 후에도 문제가 없는데 페이지를 열 수 없다면, 브라우저가 이전 연결을 유지하고 있어 프록시를 통해 새로운 연결을 맺지 못할 수 있습니다. 이 경우 CFW의 Connections 탭에서 '모든 연결 끊기’를 클릭한 후 열리지 않는 페이지를 새로고침하세요:

새로운 에어포트 구독 추가
새로운 에어포트 구독은 위에서 언급한 '노드 목록’입니다.
Profiles 탭에서 받은 링크를 유일한 입력란에 붙여넣은 후 Download을 클릭하세요. 다운로드가 성공하면 알림이 표시됩니다:

기타
프록시 모드
Clash에는 다양한 프록시 모드가 있습니다. 예를 들어, 글로벌(Global) 모드는 모든 네트워크 연결이 프록시를 거치도록 합니다. 룰(Rule) 모드는 사용자가 설정한 규칙에 따라 일부 연결은 프록시를, 다른 연결은 직접 연결을 사용합니다. 다이렉트(Direct) 모드는 모든 네트워크 연결이 직접 연결되며, Clash 프록시를 사용하지 않은 것과 같은 효과를 냅니다. 스크립트(Script) 모드는 JavaScript 스크립트를 작성하여 사용자 정의 스크립트가 어떤 연결을 프록시로, 어떤 연결을 직접 연결로 처리할지 결정할 수 있습니다. 이러한 설정은 여기서 전환할 수 있습니다:

로컬 네트워크의 다른 기기 프록시 설정
Clash는 동일한 로컬 네트워크 세그먼트에 있는 다른 기기의 네트워크 연결을 프록시할 수 있어, 프록시 기능이 없는 기기도 프록시를 사용할 수 있게 합니다. 가장 대표적인 사용 사례는 Apple TV를 프록시하는 것입니다. Apple TV 시스템은 관련 프록시 인터페이스를 개방하지 않아, 휴대폰처럼 직접 프록시 소프트웨어를 설치할 수 없습니다. 따라서 라우터를 통해 프록시를 설정하거나, Apple TV의 프록시 서버를 Clash가 실행 중인 기기로 설정한 후 Clash에서 'Allow LAN’을 활성화하면 됩니다:

프록시 서비스 구독 링크란 무엇인가요?
프록시 서비스 구독 링크는 프록시 서비스 제공자가 사용자에게 제공하는 링크로, Clash가 이 링크를 해석하여 yaml 형식의 설정 파일을 다운로드하도록 합니다. 이 파일은 Clash가 어떻게 작동해야 하는지 지시하는 역할을 합니다.
저는 인생의 중요한 선택의 기로에 섰을 때, 누군가 최선의 방법을 알려주어 소중한 시간을 헛되이 보내지 않기를 바라곤 합니다. 그런 마음으로 저는 자주 블로그를 쓰며, 광활한 인터넷의 이 작은 구석에 제게는 단 한 번뿐인 인생 경험을 기록하여 도움이 필요한 분들에게 도움이 되기를 바랍니다.