ความล้มเหลวของ WireGuard ที่ประกอบเองส่วนใหญ่มาจบที่คำถามว่ากุญแจดอกไหนไปอยู่ที่ไหน ส่วนอินเทอร์เฟซเก็บกุญแจส่วนตัวของอุปกรณ์ที่คุณกำลังตั้งค่า ขณะที่ส่วนเพื่อนร่วมเครือข่ายเก็บกุญแจสาธารณะของเครื่องที่อยู่อีกด้าน การสลับสองครึ่งนี้หรือวางผิดดอกจะทำให้เกิดแฮนด์เชกที่ไม่เคยเสร็จสิ้นและบันทึกที่ไม่เคยระบุชื่อกุญแจเลย ทำการตรวจสอบทั้งสี่ข้อด้านล่างตามลำดับก่อนจะแตะ AllowedIPs หรือ DNS

สองกุญแจ สองทิศทาง

กุญแจส่วนตัวเป็นของอุปกรณ์เพียงเครื่องเดียวและอยู่ในส่วนอินเทอร์เฟซของเครื่องนั้น ครึ่งสาธารณะของมันคือสิ่งที่เพื่อนร่วมเครือข่ายทุกตัวต้องใช้เพื่อจดจำอุปกรณ์ และเครื่องมือจะสืบทอดค่านี้แทนที่จะคิดขึ้นมาเอง บนเซิร์ฟเวอร์ กุญแจสาธารณะของอุปกรณ์คุณปรากฏเป็นรายการเพื่อนร่วมเครือข่าย บนอุปกรณ์คุณ กุญแจสาธารณะของเซิร์ฟเวอร์ทำหน้าที่นั้น การอ่านไฟล์ตั้งค่าออกเสียงด้วยศัพท์เหล่านี้จะจับความสับสนส่วนใหญ่ได้ก่อนจะไปถึงแฮนด์เชก

คำสั่ง wg พิมพ์สิ่งที่อินเทอร์เฟซภายในใช้จริง รวมทั้งกุญแจสาธารณะทั้งสองดอก จึงเป็นวิธีที่เร็วที่สุดในการแยกข้อผิดพลาดด้านการตั้งค่าออกจากปัญหาการเชื่อมต่อ:

wg show
wg show interfaces

ผลลัพธ์แรกจะแสดงรายการเพื่อนร่วมเครือข่ายแต่ละตัวพร้อมกุญแจสาธารณะ จุดปลายทางที่ใช้ล่าสุด และอายุของแฮนด์เชกล่าสุด อายุแฮนด์เชกแบบ «ไม่เคย» ที่ด้านหนึ่งและเพิ่งเกิดอีกด้านชี้ถึงกุญแจที่เพียงปลายเดียวตอบรับ คำสั่งที่สองระบุชื่ออินเทอร์เฟซที่คุณตรวจสอบต่อได้

อะไรควรแบ่งปันและอะไรไม่ควรแบ่งปันเลย

กุญแจสาธารณะถูกออกแบบมาให้ส่งต่อ แม้จะยังระบุความสัมพันธ์ของอุปกรณ์อยู่ จึงต่างจากการส่งให้ผู้ดูแลที่ขอมากับการเผยแพร่ ส่วนกุญแจส่วนตัวไม่เคยออกจากอุปกรณ์ที่สร้างมันขึ้นมา โปรไฟล์ที่ส่งออกหรือคิวอาร์โค้ดเก็บการตั้งค่าทั้งหมดรวมถึงกุญแจส่วนตัวนั้น ดังนั้นทั้งสองจึงไม่ปลอดภัยที่จะส่งต่อ และการซ่อนข้อความไว้ในภาพก็ไม่ได้เปลี่ยนอะไร กุญแจที่แชร์ล่วงหน้าเป็นทางเลือกและเป็นความลับเท่ากัน ทั้งสองฝั่งต้องมีค่าเดียวกัน ไม่อย่างนั้นแฮนด์เชกจะหยุดที่ขั้นนั้น

