규칙
Chute는 사용자 정의 규칙에 따라 요청을 다른 프록시 서버로 전달하거나 호스트에 직접 연결할 수 있습니다.
우선순위
규칙은 설정 파일에 나타나는 순서대로 첫 번째부터 마지막까지 매칭됩니다. 즉, 목록 상단의 규칙이 하단의 규칙보다 높은 우선순위를 가집니다.
구성
각 규칙은 규칙 유형, 트래픽 매처(FINAL 규칙 제외), 프록시 정책의 3부분으로 구성됩니다: TYPE, VALUE, POLICY. 예: DOMAIN-SUFFIX,apple.com, DIRECT IP-CIDR, 192.168.0.0/16,ProxyA
프록시 정책은 프록시, 정책 그룹, DIRECT 또는 REJECT를 포함한 정책 이름 중 하나로 지정되어야 합니다. 규칙은 기본 동작을 정의하기 위해 반드시 FINAL 규칙으로 끝나야 합니다.
예:
[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,my-set,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,HTTPS,Proxy |
감지된 프로토콜 (HTTP/HTTPS/TLS/SSH 등) |
프로세스 규칙 (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 주소 |
| 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 |
인바운드 프록시 서버 이름 |
논리 조합 규칙
| 유형 | 구문 | 매칭 대상 |
|---|---|---|
| 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
GEOIP, IP-CIDR 또는 IP-ASN 규칙이 발생하면 Chute는 요청의 호스트명이 도메인인지 확인하기 위해 DNS 질문을 보냅니다. no-resolve 옵션을 선택하여 도메인 요청에 대해 이 규칙을 건너뛸 수 있습니다.
GEOIP,US,DIRECT,no-resolve
IP-CIDR,172.16.0.0/12,DIRECT,no-resolve
참고: 일부 도메인이 로컬 DNS 서버에서 해석되지 않는 경우, 해당 도메인과 일치하는 규칙 앞에 IP 기반 규칙이 없도록 해야 합니다. 그렇지 않으면 DNS 오류로 인해 규칙 테스트가 실패합니다.
no-resolve를 사용하여 이 문제를 해결할 수도 있습니다.
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 규칙의 경우, 스크립트가 평가되기 전에 DNS 해석이 완료되었는지 확인합니다. 이를 통해 $request.dnsResult를 스크립트에서 사용할 수 있습니다.
SCRIPT,MyRuleScript,PROXY,requires-resolve
도메인 세트
Chute는 DOMAIN-SET 규칙 유형으로 사용할 수 있는 외부 파일 또는 URL의 명명된 도메인 세트 정의를 지원합니다. 도메인 세트 파일의 각 줄에는 정책 없이 규칙 선언이 포함됩니다.