WireGuard DNS บน iPhone: โดเมนเป็นเพียงคำต่อท้ายการค้นหา
การเพิ่มโดเมนในบรรทัด DNS ดูเหมือน DNS แยกส่วน บนไคลเอนต์ Apple มันเติมเต็มเฉพาะชื่อสั้น และทุกคำถามยังคงไปยังตัวแก้ไขของอุโมงค์
คุณเขียนบรรทัดเดียวที่มีที่อยู่ตัวแก้ไขและโดเมนของบริษัท โดยคาดว่าเฉพาะชื่อในโดเมนนั้นจะใช้ตัวแก้ไขของอุโมงค์ บนไคลเอนต์ Apple ตอนนี้ทุกชื่อไปที่นั่น และชื่อสั้นในโดเมนก็ถูกแก้ไขด้วย บรรทัดนี้ทำสองสิ่งแยกกัน และมีเพียงสิ่งเดียวเท่านั้นที่เกี่ยวกับคำถามที่อุโมงค์จัดการ อีกสิ่งคือความสะดวกในการพิมพ์ ซึ่งถูกยกระดับเป็นนโยบายด้วยการอ่านแบบเพ้อฝัน
บรรทัด DNS ถูกแยกเป็นอะไร
ไคลเอนต์อ่านรายการเป็นลิสต์และจำแนกแต่ละรายการตามรูปร่าง อะไรก็ตามที่ดูเหมือนที่อยู่จะกลายเป็นเซิร์ฟเวอร์ DNS อะไรก็ตามที่ดูเหมือนโดเมนจะกลายเป็นคำต่อท้ายการค้นหา ทั้งสองอย่างลงเอยในการตั้งค่าอุโมงค์ แต่ในฟิลด์ที่ต่างกัน บรรทัดตัวอย่างสำหรับอุโมงค์ที่พาตัวแก้ไขส่วนตัวและโดเมนภายในหนึ่งโดเมนมีลักษณะดังนี้
DNS = 10.24.8.53, lab.internal.exampleที่อยู่ให้ตัวแก้ไข โดเมนให้คำต่อท้ายที่ช่วยให้ไคลเอนต์พิมพ์ชื่อสั้นและระบบเติมส่วนที่เหลือก่อนถาม ทั้งสองไม่พูดอะไรเกี่ยวกับการจำกัดตัวแก้ไขให้อยู่ในโดเมนนั้น และนั่นคือส่วนที่ผู้คนคาดหวังแต่ไม่ได้รับ มีเพียงฟิลด์เดียวบนแพลตฟอร์มที่แสดงข้อจำกัดนั้นได้ และไม่ใช่ฟิลด์นี้
สองฟิลด์ของ Apple สองงานที่ต่างกัน
Apple เปิดเผยความแตกต่างในออบเจ็กต์การตั้งค่า DNS รายการโดเมนค้นหาถูกบันทึกว่าเป็นรายการที่ใช้เพื่อทำให้ชื่อโฮสต์ป้ายเดียวมีคุณสมบัติ: พิมพ์ชื่อโฮสต์เปล่าแล้วระบบอาจเพิ่มคำต่อท้ายแต่ละตัวตามลำดับ นี่เป็นกฎการเติมเต็ม ไม่ใช่กฎการกำหนดเส้นทาง ไม่มีอะไรในรายการนั้นตัดสินว่าเซิร์ฟเวอร์ใดถูกถาม
รายการโดเมนที่ตรงกันเป็นคุณสมบัติอีกอย่างหนึ่ง มันตัดสินว่าเนมสเปซใดใช้ชุดการตั้งค่า DNS นี้ และรายการว่างหมายถึงโดเมนเริ่มต้น ไม่ใช่คำต่อท้ายเฉพาะ ตัวสร้างการตั้งค่าอุโมงค์แพ็กเก็ต บนไคลเอนต์ Apple ทำตามแบบจำลองนั้น มันวางคำต่อท้ายการค้นหาที่แยกแล้วลงในรายการค้นหา และเมื่อมีเซิร์ฟเวอร์ก็ตั้งรายการที่ตรงกันเป็นสตริงว่าง ผลลัพธ์คือตัวแก้ไขอุโมงค์ที่ตอบทุกสิ่งที่ระบบส่งมา พร้อมคำต่อท้ายที่ช่วยเรื่องชื่อสั้น
ดังนั้นโดเมนในบรรทัดนั้นไม่ใช่ตัวเลือกเนมสเปซ การเพิ่มอีกอันไม่ได้จำกัดคำถามที่อุโมงค์ใช้ และการลบก็ไม่ได้ขยาย สิ่งเดียวที่เปลี่ยนคือจำนวนชื่อสั้นที่ถูกเติมเต็ม
ทำไมทุกชื่อยังไปถึงตัวแก้ไขของอุโมงค์
ด้วยรายการที่ตรงกันว่างเปล่า อุโมงค์เป็นตัวแก้ไขที่เป็นตัวเลือกสำหรับชื่อทั่วไป ไม่ใช่เฉพาะโดเมนของบริษัท ในการกำหนดค่าอุโมงค์เต็มรูปแบบ สิ่งนี้มักไม่ค่อยสำคัญ เพราะทราฟฟิกทั้งหมดอยู่ในอุโมงค์อยู่แล้ว ในอุโมงค์แยกส่วน สิ่งนี้สำคัญมาก ชื่อสาธารณะตอนนี้อาจถูกแก้ไขโดยตัวแก้ไขที่มีเพียงโซนส่วนตัว และความล้มเหลวดูเหมือน VPN ที่เสียเมื่อจริง ๆ แล้วเป็นตัวแก้ไขที่ตอบเพียงส่วนหนึ่งของเนมสเปซ อุโมงค์ปกติดี คำถามออกไป และคำตอบกลับมาเปล่า
มีการซ่อมสองทางและเป็นการตัดสินใจที่ต่างกัน ทำให้ตัวแก้ไขของอุโมงค์เป็นตัวแก้ไขที่สมบูรณ์ซึ่งส่งต่อชื่อสาธารณะผ่านเส้นทางที่อนุมัติ หรือหยุดส่งชื่อสาธารณะไปที่นั่นโดยเปลี่ยนการกำหนดค่าไคลเอนต์แทนรายการโดเมน วิธีแรกเก็บทุกคำถามไว้บนอุโมงค์และไว้วางใจต้นทางต้นน้ำ วิธีที่สองเก็บบางคำถามไว้ในเครื่องและยอมรับว่าชื่อส่วนตัวอาจหยุดแก้ไขได้ขณะที่อุโมงค์ปิดอยู่
DNS แยกส่วนต้องการอะไรจริง ๆ
นโยบายตัวแก้ไขที่จำกัดขอบเขตเนมสเปซต้องใช้ไคลเอนต์ที่ให้คุณแสดงออกได้: จับคู่โดเมนบนแพลตฟอร์ม Apple หรือการตั้งค่าที่เทียบเท่าในผลิตภัณฑ์ที่คุณใช้ ฟิลด์การกำหนดค่าที่รับเฉพาะเซิร์ฟเวอร์และคำต่อท้ายไม่สามารถแสดงออกได้ ไม่ว่าจะใส่เครื่องหมายวรรคตอนอย่างไร โปรไฟล์สามารถพานโยบายได้เพราะอธิบายการกำหนดค่าที่จัดการ ไม่ใช่คำใบ้ตอนเชื่อมต่อ มันสามารถระบุโดเมน เซิร์ฟเวอร์ และสิ่งที่จะเกิดขึ้นเมื่อโดเมนนั้นเข้าถึงไม่ได้ นั่นคือความแตกต่างระหว่างการตั้งค่ากับสัญญา
บนอุปกรณ์ Apple ที่จัดการ สิ่งนี้มักถูกส่งผ่านโปรไฟล์การกำหนดค่าที่พาการตั้งค่า DNS เฉพาะโดเมน นี่เป็นกลไกที่ต่างจากไฟล์การกำหนดค่าของ WireGuard และทั้งสองอยู่ร่วมกันได้เฉพาะเมื่อไคลเอนต์เคารพโปรไฟล์ ตรวจสอบว่าไคลเอนต์ของคุณเรียกฟิลด์นั้นว่าอะไรจริง ๆ ก่อนสันนิษฐานว่าผลิตภัณฑ์ทั้งสองทำงานเหมือนกัน สคริปต์ wg-quick บน Mac และแอป WireGuard บน iPhone อ่านบรรทัดที่คล้ายกันและติดตั้งผ่านเลเยอร์ที่ต่างกัน
อ่านการตั้งค่าที่ติดตั้งไว้ ไม่ใช่การกำหนดค่า
บน Mac คุณสามารถตรวจสอบว่าลงเอยอย่างไร ซึ่งให้ข้อมูลมากกว่าการอ่านไฟล์ที่คุณเขียนซ้ำ รายการตัวแก้ไขแสดงว่าเซิร์ฟเวอร์ใดถูกกำหนดค่าให้โดเมนใด และคำถามที่จำกัดขอบเขตแสดงว่าอันไหนชนะ ไคลเอนต์ที่ทำให้บรรทัดเสียจะแสดงที่นี่ ไม่ใช่ในไฟล์ที่คุณเขียน บน iOS ไม่มีบรรทัดคำสั่งที่เทียบเท่า ดังนั้นหลักฐานที่นั่นคือผลลัพธ์: ชื่อส่วนตัวที่แก้ไขผ่านอุโมงค์ และชื่อสาธารณะที่คำตอบเปิดเผยว่าตัวแก้ไขใดตอบ
scutil --dns | grep -A3 resolver
networksetup -getdnsservers Wi-Fiสองคำสั่งนี้พิมพ์การกำหนดค่าตัวแก้ไขปัจจุบันและเซิร์ฟเวอร์ DNS ของบริการที่ใช้งานอยู่ หากตัวแก้ไขของอุโมงค์ปรากฏเป็นตัวแก้ไขเริ่มต้นโดยไม่มีข้อจำกัดโดเมน การกำหนดค่าก็กำลังทำสิ่งที่ไคลเอนต์ขอ แก้ไขโดยเปลี่ยนกลไก ไม่ใช่เพิ่มคำต่อท้ายที่สองและหวังว่าพฤติกรรมจะเปลี่ยน