อินเทอร์เฟซทำงานอยู่แต่ wg-quick ล้มเหลว: ต่อไปต้องทำอะไร
ยูนิตที่ล้มเหลวอาจทิ้งอุโมงค์ที่ตั้งค่าไว้ครึ่งเดียวไว้เบื้องหลัง อ่านขั้นตอนแรกที่ล้มเหลว ตัดสินใจว่าจะล้างหรือซ่อม แล้วพิสูจน์ด้วยคำขอ
ยูนิตเป็นสีแดง อินเทอร์เฟซมีอยู่ และอุโมงค์ทำงานได้เป็นส่วนใหญ่ ซึ่งเป็นการผสมผสานที่สับสนที่สุดเท่าที่จะเป็นไปได้ การตั้งค่าเป็นลำดับ ขั้นแรกสร้างอินเทอร์เฟซ จากนั้นจึงตามด้วยแอดเดรส เส้นทาง การตั้งค่าตัวแปลงชื่อ และคำสั่งฮุกใด ๆ ความล้มเหลวในขั้นตอนที่สี่ทำให้สามขั้นแรกยังอยู่ จึงชื่ออินเทอร์เฟซเป็นหลักฐานว่าเริ่มต้นแล้ว ไม่ใช่เสร็จแล้ว ข้อเท็จจริงเพิ่มเติมหนึ่งอย่างจะช่วยให้พ้นจากความสับสน นั่นคือขั้นตอนที่ล้มเหลว
สภาพบางส่วนคือความล้มเหลวปกติ
พฤติกรรมนั้นควรคาดหมาย ไม่ใช่ถือว่าเสียหาย อินเทอร์เฟซเป็นส่วนที่ถูกที่สุดของการตั้งค่าและทิ้งไว้ได้ง่ายที่สุด และเป็นส่วนที่ทำให้เครื่องดูเหมือนทำงานครึ่งเดียว
สิ่งที่ยังไม่มีคือทุกสิ่งทุกอย่างที่ตามมาหลังขั้นตอนที่ล้มเหลว หากความล้มเหลวอยู่ที่ขั้นตอนของตัวแปลงชื่อ แอดเดรสและเส้นทางมีอยู่ แต่ DNS ไม่มี หากเป็นเส้นทาง อุโมงค์มีแอดเดรสและไม่มีทางผ่าน
ผลลัพธ์คือเครื่องที่ตอบแบบทดสอบบางอย่างและล้มเหลวในข้ออื่น ซึ่งเป็นเหตุให้คนสรุปว่าบริการกระพริบทั้งที่มันไม่เคยเริ่มได้สำเร็จ บริการที่ไม่เคยเสร็จสิ้นย่อมกระพริบไม่ได้ มันทำได้เพียงล้มเหลวซ้ำ ๆ ด้วยเหตุผลเดิม
หาขั้นตอนแรกที่ล้มเหลว
อ่านบันทึกของยูนิต ไม่ใช่แค่สถานะปัจจุบัน และอ่านจากต้นของการรันที่ล้มเหลว บรรทัดสุดท้ายบอกโค้ดออก และข้อผิดพลาดแรกบอกว่าต้องซ่อมอะไร
คำสั่งเหล่านี้พิมพ์สถานะของยูนิต บันทึกการบูตของยูนิตนั้น และสถานะสดของอุโมงค์
systemctl status wg-quick@wg0
journalctl -u wg-quick@wg0 -b --no-pager | tail -40
wg show
ip -4 addr show dev wg0ข้อผิดพลาดของตัวแปลงชื่อ เส้นทางที่มีอยู่แล้ว ฮุกที่ออกด้วยโค้ดที่ไม่ใช่ศูนย์ และความล้มเหลวในการแยกวิเคราะห์การตั้งค่า ล้วนปรากฏในหน้าต่างนั้น และแต่ละอย่างระบุองค์ประกอบของตัวเอง การเดาจากสถานะอินเทอร์เฟซเพียงอย่างเดียวละเลยข้อมูลทั้งหมดนั้น
สามเงื่อนไขที่กำหนดการซ่อม
ตัดสินใจว่าคุณกำลังล้าง กำลังซ่อมในที่ หรือกำลังถอดยูนิตออกจากเส้นทางบูต และตัดสินใจก่อนพิมพ์อะไรลงไป
หากอินเทอร์เฟซเสียแต่การตั้งค่าถูกต้อง ให้ล้างแล้วเริ่มใหม่ หากการตั้งค่าผิด ให้แก้ไขและยังคงล้างก่อน เพราะการเริ่มตัวจัดการตัวที่สองบนสภาพบางส่วนจะสร้างเจ้าของสองรายสำหรับอินเทอร์เฟซเดียว หากความล้มเหลวคือองค์ประกอบระบบที่ขาดหาย เช่น ตัวช่วยตัวแปลงชื่อที่เครื่องไม่มี ให้ติดตั้งหรือถอนการพึ่งพานั้นอย่างตั้งใจ แทนที่จะแก้ไขยูนิตจนกว่ามันจะเลิกบ่น
สามกรณีนั้นครอบคลุมส่วนใหญ่ของสิ่งที่ดูเหมือนยูนิตสีแดงลึกลับ คำถามที่แยกแยะคือความล้มเหลวเดิมจะเกิดขึ้นบนเครื่องที่มีสภาพสะอาดหรือไม่ และคำตอบมักมาจากบรรทัดข้อผิดพลาดแรก
ล้างก่อนลองใหม่
การลองใหม่บนสภาพที่มีอยู่สามารถล้มเหลวด้วยเหตุผลใหม่และซ่อนเหตุผลเดิม ลดอินเทอร์เฟซลงด้วยเครื่องมือเดิมที่สร้างมัน แล้วยืนยันว่าไม่มีอะไรเหลือ
อย่าลบอินเทอร์เฟซที่ไม่เกี่ยวข้องและอย่ารีเซ็ตสแต็กเครือข่ายของโฮสต์ ทั้งสองเป็นการกระทำใหญ่เพื่อซ่อมวัตถุเล็ก และเปลี่ยนอุโมงค์ที่ล้มเหลวหนึ่งอันให้เป็นเครื่องที่การเชื่อมต่ออื่นต้องสร้างใหม่ ขอบเขตที่ถูกต้องคืออินเทอร์เฟซหนึ่งและยูนิตที่ถือครองมัน สิ่งใดที่กว้างกว่านั้นต้องมีเหตุผลที่เขียนไว้ก่อนเกิดขึ้น
พิสูจน์อุโมงค์ ไม่ใช่ยูนิต
ยูนิตสีเขียวหมายความว่าลำดับการเริ่มต้นออกด้วยศูนย์ ไม่ได้หมายความว่าแพ็กเก็ตไปถึงอีกฝั่ง และไม่ได้หมายความว่าตัวแปลงชื่อถูกตั้งค่าอย่างที่คุณตั้งใจ
ส่งคำขอผ่านอุโมงค์และอ่านสถานะที่สร้างมันขึ้นมา
systemctl is-active wg-quick@wg0
wg show wg0 latest-handshakes
ping -c 3 10.63.0.1
resolvectl query internal.example.netการจับมือโดยไม่มีคำตอบยังบอกคุณว่าอุโมงค์ก่อตัวและอีกฝั่งเงียบ ซึ่งเป็นปัญหาที่ต่างจากยูนิตที่ไม่เคยเริ่ม เก็บสถานะยูนิต การจับมือ และผลของคำขอไว้ในบันทึกเดียว เพราะมันล้มเหลวแยกจากกัน และมีเพียงการรวมกันเท่านั้นที่อธิบายระบบ