규칙
Chute는 사용자 정의 규칙에 따라 요청을 다른 프록시 서버로 전달하거나 호스트에 직접 연결할 수 있습니다.
우선순위
규칙은 설정 파일에 나타나는 순서대로 첫 번째부터 마지막까지 매칭됩니다. 즉, 목록 상단의 규칙이 하단의 규칙보다 높은 우선순위를 가집니다.
구성
각 규칙은 규칙 유형, 트래픽 매처(FINAL 규칙 제외), 프록시 정책의 3부분으로 구성됩니다: TYPE, VALUE, POLICY. 예: DOMAIN-SUFFIX,apple.com,DIRECT IP-CIDR,192.168.0.0/16,ProxyA
프록시 정책은 프록시, 정책 그룹, 또는 DIRECT나 REJECT와 같은 내장 정책의 이름이어야 합니다. 규칙은 기본 동작을 정의하기 위해 FINAL 규칙으로 끝나는 것이 좋습니다. 설정에 FINAL 규칙이 없으면 Chute는 FINAL,DIRECT가 추가된 것처럼 동작합니다.
예:
[Rule]
DOMAIN-SUFFIX,company.com,ProxyA
DOMAIN-KEYWORD,google,DIRECT
GEOIP,US,DIRECT
IP-CIDR,192.168.0.0/16,DIRECT
FINAL,ProxyB
규칙 유형
도메인 기반 규칙
| 유형 | 구문 | 매칭 대상 |
|---|---|---|
| DOMAIN | DOMAIN,www.apple.com,Proxy |
정확한 도메인 일치 |
| DOMAIN-SUFFIX | DOMAIN-SUFFIX,apple.com,Proxy |
도메인 접미사 일치 |
| DOMAIN-KEYWORD | DOMAIN-KEYWORD,google,Proxy |
도메인에 키워드 포함 |
| DOMAIN-WILDCARD | DOMAIN-WILDCARD,*.apple.com,Proxy |
와일드카드 도메인 일치 |
| DOMAIN-REGEX | DOMAIN-REGEX,^mail\..+\.com$,Proxy |
도메인 정규식 일치 |
| DOMAIN-SET | DOMAIN-SET,https://example.com/domains.txt,DIRECT |
URL에서 다운로드하는 도메인 세트 |
IP 기반 규칙
| 유형 | 구문 | 매칭 대상 |
|---|---|---|
| IP-CIDR | IP-CIDR,192.168.0.0/16,DIRECT |
CIDR 범위의 IP 주소 |
| IP-CIDR6 | IP-CIDR6,2001:db8::/32,DIRECT |
CIDR 범위의 IPv6 주소 |
| GEOIP | GEOIP,US,DIRECT |
GeoIP 데이터베이스의 국가 코드 |
| IP-ASN | IP-ASN,13335,DIRECT |
지정된 ASN에 속하는 IP 주소 |
HTTP 수준 규칙
| 유형 | 구문 | 매칭 대상 |
|---|---|---|
| USER-AGENT | USER-AGENT,Instagram*,DIRECT |
User-Agent 헤더 |
| URL-REGEX | URL-REGEX,^http://google\.com.*,DIRECT |
URL이 정규식과 일치 |
| PROTOCOL | PROTOCOL,TLS,Proxy |
감지된 프로토콜 (HTTP/TLS/QUIC 등) |
프로세스 규칙 (Mac 전용)
| 유형 | 구문 | 매칭 대상 |
|---|---|---|
| PROCESS-NAME | PROCESS-NAME,Telegram,Proxy |
프로세스 이름 (와일드카드 매칭) |
| PROCESS-PATH | PROCESS-PATH,/Applications/Safari.app,Proxy |
전체 프로세스 경로 (와일드카드 매칭) |
| PROCESS-NAME-REGEX | PROCESS-NAME-REGEX,^Safari$,DIRECT |
프로세스 이름 (정규식 매칭) |
포트 및 소스 규칙
| 유형 | 구문 | 매칭 대상 |
|---|---|---|
| DEST-PORT | DEST-PORT,80,DIRECT |
대상 포트 |
| SRC-IP | SRC-IP,192.168.20.100,DIRECT |
소스 IP 주소 (단일 IP 또는 CIDR) |
| SRC-PORT | SRC-PORT,52345,DIRECT |
소스 포트 |
| IN-PORT | IN-PORT,6152,DIRECT |
Chute의 수신 프록시 포트 |
고급 매칭 규칙
| 유형 | 구문 | 매칭 대상 |
|---|---|---|
| SUBNET | SUBNET,TYPE:WIFI,Proxy |
네트워크 서브넷 속성 (TYPE, BSSID, SSID, ROUTER) |
| HOSTNAME-TYPE | HOSTNAME-TYPE,AAAA,Proxy |
DNS 레코드 유형 (A/AAAA 등) |
| IN-TYPE | IN-TYPE,SOCKS5,Proxy |
인바운드 연결 유형 (HTTP/SOCKS5/TUN) |
| IN-USER | IN-USER,user1,Proxy |
인바운드 인증 사용자 이름 |
| IN-NAME | IN-NAME,my-proxy,Proxy |
인바운드 프록시 서버 이름 |
알림: 고급 매칭 규칙은 설정 파서에서 허용되지만, 현재 Chute 릴리스는 이 규칙들이 매칭하는 세션 속성을 아직 채우지 않으므로 런타임에 어떤 트래픽과도 일치하지 않습니다. 향후 릴리스를 위해 예약되어 있습니다.
논리 조합 규칙
| 유형 | 구문 | 매칭 대상 |
|---|---|---|
| AND | AND,((DOMAIN,example.com),(DEST-PORT,443)),Proxy |
모든 하위 규칙이 일치 |
| OR | OR,((DOMAIN,example.com),(DOMAIN,test.com)),Proxy |
하나 이상의 하위 규칙이 일치 |
| NOT | NOT,((DOMAIN,example.com)),Proxy |
하위 규칙이 일치하지 않음 |
특별 규칙
| 유형 | 구문 | 매칭 대상 |
|---|---|---|
| RULE-SET | RULE-SET,SYSTEM,DIRECT |
URL, 규칙 제공자 또는 내장 세트의 규칙 묶음 |
| SCRIPT | SCRIPT,MyRuleScript,PROXY |
JavaScript 기반 사용자 정의 규칙 매칭 |
| FINAL | FINAL,ProxyB |
다른 규칙이 일치하지 않을 때의 기본값 (마지막에 위치해야 함) |
옵션
no-resolve
호스트명이 도메인인 요청의 경우, Chute는 규칙 목록을 두 번에 걸쳐 평가합니다. 첫 번째 패스에서는 IP 기반 규칙(GEOIP, IP-CIDR, IP-ASN)을 건너뜁니다. 다른 규칙이 일치하지 않으면 Chute는 DNS로 도메인을 해석한 후 해석된 IP 주소로 규칙을 다시 평가합니다. no-resolve 옵션을 추가하면 IP 기반 규칙이 두 번째 패스에서도 계속 건너뛰어지므로, 이미 IP 주소를 가진 요청만 매칭합니다.
GEOIP,US,DIRECT,no-resolve
IP-CIDR,172.16.0.0/12,DIRECT,no-resolve
알림: 2-패스 평가로 인해, 도메인 호스트명을 가진 요청의 경우 뒤에 있는 비 IP 규칙이 앞에 있는 IP 기반 규칙보다 먼저 일치할 수 있습니다. DNS 해석이 실패하면 IP 기반 규칙은 단순히 일치하지 않게 되고 FINAL 규칙이 적용됩니다. 규칙 평가가 중단되지는 않습니다.
force-remote-dns
로컬 DNS 대신 원격 프록시 서버를 통해 DNS 해석을 강제합니다.
DOMAIN-SUFFIX,google.com,Proxy,force-remote-dns
알림: 이 옵션은 현재 호환성을 위해 파싱만 되며, 현재 릴리스에서는 효과가 없습니다.
extended-matching
도메인 기반 규칙 매칭을 연결 호스트명 외에 HTTP Host 헤더도 검사하도록 확장합니다. SNI 또는 CONNECT 대상이 Host 헤더와 다를 때 유용합니다.
DOMAIN-SUFFIX,example.com,Proxy,extended-matching
requires-resolve
SCRIPT 규칙의 경우, 이 옵션은 파서에서 허용되지만 스크립트 평가를 지연시키지 않습니다. $request.dnsResult는 세션이 이미 해석된 경우(예: IP 주소로 직접 요청하거나, DNS 해석 후 두 번째 매칭 패스)에만 스크립트에서 사용할 수 있습니다.
SCRIPT,MyRuleScript,PROXY,requires-resolve
pre-matching
정책이 REJECT인 규칙에만 유효합니다. pre-matching 규칙은 규칙 결과 캐시와 일반 규칙 테이블보다 먼저 별도의 패스로 평가되므로, 매칭되는 REJECT는 규칙 테이블이 유발하는 DNS 해석 이전인 첫 번째 패스에서 적용됩니다.
DOMAIN-SUFFIX,tracker.example.com,REJECT,pre-matching
별칭
DOMAIN-MATCH는DOMAIN-KEYWORD의 별칭으로 허용됩니다.NETWORK는PROTOCOL의 별칭으로 허용됩니다.
도메인 세트
Chute는 DOMAIN-SET 규칙 유형으로 외부 URL에서 도메인 세트를 로드하는 것을 지원합니다. 유형 뒤의 첫 번째 필드는 http(s) URL이어야 합니다. 선택적 update-interval 매개변수는 N초마다 파일을 다시 다운로드합니다.
DOMAIN-SET,https://example.com/domains.txt,DIRECT
DOMAIN-SET,https://example.com/domains.txt,DIRECT,update-interval=86400
도메인 세트 파일에는 한 줄에 하나씩 순수 도메인이 포함됩니다: example.com은 정확한 도메인과 일치하고, .example.com 또는 +.example.com은 해당 도메인과 모든 하위 도메인과 일치합니다. # 또는 //로 시작하는 줄은 주석입니다.
이 페이지는 영어판의 번역본입니다. 내용이 다를 경우 영어판이 우선합니다.