القواعد
يستطيع Chute توجيه الطلبات إلى خادم بروكسي آخر أو الاتصال بالمضيف مباشرة، وفقاً لقواعد مخصصة.
الأولوية
تتم مطابقة القواعد من الأولى إلى الأخيرة، بالترتيب الذي تظهر به في ملف الإعدادات. بمعنى آخر، القواعد في أعلى القائمة لها أولوية أعلى من القواعد التي تليها.
التركيب
تتكون كل قاعدة من 3 أجزاء: نوع القاعدة، مطابق حركة المرور (باستثناء قاعدة FINAL)، وسياسة بروكسي: 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 |
عنوان IP في نطاق CIDR |
| IP-CIDR6 | IP-CIDR6,2001:db8::/32,DIRECT |
عنوان IPv6 في نطاق CIDR |
| GEOIP | GEOIP,US,DIRECT |
رمز الدولة من قاعدة بيانات GeoIP |
| IP-ASN | IP-ASN,13335,DIRECT |
عنوان IP ينتمي إلى ASN |
قواعد مستوى HTTP
| النوع | الصيغة | يطابق |
|---|---|---|
| USER-AGENT | USER-AGENT,Instagram*,DIRECT |
ترويسة User-Agent |
| URL-REGEX | URL-REGEX,^http://google\.com,DIRECT |
تطابق الرابط مع تعبير نمطي |
| 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
ملاحظة: بسبب التقييم على مرحلتين، يمكن لقاعدة لاحقة غير مبنية على IP أن تطابق قبل قاعدة سابقة مبنية على IP لطلب اسم مضيفه نطاق. إذا فشل تحليل DNS، فإن القواعد المبنية على IP ببساطة لن تطابق أبداً وتُطبق قاعدة FINAL؛ ولا يتم إجهاض تقييم القواعد.
force-remote-dns
فرض تحليل DNS عبر خادم البروكسي البعيد بدلاً من DNS المحلي.
DOMAIN-SUFFIX,google.com,Proxy,force-remote-dns
ملاحظة: يتم تحليل هذا الخيار حالياً لأغراض التوافق فقط وليس له أي تأثير في الإصدارات الحالية.
extended-matching
توسيع مطابقة القاعدة المبنية على النطاق لتفحص أيضاً ترويسة Host في HTTP بالإضافة إلى اسم مضيف الاتصال. هذا مفيد عندما يختلف 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. يتم تقييم القاعدة في مرحلة منفصلة قبل قائمة القواعد العادية وقبل ذاكرة التخزين المؤقت لنتائج القواعد، لذا يُطبق الرفض حتى قبل استكشاف البروتوكول أو تحليل DNS.
DOMAIN-SUFFIX,tracker.example.com,REJECT,pre-matching
الأسماء البديلة
- يُقبل
DOMAIN-MATCHكاسم بديل لـDOMAIN-KEYWORD. - يُقبل
NETWORKكاسم بديل لـPROTOCOL.
مجموعة النطاقات
يدعم Chute تحميل مجموعات النطاقات من رابط URL خارجي باستخدام نوع القاعدة DOMAIN-SET. يجب أن يكون الحقل الأول بعد النوع رابط http(s). المعامل الاختياري 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 يطابق النطاق وجميع نطاقاته الفرعية. الأسطر التي تبدأ بـ # أو // هي تعليقات.