wg-quick ทำให้ DNS พังเมื่อเชื่อมต่อ: อ่านข้อผิดพลาดตอนตั้งค่า
บรรทัด DNS เป็นของตัวช่วยตั้งค่า ไม่ใช่โปรโตคอลเพื่อนร่วม โปรดอ่านข้อผิดพลาดแรก ตรวจสอบเส้นทางของตัวแปลงชื่อ และยืนยันว่าการล้างค่าคืนสภาพเดิม
อุโมงค์ขึ้นมา การจับมือเสร็จสิ้น และการแปลงชื่อหยุดลง ไม่มีอะไรเปลี่ยนในคอนฟิกของเพื่อนร่วม เพราะบรรทัด DNS ไม่เคยเป็นส่วนหนึ่งของคอนฟิกนั้นเลย มันเป็นของตัวช่วยตั้งค่า หมายความว่าความล้มเหลวอยู่ในเครื่องมือตัวแปลงชื่อของโฮสต์ ไม่ใช่ในกุญแจของ WireGuard
อ่านข้อความแรกที่ตัวช่วยพิมพ์ออกมา ไม่ใช่ข้อความสุดท้าย แล้วความต่างระหว่างเครื่องมือที่หายไปกับเซิร์ฟเวอร์ที่เข้าถึงไม่ได้ก็จะชัดเจน
บรรทัด DNS เป็นคุณสมบัติของตัวช่วย
ฟิลด์หลักของคอนฟิกอธิบายเพื่อนร่วม กุญแจ และที่อยู่ที่อนุญาต การแปลงชื่อถูกเพิ่มด้านบนโดยสคริปต์ที่ยกอินเทอร์เฟซขึ้น และแต่ละการใช้งานทำต่างกัน ไคลเอนต์เดสก์ท็อปอาจจัดการ DNS ผ่านบริการของตัวเอง สคริปต์ของดิสทริบิวชันอาจเรียกเครื่องมือแปลงชื่อตัวใดตัวหนึ่ง และคอนเทนเนอร์อาจไม่ทำทั้งสองอย่าง ไฟล์คอนฟิกบอกไม่ได้ว่าเส้นทางไหนกำลังทำงาน
นี่คือเหตุผลที่ไฟล์คอนฟิกอาจถูกต้องสำหรับโปรโตคอลแต่ยังล้มเหลวตอนตั้งค่า ความล้มเหลวเป็นของฮุกที่โปรโตคอลไม่เคยเห็น
การเขียนฟิลด์ขยายลงในคอนฟิกหลักแล้วคาดว่าเครื่องมือของโปรโตคอลจะรับมัน ทำให้เกิดความสับสนแบบเดียวกันจากทิศตรงข้าม ตัวแยกวิเคราะห์สองตัวอ่านไฟล์คนละไฟล์
การรู้ว่าตัวไหนกำลังทำงานเป็นขั้นวินิจฉัยแรก และมักเห็นในคำสั่งที่คุณพิมพ์ ไม่ใช่ในไฟล์คอนฟิก
อ่านข้อผิดพลาดแรกที่ตัวช่วยพิมพ์
ยกอินเทอร์เฟซขึ้นในเบื้องหน้าแล้วอ่านผลลัพธ์ตามลำดับ เครื่องมือแปลงชื่อที่หายไป ฮุกที่ล้มเหลว และเซิร์ฟเวอร์ที่เข้าถึงไม่ได้ ต่างหยุดคำสั่งเดียวกันคนละจุด และแต่ละอย่างมีวิธีซ่อมต่างกัน
wg-quick up wg0
resolvectl status wg0
ip route get 10.66.0.1
คำสั่งแรกบอกความคืบหน้าของการตั้งค่า คำสั่งที่สองแสดงว่าเซิร์ฟเวอร์ไหนที่อินเทอร์เฟซอ้างอยู่ตอนนี้ และคำสั่งที่สามแสดงว่าที่อยู่ของตัวแปลงชื่อเข้าถึงได้จริงผ่านอุโมงค์หรือไม่ ตัวแปลงชื่อที่ตั้งค่าไว้แต่ไม่มีเส้นทางทำให้เกิดการหมดเวลาแทนข้อผิดพลาดคอนฟิก นี่คือเหตุผลที่การตรวจสองอย่างต้องทำคู่กัน การอ่านเฉพาะผลลัพธ์สถานะให้ข้อสรุปที่มั่นใจและผิด
ถ้าตั้งค่าเสร็จแล้วแต่การแปลงชื่อยังล้มเหลว ให้เทียบตัวแปลงชื่อที่ตัวช่วยติดตั้งกับตัวที่เครือข่ายใช้ก่อนหน้า ตัวแปลงชื่อส่วนตัวต้องมีเส้นทางผ่านอุโมงค์ และคอนฟิกที่ระบุไว้โดยไม่ครอบคลุมคำนำหน้าของมันจะทำให้ทุกคำถามรอ
โฮสต์มีตัวแปลงชื่อตัวไหนจริง ๆ
โฮสต์ Linux สมัยใหม่มักรันตัวแปลงชื่อแบบ stub ในเครื่อง ดังนั้นที่อยู่ที่ตัวช่วยติดตั้งจะถูกใช้โดย stub นั้น ไม่ใช่โดยแอปพลิเคชันโดยตรง การแก้ไฟล์ที่สร้างขึ้นด้วยมืออาจดูเหมือนได้ผลจนถึงการเชื่อมต่อครั้งถัดไป เมื่อตัวช่วยเขียนมันใหม่
ใช้การผสานรวมที่รองรับสำหรับดิสทริบิวชัน และให้องค์ประกอบเดียวเป็นเจ้าของสถานะของตัวแปลงชื่อ เจ้าของสองรายทำให้เกิดการแย่งชิงแบบเดียวกับเจ้าของที่อยู่ของอินเทอร์เฟซสองราย และอาการคือโฮสต์ที่แปลงชื่อถูกต้องเพียงไม่กี่นาทีหลังการเปลี่ยนแปลงแต่ละครั้ง
ชื่อภายในควรมีการตรวจของตัวเอง ตัวแปลงชื่อสาธารณะอาจคืนการท่องเว็บทั่วไปได้ แต่ทำให้ชื่อองค์กรทุกชื่อล้มเหลว ซึ่งตรงข้ามกับจุดประสงค์ของอุโมงค์ ก่อนสรุปว่า DNS ได้รับการแก้ไขแล้ว ให้ถามเซิร์ฟเวอร์ที่ตั้งใจไว้เกี่ยวกับชื่อภายใน
การล้างค่าสำคัญพอ ๆ กับการตั้งค่า
ลดอินเทอร์เฟซลงและตรวจสอบสถานะของตัวแปลงชื่ออีกครั้ง ตัวช่วยที่คืนคอนฟิกก่อนหน้าทำให้โฮสต์ยังใช้ได้ ตัวที่ทิ้งเซิร์ฟเวอร์ของตัวเองไว้จะสร้างความล้มเหลวครั้งถัดไป มักเป็นชั่วโมงถัดมาเมื่ออุโมงค์หายไปนานแล้ว
สถานะที่ค้างเก่าเห็นได้ง่ายเมื่อเริ่มมองหา รายการตัวแปลงชื่ออาจชี้ไปที่ที่อยู่บนอินเทอร์เฟซที่ไม่มีอยู่แล้ว และโดเมนค้นหาอาจอยู่รอดจากเครือข่ายที่คุณออกเมื่อเช้านี้ อย่างใดอย่างหนึ่งทำให้การเชื่อมต่อครั้งถัดไปคาดเดาไม่ได้ และทั้งสองอย่างไม่ปรากฏในผลลัพธ์สถานะของอุโมงค์เอง การตรวจใช้เวลาสิบวินาทีและประหยัดเวลาหนึ่งชั่วโมงให้คนถัดไป
แยกการวินิจฉัยออกจากการซ่อม ถ้าทุกปลายทางล้มเหลว ไม่ใช่แค่การค้นชื่อ เส้นทางและการส่งต่อคือผู้ต้องสงสัย และบรรทัด DNS เป็นสิ่งที่เบี่ยงเบนความสนใจ คู่มือ wg-quick บันทึกว่าจัดการฟิลด์ใดและฟิลด์ใดเป็นของโปรโตคอล และขอบเขตนั้นคือคำตอบทั้งหมดสำหรับรายงานส่วนใหญ่เหล่านี้