การกำหนด DNS เฉพาะที่
Chute รองรับการกำหนด DNS ที่กำหนดเองในเครื่อง มันเทียบเท่ากับ /etc/hosts แต่มีคุณสมบัติที่ทรงพลังกว่า รวมถึง wildcard, alias และการกำหนดเซิร์ฟเวอร์ DNS
[Host]
abc.com = 1.2.3.4
*.dev = 6.7.8.9
foo.com = bar.com
bar.com = server:8.8.8.8
หมายเหตุ: บรรทัดการกำหนดที่อธิบายไว้ที่นี่สามารถใช้ในส่วน
[DNS]ร่วมกับตัวเลือกเซิร์ฟเวอร์ DNS ได้ด้วย ดูส่วน DNS รูปแบบssid:ของ Shadowrocket (DNS ตามเครือข่าย) เป็นข้อยกเว้น: รูปแบบนี้รองรับเฉพาะใน[Host]เท่านั้น และใน[DNS]จะถูกอ่านเป็นการกำหนดสำหรับชื่อที่ไม่มีวันปรากฏ
การกำหนดหนึ่งรายการระบุที่อยู่ได้หลายที่อยู่ โดยผสม IPv4 และ IPv6 ได้: dns.google = 8.8.8.8, 8.8.4.4, 2001:4860:4860::8888 คำถาม A จะได้รับคำตอบเป็นที่อยู่ IPv4 และคำถาม AAAA จะได้รับคำตอบเป็นที่อยู่ IPv6 รายการที่มีสิ่งอื่นนอกเหนือจากที่อยู่ถือเป็นข้อผิดพลาดของการกำหนดค่า ชื่อที่กำหนดไว้กับที่อยู่ในตระกูลเดียวเท่านั้นจะได้คำตอบว่าง (NODATA) สำหรับคำถามของอีกตระกูลหนึ่ง โดยไม่ถามเซิร์ฟเวอร์อัปสตรีม ชื่อเดียวกันยังเขียนเป็นสองบรรทัดได้ บรรทัดหนึ่งสำหรับที่อยู่ IPv4 และอีกบรรทัดสำหรับ IPv6 การกำหนดที่เพิ่มเข้ามาจากการโหลดการกำหนดค่าใหม่หรือจากโมดูลจะมีผลทันที จะไม่แคชคำตอบ NXDOMAIN จากเซิร์ฟเวอร์อัปสตรีม หากชื่อถูกครอบคลุมด้วยการกำหนดหรือ alias ใน [Host] เพราะการกำหนดหรือ alias มีลำดับความสำคัญสูงกว่า
Wildcard
คุณสามารถใช้คำนำหน้า * เพื่อใช้ wildcard กับโดเมนย่อยทั้งหมด โปรดทราบว่า Chute ใช้การจับคู่สตริงอย่างง่าย ตัวอย่างเช่น *google.com จะจับคู่ google.com, foo.google.com และ bargoogle.com และ *.google.com จะไม่จับคู่ google.com
[Host]
*.dev = 6.7.8.9
Alias
มันเทียบเท่ากับระเบียน CNAME
[Host]
foo.com = bar.com
การค้นหา A หรือ AAAA สำหรับชื่อที่กำหนด alias ไว้จะได้รับคำตอบเป็นที่อยู่ของปลายทาง ไคลเอนต์จึงไม่ต้องติดตาม alias ด้วยตนเอง หากปลายทางไม่มีที่อยู่ในตระกูลที่ร้องขอ คำตอบจะว่างเปล่าแทนที่จะเป็นระเบียนของอีกตระกูลหนึ่ง Chute จะแปลงชื่อปลายทางเมื่อโหลดกฎ หากยังแปลงชื่อไม่เสร็จ คำตอบจะเป็นระเบียน CNAME และปลายทางจะถูกแปลงชื่อไว้สำหรับการค้นหาครั้งถัดไป
การกำหนดเซิร์ฟเวอร์ DNS
คุณสามารถกำหนดเซิร์ฟเวอร์ DNS ที่ระบุให้กับหนึ่งหรือหลายโดเมน
[Host]
bar.com = server:8.8.8.8
server: ยังรับ URL แบบ DoH ด้วย ดังนั้นจึงสามารถกำหนดปลายทาง DoH ที่ระบุให้กับโดเมนได้โดยตรง
[Host]
*.example.com = server:https://doh.example/dns-query
server: รับรายการเซิร์ฟเวอร์ที่คั่นด้วยคอมมา ทุกรายการที่ใช้งานได้จะถูกเก็บไว้และถูกสอบถามพร้อมกัน คำตอบแรกที่ได้รับจะถูกใช้ รายการอาจเป็นที่อยู่ IP ที่ระบุพอร์ตได้ (8.8.8.8:5353, [2001:db8::1]:5353), system, syslib (force-syslib มีความหมายเดียวกัน) หรือ URL ของ DoH โดยที่อยู่ IP หรือ URL ของ DoH จะลงท้ายด้วยส่วนต่อท้าย #proxyได้ ส่วน system และ syslib ที่เขียนพร้อมส่วนต่อท้ายนี้จะถูกทิ้งพร้อมคำเตือน เพราะรีโซลเวอร์ของระบบส่งผ่านนโยบายไม่ได้ รายการ tcp://IP[:port] จะสอบถามเซิร์ฟเวอร์นั้นผ่าน DNS over TCP
[Host]
bar.com = server:8.8.8.8, 8.8.4.4
คุณสามารถกำหนดเซิร์ฟเวอร์ DNS ของระบบให้กับหนึ่งหรือหลายโดเมน Chute จะใช้การกำหนดค่า DNS ของระบบเท่านั้นในการสอบถามโดเมนเหล่านี้
[Host]
devs = server:system
เนื่องจาก Chute มีการใช้งานไคลเอนต์ DNS ของตัวเอง ชื่อโฮสต์บางชื่ออาจแปลงชื่อไม่สำเร็จ คุณสามารถใช้ server:syslib เพื่อให้ระบบจัดการการค้นหา
[Host]
Macbook = server:syslib
การกำหนดบริการ DoH
คุณสามารถกำหนดบริการ DoH ที่ระบุให้กับหนึ่งหรือหลายโดเมน
[Host]
bar.com = doh:cloudflare
โดยค่าเริ่มต้น คำถามชนิด A และ AAAA สำหรับชื่อโฮสต์ที่มีส่วนต่อท้าย .local จะถูกแปลงชื่อโดยระบบ ส่วนคำถามชนิดอื่น — PTR, SRV, TXT — จะไปยังเซิร์ฟเวอร์อัปสตรีมที่กำหนดค่าไว้
การกำหนดบริการ DoT
คุณสามารถกำหนดบริการ DoT (DNS-over-TLS) ที่ระบุให้กับหนึ่งหรือหลายโดเมน
[Host]
bar.com = dot:dns.google
รายการ dot: ใส่ส่วนต่อท้าย #proxyไม่ได้
การกำหนดบริการ DoQ
คุณสามารถกำหนดบริการ DoQ (DNS-over-QUIC) ที่ระบุให้กับหนึ่งหรือหลายโดเมน
[Host]
bar.com = doq:dns.adguard.com
รายการลงท้ายด้วยส่วนต่อท้าย #proxyได้ เช่น bar.com = doq:dns.adguard.com#proxy=HK เพื่อส่งการสอบถามผ่านนโยบายนั้น ชื่อนโยบายจะคงไว้ตรงตามที่เขียน
การกำหนดบริการ DoH3
คุณสามารถกำหนดบริการ DoH3 (DNS-over-HTTP/3) ที่ระบุให้กับหนึ่งหรือหลายโดเมน
[Host]
bar.com = doh3:https://dns.google/dns-query
เช่นเดียวกับรายการ DoQ รายการนี้ลงท้ายด้วยส่วนต่อท้าย #proxyได้
คีย์ชุดกฎ
คีย์สามารถเป็นชุดกฎแทนรูปแบบโดเมนได้:
[Host]
RULE-SET:https://example.com/cn-domains.list = server:223.5.5.5
RULE-SET:MyProvider = server:https://doh.pub/dns-query
DOMAIN-SET:https://example.com/ad-hosts.txt = 0.0.0.0
RULE-SET:<source> รับ URL หรือชื่อของผู้ให้บริการกฎ ส่วน DOMAIN-SET:<source> รับ URL เฉพาะกฎประเภทโดเมนในชุดเท่านั้นที่ใช้จับคู่ กฎ IP และกฎประเภทอื่นจะถูกละเว้น ชุดกฎจะถูกดาวน์โหลดและรีเฟรชแบบเดียวกับเมื่อบรรทัดใน [Rule] ใช้งาน และทุกโดเมนที่ตรงกับชุดจะได้รับค่าทางด้านขวา ชุดในตัว SYSTEM และ LAN ใช้ที่นี่ไม่ได้
สคริปต์ DNS
[Host]
*.corp.example = script:CorpResolver
script:<name> จะส่งการค้นหาของโดเมนที่ตรงกันไปให้สคริปต์แบบ type=dns ที่มีชื่อนั้นจัดการ ทั้งคำถามที่แอปส่งมาและการค้นหาของ Chute เอง หากสคริปต์ไม่ส่งที่อยู่กลับมา หรือไม่มีสคริปต์ dns ชื่อนั้นที่เปิดใช้งานอยู่ โดเมนจะถูกแปลงชื่อตามปกติ
DNS ตามเครือข่าย (Shadowrocket)
[Host]
ssid:Home WiFi = server:192.168.1.1
ssid:<network name> = server:<servers> ของ Shadowrocket จะถูกอ่านเป็นการแทนที่ DNS ของ [SSID Setting]สำหรับเครือข่าย Wi-Fi นั้น ขณะที่อุปกรณ์อยู่ในเครือข่ายนี้ เซิร์ฟเวอร์เหล่านี้จะแทนที่รีโซลเวอร์ธรรมดาของพูลหลัก ชื่อเครือข่ายมีช่องว่างได้ ที่นี่นับเฉพาะรีโซลเวอร์ธรรมดาเท่านั้น — ที่อยู่ซึ่งจะระบุพอร์ตด้วยหรือไม่ก็ได้, system หรือ syslib ส่วน URL ของ DoH ซึ่ง server: รับได้ในที่อื่นของ [Host] จะถูกตัดทิ้งพร้อมข้อความแจ้ง
ไฟล์ hosts ของระบบ
[General]
read-etc-hosts = false
บน macOS และ Android นั้น Chute ยังอ่านไฟล์ hosts ของระบบ /etc/hosts และเพิ่มรายการในไฟล์เข้าในตารางนี้ก่อนบรรทัดของ [Host] ดังนั้นเมื่อชื่อหนึ่งปรากฏทั้งสองแห่ง ที่อยู่จากไฟล์ hosts จะเป็นฝ่ายที่ถูกใช้ read-etc-hosts ใน [General] ใช้เปิดปิดพฤติกรรมนี้และเปิดอยู่โดยค่าเริ่มต้น ตั้งเป็น false เพื่อไม่นำไฟล์นี้มาใช้ Chute iOS และ tvOS ไม่เคยอ่านไฟล์ hosts
การใช้งานร่วมกัน
คุณสมบัติทั้งหมดสามารถใช้ร่วมกันได้ ตัวอย่างเช่น:
[Host]
*.dev = foo.com
*.bar.com = server:system
Macbook = server:syslib
*.foo.com = doh:cloudflare
*.local = dot:dns.google
api.internal = doq:dns.adguard.com
หน้านี้เป็นฉบับแปลจากเวอร์ชันภาษาอังกฤษ หากเนื้อหาไม่ตรงกัน ให้ยึดเวอร์ชันภาษาอังกฤษเป็นหลัก