ไคลเอนต์สองรายหลังเราเตอร์เดียวกันคุยกับเกตเวย์ IPsec หนึ่งตัว และรายหนึ่งหลุดบ่อยในขณะที่อีกรายยังเชื่อมต่ออยู่ ESP ดั้งเดิมคือโปรโตคอล IP หมายเลข 50 ที่ไม่มีพอร์ต เมื่อไคลเอนต์หลายรายใช้ที่อยู่เดียวกัน ตัวแปลจึงไม่มีอะไรให้ผูกการแมป NAT traversal ปิดช่องว่างนี้ด้วยการห่อ ESP ไว้ใน UDP ที่ 4500 และส่วนหัวนั้นอธิบายอาการส่วนใหญ่ที่ตามมา มันยังชี้ไปที่อุปกรณ์ที่ต้องเปลี่ยนด้วย

ทำไมระนาบข้อมูลจึงย้ายไปพอร์ต 4500

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

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

ตรวจสอบสองขั้นตอนตามลำดับ

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

เฝ้าดูทั้งสองพอร์ตด้วย tcpdump -ni any 'udp port 500 or udp port 4500' และอ่านตารางการแปลบนเราเตอร์ขณะเซสชันยังทำงานอยู่ ตารางนั้นแสดงพอร์ตต้นทางที่เกตเวย์จะเห็นจริง และแคปเจอร์บนแล็ปท็อปแตกต่างโดยการออกแบบ: แล็ปท็อปเชื่อว่าเป็น 500 ขณะที่เกตเวย์เห็น 4500 พร้อมพอร์ตต้นทางที่แปลแล้ว และทั้งสองถูกต้อง โฟลว์เดียวกัน ก่อนและหลังการแปล:

client 192.0.2.10:500 -> router 203.0.113.7:62000 -> gateway 198.51.100.9:4500

อาการที่การห่ออธิบาย และอีกสองอย่างที่ไม่อธิบาย

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

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

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

เปลี่ยนเจ้าของการแมป แล้วทดสอบใหม่

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

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

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