แฮนด์เชคของ WireGuard สำเร็จ แต่ไม่มีคำตอบกลับมา
แฮนด์เชคล่าสุดพิสูจน์ว่าคีย์ทำงานได้ ติดตามที่อยู่ภายในหนึ่งแห่งและอ่านตัวนับการรับส่งก่อนโทษอุโมงค์ เฟิร์มแวร์ หรือคีย์
แฮนด์เชคล่าสุดเป็นข่าวดี และเป็นการกล่าวอ้างที่เล็กกว่าประโยคที่ผู้คนอยากเขียนมาก ทั้งสองฝ่ายแลกเปลี่ยนข้อความแฮนด์เชคที่ผ่านการรับรองความถูกต้อง แพ็กเก็ตของแอปพลิเคชันยังต้องไปถึงปลายทางภายในและกลับมา
ช่องว่างระหว่างระนาบควบคุมที่แข็งแรงกับระนาบข้อมูลที่เงียบงันคือหัวข้อทั้งหมดตรงนี้ การอ่านค่าตัวนับชุดเดียวกันสองครั้งบอกคุณว่าคุณอยู่ฝั่งไหน
แฮนด์เชคพิสูจน์คีย์ ไม่ใช่การส่งถึง
แฮนด์เชคของ WireGuard คือข้อตกลงเรื่องคีย์พร้อมการพิสูจน์ตัวตน มันสำเร็จทันทีที่ทั้งสองฝ่ายเข้าถึงกันได้และมีคีย์ที่ใช้ได้ การกำหนดเส้นทาง นโยบายไฟร์วอลล์ และปลายทางเองคือ คำถามที่แฮนด์เชคไม่เคยถาม
อุโมงค์จึงอาจถูกสร้างเสร็จสมบูรณ์ในขณะที่ทุกแพ็กเก็ตภายในถูกทิ้ง แพ็กเก็ตภายในที่กำหนดเส้นทางผิดกับคำตอบที่ไปอีกเส้นทางหนึ่งดูเหมือนกันเมื่อมองจากฝั่งไคลเอนต์
ที่อยู่ภายในเพียงแห่งเดียวคือการทดสอบทั้งหมด
เลือกปลายทางหนึ่งแห่งแล้วอยู่กับมัน ที่อยู่ tunnel ของอีกฝั่งเองเป็นกรณีที่ง่ายที่สุด และโฮสต์ที่อยู่ข้างหลังเพิ่มการกระโดดหนึ่งครั้งพอดี การสลับระหว่างทั้งสองโดยไม่บันทึกการเปลี่ยนแปลงให้ผลลัพธ์ที่ไม่มีใครเปรียบเทียบได้
จากนั้นดูเส้นทางที่ไคลเอนต์เลือก เส้นทางท้องถิ่นที่เฉพาะเจาะจงกว่าอาจส่งแพ็กเก็ตไปที่อื่นก่อนที่ WireGuard จะถูกถามเลยด้วยซ้ำ และสิ่งนี้เกิดขึ้นทุกครั้งที่ LAN ที่บ้านทับซ้อนกับช่วงระยะไกล
ip route get 10.30.8.10
ip -4 addr show wg0
ip route show table all | grep -w wg0
ที่อยู่ที่แปลงไปยังอินเทอร์เฟซกายภาพได้ตอบคำถามไปแล้ว อุโมงค์ไม่ได้ทิ้งอะไรเลย แพ็กเก็ตไม่เคยเข้าไปข้างใน
ตัวนับคือหลักฐาน ไม่ใช่คำตัดสิน
wg show รายงานไบต์ที่ส่งและรับต่อฝั่ง และตัวเลขสองตัวนั้นเคลื่อนที่อย่างเป็นอิสระ อ่านค่าหนึ่งครั้ง ทำคำขอที่ได้รับอนุญาตหนึ่งครั้ง แล้วอ่านอีกครั้งภายในนาทีเดียวกัน
wg show wg0 transfer
wg show wg0 latest-handshakes
ping -c 4 10.30.8.10
wg show wg0 transfer
การส่งที่เพิ่มขึ้นในขณะที่การรับคงที่คือลายเซ็นของคำขอที่ไม่ได้รับคำตอบ มันไม่ได้บอกว่าคำขอถูกกรอง ปลายทางดับ หรือคำตอบออกไปอีกเส้นทางหนึ่ง สิ่งเหล่านี้คือการสอบสวนสามอย่างที่มีอาการเดียว แยกมันออกจากกันก่อนเปลี่ยนการกำหนดค่าใดๆ
จำนวนไบต์ที่คงที่ก็ไม่ใช่เกณฑ์ความสำเร็จ ค่าตัวนับเป็นไปตามทราฟฟิก และการถือว่าตัวเลขหนึ่งเป็นหลักฐานของสุขภาพที่ดีก่อให้เกิดความไร้สาระที่มั่นใจ
อีกฝั่งตรวจสอบแพ็กเก็ตขากลับด้วยตัวเอง
ฝั่งไกลยอมรับแพ็กเก็ตภายในเฉพาะเมื่อต้นทางอยู่ใน allowedips ของฝั่งนั้นเท่านั้น เส้นทางที่มีอยู่ที่ผู้ส่งไม่เพียงพอ การไม่มีรายการต้นทางที่ผู้รับจะทิ้งทราฟฟิกขากลับอย่างเงียบๆ
ไฟร์วอลล์ของโฮสต์อยู่เบื้องหลังการตรวจสอบนั้น กฎการส่งต่อที่อนุญาตอินเทอร์เฟซอุโมงค์แต่ไม่อนุญาตซับเน็ตภายในจะยอมรับแฮนด์เชคและปฏิเสธแพ็กเก็ต จากฝั่งไคลเอนต์สิ่งนั้นดูเหมือนอีกฝั่งที่ตายแล้วพอดี โฮสต์ที่มีสองอินเทอร์เฟซยังตอบจากต้นทางผิดได้ และฝั่งนั้นก็ทิ้งคำตอบที่ไม่เคยคาดไว้
รักษาการทดลองให้ซื่อสัตย์
การทดสอบโปรไฟล์การเข้าถึงระยะไกลจากเครือข่ายบ้านเดียวกันกับที่มันควรไปถึงนั้นเป็นการฝึกเส้นทางที่ต่างจากที่ตั้งใจ ย้ายไปเครือข่ายภายนอกและบันทึกคำนำหน้าท้องถิ่นของมัน เพื่อให้การรันทั้งสองเปรียบเทียบกันได้
การแลกเปลี่ยนเล็กๆ ที่สำเร็จก็ไม่ได้ตัดปัญหาของเส้นทางทั้งหมดออก แพ็กเก็ตที่ใหญ่กว่าอาจล้มเหลวในที่ที่แพ็กเก็ตเล็กผ่านได้ และตัวกรองที่ตรงกับขนาดหรือโปรโตคอลอาจทำงานต่างออกไปภายใต้ภาระ
เก็บแฮนด์เชคไว้เป็นขั้นตอนที่รู้ว่าทำงานได้แล้วก้าวต่อไปจากตรงนั้น หลักฐานที่มีประโยชน์ถัดไปคือคำขอภายในหนึ่งหยุดที่ใด ไม่ใช่ชุดคีย์ใหม่และการเดาอีกรอบ