ความต่างอีกข้อควรพูดให้ชัด จุดปลายทางคือที่อยู่และพอร์ต ไม่ใช่กุญแจเลย การวางกุญแจสาธารณะในช่องจุดปลายทาง หรือวางที่อยู่ในช่องกุญแจ จะได้โปรไฟล์ที่แยกวิเคราะห์ได้แล้วก็ไม่ทำอะไร เครื่องมือจะจับไม่ได้เพราะทั้งสองช่องเป็นเพียงสตริง คู่มือเริ่มต้นอย่างเร็วของ WireGuard แสดงสายการสร้างและสืบทอดในบรรทัดเดียว

หนึ่งอุปกรณ์ หนึ่งรายการเพื่อนร่วมเครือข่าย

ในที่ที่บริการอนุญาต แต่ละอุปกรณ์ควรมีตัวตนเพื่อนร่วมเครือข่ายของตัวเอง การวางโปรไฟล์ทั้งชุดของแล็ปท็อปลงในโทรศัพท์จะทำให้ไม่ชัดว่าเครื่องไหนถือตัวตนนั้นบนเซิร์ฟเวอร์ และทำให้การเพิกถอนโทรศัพท์ที่หายไปเครื่องเดียวทำได้ยากขึ้น หากกุญแจส่วนตัวรั่วไหล ให้ถอนสิทธิ์เพื่อนร่วมเครือข่ายเดิมบนเซิร์ฟเวอร์และจัดหาตัวแทน การลบไฟล์ในเครื่องไม่ได้ลบรายการบนเซิร์ฟเวอร์ และกุญแจไคลเอนต์ใหม่ไม่ช่วยใครจนกว่าเซิร์ฟเวอร์จะรู้ครึ่งสาธารณะของมัน

เก็บบันทึกการจับคู่อุปกรณ์กับกุญแจสาธารณะไว้ข้างรายการที่อยู่ การเพิกถอนจะเป็นงานสองนาทีแทนที่จะเป็นครึ่งวันก็เพราะรายการนั้น

สิ่งที่ยังล้มเหลวหลังแฮนด์เชก

คู่กุญแจใช้ระบุเพื่อนร่วมเครือข่าย ไม่ได้กำหนดพฤติกรรมของเครือข่าย AllowedIPs เชื่อมช่วงที่อยู่กับเพื่อนร่วมเครือข่าย ส่วนเส้นทางรอบ ๆ นั้นไคลเอนต์หรือเครื่องมือตั้งค่าเป็นผู้จัดการ อาการมักบอกว่าควรเปิดชั้นไหนต่อ:

What you seeWhich key problem it usually meansWhere to look first
Handshake age stays at never on both endsPeer public key missing, or an endpoint pointing at nothingwg show, then the endpoint value
Handshake completes on one side onlyThe two ends hold different public keys for each otherwg show on both hosts
Handshake works, then no trafficAllowedIPs or routes rather than keyswg show and the route table
Worked until a key was regeneratedThe peer entry still holds the old public keyCompare both public keys, then update the peer

DNS อาจล้มเหลวหลังจากทั้งสองฝั่งยืนยันตัวตนถูกต้องแล้ว และแอปพลิเคชันอาจล้มเหลวขณะที่อุโมงค์เองยังปกติ ดังนั้นแฮนด์เชกที่ทำงานได้จึงไม่ใช่จุดจบของการวินิจฉัย กุญแจไม่ได้บอกอะไรเกี่ยวกับวิธีบันทึกเหตุการณ์ของผู้ให้บริการ หรือว่าเว็บไซต์ใดรู้จักบัญชีของคุณ และคำถามเหล่านั้นเป็นเรื่องที่อื่น เมื่อการตรวจสอบทั้งสี่ผ่านแล้วให้ไปที่ชั้นเครือข่าย เพราะกุญแจที่หายไปไม่ใช่ปัญหาเส้นทางที่ปลอมตัว

บทความที่เกี่ยวข้อง