DNS
Chute ใช้ไคลเอนต์ DNS ที่กำหนดเองเพื่อรองรับคุณสมบัติขั้นสูง มันอาจทำงานแตกต่างจากไคลเอนต์ DNS ของระบบปฏิบัติการของคุณ
Chute จะทำหน้าที่เป็นเซิร์ฟเวอร์ DNS เมื่อเซสชันใช้กฎ DIRECT Chute จะตรวจสอบระเบียน DNS ของโฮสต์ก่อน จากนั้นเริ่มซ็อกเก็ตด้วย IP ที่ส่งคืนในระเบียน DNS ด้วยวิธีนี้ ทุกเซสชันที่ใช้กฎ DIRECT จะข้ามการกำหนดค่า DNS ของระบบ และใช้เซิร์ฟเวอร์ DNS ของ Chute แทน
Chute iOS จะกำหนดค่าเซิร์ฟเวอร์ DNS ของระบบเป็นเซิร์ฟเวอร์ DNS ของ Chute
เซิร์ฟเวอร์ DNS อัปสตรีม
Chute ใช้ที่อยู่เซิร์ฟเวอร์ DNS จากระบบปฏิบัติการโดยค่าเริ่มต้น คุณสามารถแทนที่ด้วยเซิร์ฟเวอร์ DNS, DoH (DNS-over-HTTPS), DoT (DNS-over-TLS), DoQ (DNS-over-QUIC) และ DoH3 (DNS-over-HTTP/3) โดยใช้ตัวเลือก 'dns-server'
ส่วน DNS
โดยปกติตัวเลือกของ DNS จะถูกเขียนไว้ใน [General] แต่ก็สามารถเขียนไว้ในส่วน [DNS] ระดับบนสุดแทนได้อย่างเทียบเท่ากัน: dns-server, doh (ชื่อแฝง doh-server, doh-service), dot, doq, doh3, direct-dns-server, proxy-dns-server, encrypted-dns-server, allow-dns-svcb, encrypted-dns-follow-outbound-mode, hijack-dns และ always-real-ip ทำงานเหมือนกันไม่ว่าจะอยู่ในส่วนใด ส่วนเดียวกันนี้ยังรับบรรทัดการกำหนด DNS เฉพาะที่ ซึ่งเป็นรูปแบบรายโดเมนที่ใช้ใน [Host] ได้ด้วย ดังนั้นบรรทัดทั้งสองรูปแบบจึงอยู่ร่วมกันในส่วนเดียวกันได้ คีย์อื่นใดนอกจากนี้จะถูกอ่านเป็นบรรทัดการกำหนดก่อน: key = value ที่ไม่มีที่อยู่ IP และไม่มีคำนำหน้าแบบ server: จะกลายเป็นalias ดังนั้นคีย์ของ [General] ที่วางผิดที่ตรงนี้ — optimistic-dns = false — จึงแมปชื่อ optimistic-dns ไปยัง false อย่างเงียบ ๆ แทนที่จะแจ้งข้อผิดพลาด มีเพียงบรรทัดที่ตัวแยกวิเคราะห์การกำหนดปฏิเสธด้วยเช่นกันเท่านั้นที่จะถูกละเว้นพร้อมข้อความแจ้งในบันทึก ส่วน fallback-dns-server และ encrypted-dns-skip-cert-verification ก็ถูกอ่านที่นี่ด้วย
[DNS]
doh = https://dns.google/dns-query
always-real-ip = *.lan
*.example.com = server:1.1.1.1
รายละเอียด
Chute สอบถามเซิร์ฟเวอร์ DNS ทั้งหมดพร้อมกันเพื่อปรับปรุงประสิทธิภาพ คล้ายกับ dnsmasq ที่มีพารามิเตอร์ '--all-servers' คำตอบแรกจากเซิร์ฟเวอร์จะถูกใช้ แอป Chute iOS และ Chute Dashboard จะแสดงว่าเซิร์ฟเวอร์ใดตอบกลับก่อน หาก Chute ไม่ได้รับคำตอบใด ๆ ใน 2 วินาที มันจะสอบถามเซิร์ฟเวอร์ทั้งหมดอีกครั้ง โปรดทราบว่าเฉพาะอัปสตรีมแบบเซิร์ฟเวอร์ DNS, DoT และ DoQ เท่านั้นที่เข้าร่วมในการลองใหม่ ส่วน DoH, DoH3 และ syslib จะถูกสอบถามเฉพาะในรอบแรกเท่านั้น หลังจากลองใหม่ 3 ครั้ง (รวมทั้งหมด 4 ครั้ง) หรือ 10 วินาที Chute จะเลิกพยายามและรายงานข้อผิดพลาด DNS การลองใหม่เหล่านี้ครอบคลุมการค้นหาของ Chute เอง และคำถามที่ Chute รับช่วงมาจากอินเทอร์เฟซ TUN และการรีเลย์ UDP ของ SOCKS5 ส่วนคำถามที่ส่งตรงมายังพอร์ตรับฟัง DNS ของ Chute จะถูกส่งไปยังเซิร์ฟเวอร์เพียงครั้งเดียวและไม่ถูกลองใหม่ การลองใหม่ของไคลเอนต์ที่ส่งคำถามนั้นจึงเป็นตัวทำหน้าที่แทน
เซิร์ฟเวอร์ที่ถูกสอบถามขึ้นอยู่กับชื่อโดเมน โดเมนที่ผลการตัดสินของกฎเป็น DIRECT จะใช้ direct-dns-server เมื่อมีการตั้งค่าไว้ ชื่อโฮสต์ของเซิร์ฟเวอร์พร็อกซีจะใช้ proxy-dns-server โดเมนที่มีการกำหนด DNS เฉพาะที่จะใช้เซิร์ฟเวอร์ที่กำหนดไว้ที่นั่น และที่เหลือทั้งหมดใช้พูลหลัก (dns-server, doh, dot, doq, doh3) direct-dns-server ให้บริการการค้นหาที่ Chute ทำเองเมื่อเปิดการเชื่อมต่อโดยตรง และให้บริการคำถามของแอปก็ต่อเมื่อคำถามนั้นมาถึงรีโซลเวอร์ของ Chute เท่านั้น: ภายใต้ TUN คำถาม A และ AAAA ของแอปจะได้รับคำตอบเป็น IP ปลอมแทน เมื่อพูลเฉพาะไม่ส่งคำตอบใดกลับมา การสอบถามจะถูกลองใหม่ผ่านพูลหลัก และเมื่อพูลหลักไม่ส่งคำตอบใดกลับมา จะสอบถาม fallback-dns-server หนึ่งครั้งก่อนรายงานข้อผิดพลาด
ชื่อโดเมนบางชื่ออาจมีเนมเซิร์ฟเวอร์ที่มีสิทธิ์ (authoritative) ซึ่งทำงานได้ไม่ดี ทำให้เซิร์ฟเวอร์ DNS อัปสตรีมส่งคืนคำตอบว่างเนื่องจากหมดเวลาฝั่งเซิร์ฟเวอร์หรือปัญหาการเชื่อมต่ออื่น ๆ Chute จะรายงานข้อผิดพลาด DNS ว่างเมื่อเซิร์ฟเวอร์ DNS อัปสตรีมส่งคืนคำตอบ DNS ว่างอย่างชัดเจน หรือหากบางเซิร์ฟเวอร์ส่งคืนคำตอบว่างและเซิร์ฟเวอร์อื่นไม่ตอบสนองใน 3 วินาที
ระเบียน DNS บางรายการมี TTL สั้นมากเนื่องจากการกำหนดค่า Chute บังคับใช้ TTL ขั้นต่ำ 60 วินาที: TTL ที่สั้นกว่าจะถูกเพิ่มเป็น 60 วินาที Optimistic DNS ถูกเปิดใช้งานโดยค่าเริ่มต้น — ผลลัพธ์ DNS ที่แคชไว้จะถูกส่งคืนทันทีในขณะที่รีเฟรชในพื้นหลัง สามารถปิดใช้งานได้ผ่าน optimistic-dns = false คำตอบ NXDOMAIN ที่มีระเบียน SOA ของโซนมาด้วยจะถูกแคชไว้เช่นกัน เป็นเวลาตามที่ระเบียนนั้นกำหนดไว้สำหรับคำตอบเชิงลบ โดยจำกัดให้อยู่ระหว่าง 60 วินาทีถึงหนึ่งวัน จนกว่าจะหมดอายุ ชื่อนั้นจะได้รับคำตอบ NXDOMAIN โดยไม่สอบถามเซิร์ฟเวอร์อีก หากมีการกำหนดหรือ alias ใน [Host] ที่ตรงกันครอบคลุมอยู่ จะไม่แคชคำตอบ NXDOMAIN จากเซิร์ฟเวอร์อัปสตรีม เพราะการกำหนดหรือ alias มีลำดับความสำคัญสูงกว่า
แคช DNS เก็บ 200 รายการ บน iOS และ tvOS จะไม่อนุญาตให้โตแบบไม่จำกัด: คำขอแคชไม่จำกัดจะถูกปฏิเสธ คงแคช 200 รายการไว้ และบันทึกข้อความแจ้ง
เมื่อ IPv6 พร้อมใช้งานและถูกเปิดใช้งาน ไคลเอนต์ DNS ของ Chute จะส่งทั้งคำถาม A และ AAAA ไปยังเซิร์ฟเวอร์ DNS อัปสตรีม คำตอบ A หรือ AAAA แรกที่ส่งคืนจะถูกใช้ บนเครือข่ายแบบ single-stack คำตอบของตระกูลที่อยู่ (address family) ที่ยังไม่สามารถกำหนดเส้นทางได้ในขณะนั้นจะถูกกันไว้เพื่อให้ใช้อีกตระกูลหนึ่งแทน และจะถูกใช้เป็นทางเลือกสำรองเฉพาะเมื่ออีกตระกูลหนึ่งไม่ให้ผลลัพธ์ใด ๆ
หน้านี้เป็นฉบับแปลจากเวอร์ชันภาษาอังกฤษ หากเนื้อหาไม่ตรงกัน ให้ยึดเวอร์ชันภาษาอังกฤษเป็นหลัก