Clash 사용에 관한 간단한 기록

✍🏼 작성일 2022년 10월 08일    💡 수정일 2023년 01월 05일
❗️ 참고: 이 글이 작성된 지 이미 일이 지났습니다. 시의성에 유의하세요
🖥  설명:Clash For Windows For Mac 간단 사용 시나리오.
📚  Craft에도 게시: https://www.craft.do/s/LUmvgdChQqG364

⚠️ 본문에 언급된 노드 및 공항 구독 서비스는 모두 허구이며 실제로 존재하지 않습니다. 여기서는 데모 예시일 뿐이니 참고 바랍니다.

서문

Clash는 유용한 프록시 도구로, 본질은 Clash core라는 커맨드라인 도구입니다(어떤 소프트웨어든 본질은 커맨드라인이 아니겠습니까?). 개발자들은 이를 기반으로 다양한 GUI 인터페이스를 개발하여 설정과 사용을 편리하게 했습니다. 저는 Mac에서 ClashX와 Clash For Windows For Mac(놀랍게도 정확한 이름입니다), 일명 CFW를 사용해 본 적이 있습니다. 개발 편의성을 위해 Electron 아키텍처로 구현된 GUI라서 Mac과 Windows 버전으로 패키징할 수 있어 매우 편리했습니다.

현재는 Clash For Windows를 사용 중입니다.

Clash for Windows For Mac 界面

물론, 국제적인 관례에 따라 이 글에서는 일반적인 설정의 용도 설명 외에도 구독 링크 업데이트와 노드 전환 방법을 간단히 소개합니다. “왜 behance가 또 안 열리냐!”, “프록시 설정이 왜 이렇게 복잡하냐!”, “이렇게 비싼 VPN을 샀는데 왜 이렇게 안 좋냐!” 같은 질문을 받을 때 이 글을 던져주고 게임을 계속할 수 있도록요.

⚠️ 용어 설명: 프록시 = VPN

주요 설정의 용도

이 설명들은 대부분 공식 문서에 있지만, 제 실제 사용 사례와 함께 소개합니다.

GeoIP Database

IP의 지리적 위치를 기반으로 프록시 사용 여부를 판단하는 기능입니다. 로컬에 데이터베이스를 유지하며 IP 주소를 조회하는 방식입니다. IP 주소는 지속적으로 업데이트되므로 이 데이터베이스도 가끔 업데이트해야 합니다(자주는 아님).

GeoIP 数据库下载

TUN Mode

터미널, iTerm, Infuse 등 시스템 프록시를 따르지 않는 소프트웨어를 위해 설계된 모드입니다. 이 모드는 시스템 프록시를 무시하는 트래픽을 가로채 CFW가 처리할 수 있게 합니다.

제 경우 Infuse의 Emby 시청에 사용합니다. 제 Emby 서비스는 특정 공항 노드가 필요한데, Infuse는 (아마도) 자체 요청 도구를 사용해 시스템 프록시를 무시합니다. 따라서 CFW를 시스템 프록시로 설정하고 올바른 노드를 지정해도 공항의 Emby 서비스에 접속할 수 없었습니다. TUN 모드를 활성화하면 이 문제가 해결됩니다.

또 다른 사용 사례는 iTerm 터미널 명령어도 프록시 트래픽을 타게 되는 점입니다. TUN 모드를 끄면 git clone 등이 프록시를 거치지 않아, 이전에는 수동으로 alias 명령어를 생성해 터미널 프록시를 지정했습니다. 필요할 때 ppp 엔터, 불필요할 때 sss 엔터를 눌렀습니다(제 프록시 포트는 7890):

1
2
alias ppp="export https_proxy=http://127.0.0.1:7890;export http_proxy=http://127.0.0.1:7890;export all_proxy=socks5://127.0.0.1:7890"
alias sss="unset all_proxy;unset https_proxy;unset http_proxy"

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 모드에서 작동하지 않는다면 이 기능 때문일 수 있습니다.

Chrome 关闭安全 DNS

Parser

즉 "프로필 전처리 설정"입니다.

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

机场的内置分流规则

사용자가 특정 링크에 대한 프록시 규칙을 직접 설정하려면, 구독 링크에서 다운로드한 설정 파일을 수정하면 다음 업데이트 시 변경 사항이 덮어씌워집니다. 이 문제를 해결하기 위해 Parser가 등장했습니다.

간단히 말해, Parser는 공항 구독 규칙 적용 전에 사용자 규칙을 먼저 적용하고 최종 규칙에 병합합니다. 예를 들어, 제가 자주 방문하는 웹사이트는 두 가지 도메인을 가지고 있습니다. 중국 대륙 사용자에게는 대륙 콘텐츠를 반환하고, 해외 IP로 접속하면 해외 주소로 리디렉션됩니다.

TUN 모드를 활성화하면 이 사이트는 해외 사용자로 인식되어 대륙 계정으로 접속할 수 없게 됩니다(계정이 분리됨). Parser 기능을 사용해 이 사이트의 대륙 버전 주소를 직연 규칙에 추가하면 됩니다:

只支持针对特定节点列表配置文件进行预处理

하지만, 비교적 난감한 점은 이 기능이 특정 yaml(즉 아래에서 말하는 구독 노드 목록)에만 적용된다는 것입니다. 따라서 여러 개의 구독 노드 목록(에어포트)을 가지고 있다면, 여러 개의 url을 작성해야 합니다.

업데이트: 좋은 소식은 CFW가 이제 하나의 규칙으로 여러 구독 노드 목록을 매칭할 수 있게 되었습니다. reg 필드에 정규 표현식을 사용하면 됩니다. 아래는 모든 프로필 파일을 매칭하는 예시입니다:

reg 匹配多个 yaml 配置文件

点击查看配置文件的Parser

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

该 Parser 能匹配上配置文件

주의: 구독 변환 서비스는 Parser를 무효화할 수 있습니다.

주의: Parser 설정을 완료한 후에는 현재 프록시의 업데이트 버튼을 클릭해야 적용됩니다.

Diff

이 기능은 위의 Parser와 유사하게 작동하지만, Parser 이후에 적용됩니다. 원리는 수동으로 하나의 파일(git의 base 버전과 유사)을 생성하는 것입니다. 이 파일은 현재 구독 설정 파일을 기반으로 수정한 파일일 수 있습니다. 그런 다음 구독 설정 파일이 업데이트될 때마다 새로운 파일과 이전 파일을 diff하여 비교합니다. 문제가 발견되면 수동으로 충돌을 해결해야 합니다.

이 기능의 목적도 매번 업데이트할 때 현재 설정 파일의 수정 사항이 덮어쓰이지 않도록 보장하기 위함입니다.

Mixin

⚠️ **주의: 이 기능은 '***기능 속성’*을 주입하는 데만 적합하며, mixin의 규칙은 에어포트 구독 목록의 다른 규칙을 덮어씁니다! 따라서 mixin에서는 dns 등의 정보를 주입하는 설정만 해야 하며, rules 등의 정보는 설정하지 말아야 합니다. 그렇지 않으면 에어포트 구독의 노드가 무효화될 수 있습니다.

Mixin 设置

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

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가 어떻게 작동해야 하는지 지시하는 역할을 합니다.

- EOF -
이 글의 최초 게시: Clash 사용에 관한 간단한 기록 - Xheldon Blog