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

เริ่มจากบันทึกแฮนด์เชกบนแต่ละอุปกรณ์

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

อ่านค่าบนอุปกรณ์เอง เพื่อให้ทุกการสังเกตผูกกับเครื่องที่ระบุได้ เวลาที่คัดลอกมาจากแชทสนับสนุนจะสูญเสียความผูกนั้นและมีค่าน้อยมากในภายหลัง

ยืนยันว่าอุปกรณ์สองเครื่องใช้ตัวตนเดียวกันหรือไม่

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

wg show wg0 public-key
wg show wg0 latest-handshakes
wg show wg0 endpoints
wg show wg0 transfer

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

จัดเตรียมตัวตนที่สองอย่างถูกต้อง

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

umask 077
wg genkey > newdevice.key
wg pubkey < newdevice.key

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

ปลดระวางสำเนาโดยไม่ทำให้ต้นฉบับเสีย

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

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

ทดสอบอุปกรณ์ทั้งสองแยกกันและด้วยกัน

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

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

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