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

ตำนาน: คำขอที่เกิดซ้ำพิสูจน์การสูญหายบนลิงก์เดียว

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

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

การส่งซ้ำบอกอะไรคุณจริง ๆ

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

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

ผลในทางปฏิบัติคือบันทึกการแลกเปลี่ยนก่อนสรุป เขียนที่อยู่รับภายในเครื่อง เส้นทางคำตอบที่โยบายเลือก ทูเพิลของคู่ และตัวระบุการแลกเปลี่ยนไว้ที่เดียว เพราะแต่ละอย่างตอบคำถามคนละข้อเมื่ออ่านบันทึกภายหลัง

จุดสังเกตสี่จุดเป็นห่วงโซ่เดียว

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

ตำแหน่งหลักฐานที่ให้ได้สิ่งที่ปล่อยไว้
ผู้เริ่มส่งคำขอออกจากโฮสต์นี้ไปถึงคู่หรือไม่
ผู้ตอบรับคำขอมาถึงสร้างคำตอบหรือไม่
ผู้ตอบส่งคำตอบออกจากเกตเวย์ไปตามเส้นทางที่ตั้งใจหรือไม่
ผู้เริ่มรับการแลกเปลี่ยนเสร็จสิ้นนโยบายยอมรับผลหรือไม่

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

หาการเปลี่ยนผ่านแรกที่หายไป

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

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

tcpdump -ni any -vv 'udp port 500 or udp port 4500'

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

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

รายงานที่มีประโยชน์บอกอะไร

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

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

ตำนานคือสำเนาหนึ่งพิสูจน์ว่าผู้ให้บริการผิด ความจริงคือสำเนาหนึ่งพิสูจน์ว่าตัวจับเวลาหมดอายุ และคำตอบอยู่ในเส้นทางของคำตอบ

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