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

สองพอร์ต สองหน้าที่

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

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

ทำไม 4500 จึงมีอยู่

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

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

พอร์ตต้นทางเปลี่ยนที่ใด

ตัวแปลอาจเขียนพอร์ตต้นทางของไคลเอนต์ใหม่ ทูเพิลที่เห็นบนเซิร์ฟเวอร์จึงไม่ตรงกับทูเพิลบนไคลเอนต์ ดูทั้งสองด้านของทุกฮอป NAT ก่อนสรุปว่ากฎถูกเพิกเฉย การแก้ปัญหาบนไคลเอนต์อย่างเดียวอาจให้กฎที่ดูถูกต้องแต่ยังล้มเหลว

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

ตรวจสอบทั้งสองโฟลว์ที่ทุกขอบเขต

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

sudo swanctl --list-sas
sudo tcpdump -ni any 'udp port 500 or udp port 4500'
sudo iptables -S | grep -E '500|4500|esp'
ip xfrm state

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

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

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