ใครตอบบนที่อยู่เฉพาะของ VPN จริง ๆ
ที่อยู่ในสรรของคุณไม่ใช่ผู้รับฟัง ต้องตัดสินว่าเกตเวย์ถือครองอยู่หรืออุปกรณ์ต้นทางบนแปลให้ แล้วจึงตรวจสอบตัวตนและนโยบาย
ที่อยู่ที่วางอยู่โดยไม่ถูกใช้ในสรรขององค์กรไม่ใช่ผู้รับฟัง และการเพิ่มลงในไฟร์วอลล์ก็ไม่ได้สร้างขึ้นมา มีบางอย่างต้องสิ้นสุด IKE บนที่อยู่นั้น และกลไกจะต่างกันไปขึ้นอยู่กับว่าเกตเวย์ถือครองที่อยู่เองหรืออุปกรณ์ต้นทางบนเป็นผู้แปล เส้นทางของแพ็กเก็ตคือสิ่งที่แยกสองกรณีนี้ และเป็นตัวกำหนดว่าคุณต้องการคุณสมบัติใดของแพลตฟอร์มก่อนที่ใครจะเปิดคำขอเปลี่ยนแปลง สร้างแบบจำลองเส้นทางก่อน แล้วจึงเลือก
เส้นทางแพ็กเก็ตเบื้องหลังที่อยู่
เพียร์ส่ง IKE ไปยังที่อยู่ที่ได้รับ บน UDP 500 หรือ UDP 4500 เมื่อมีการผ่าน NAT อุปกรณ์ใดก็ตามที่ถือที่อยู่นั้นบนเส้นทางจะรับดาต้าแกรมไว้ในเครื่องและตอบกลับ หรือส่งต่อไปที่อื่น สองอย่างนี้คือความเป็นไปได้ทั้งหมด และทุกอย่างที่เหลือในบทความนี้สืบเนื่องมาจากว่าอย่างไหนเป็นจริง
การรับในเครื่องหมายความว่ามีซ็อกเก็ตบนอุปกรณ์นั้นผูกกับที่อยู่นั้น การส่งต่อไปหมายความว่าดาต้าแกรมถูกเขียนใหม่และส่งต่อไปยังปลายทางอื่นซึ่งเป็นผู้ถือซ็อกเก็ต กฎไฟร์วอลล์ที่อนุญาต UDP 500 ไม่ได้บอกอะไรเลยว่าอย่างไหนกำลังเกิดขึ้น
เขียนบันทึกก่อนแตะสิ่งใด ๆ ที่อยู่ที่เพียร์ติดต่อ วิธีที่เครือข่ายต้นทางบนส่งมอบ อินเทอร์เฟซในเครื่องหรือปลายทางเชิงตรรกะที่รับมัน และกระบวนการที่ตอบ IKE สี่บรรทัด และแต่ละบรรทัดตรวจสอบได้ เมื่อบรรทัดใดไม่ทราบ สิ่งที่ไม่ทราบนั้นคืองานออกแบบ ไม่ใช่รายละเอียดการนำไปใช้ที่ค่อยตัดสินภายหลัง การเติมข้อมูลเหล่านั้นหลังคำขอเปลี่ยนแปลงได้รับอนุมัติคือหนทางที่กฎการแปลจะไปเพิ่มในอุปกรณ์ผิดตัว
แบบจำลอง A: เกตเวย์ถือครองที่อยู่
ในแบบจำลองแรก เกตเวย์ถือที่อยู่เอง ไม่ว่าจะเป็นที่อยู่ทุติยภูมิบนอินเทอร์เฟซที่มีอยู่ ที่อยู่บนอินเทอร์เฟซเฉพาะ หรือ loopback ที่แพลตฟอร์มรองรับเป็นปลายทางของอุโมงค์ สามอย่างนี้เป็นคุณสมบัติที่ต่างกันพร้อมเส้นทางการกำหนดค่าที่ต่างกัน และแพลตฟอร์มที่รองรับอย่างหนึ่งอาจไม่รองรับอย่างอื่น
ยืนยันว่าแพลตฟอร์มและรุ่นที่ใช้รองรับการจัดวางเช่นนี้ก่อนออกแบบโดยอ้างอิงมัน บล็อกที่กำหนดเส้นทางแล้ว ที่อยู่เพิ่มเติมบนอินเทอร์เฟซ และปลายทาง loopback ไม่สามารถใช้แทนกันได้ และเอกสารของรุ่นหนึ่งไม่ได้สัญญาว่ารุ่นถัดไปจะทำงานเหมือนกัน
ip -br addr show ss -lunp | grep -E ':500|:4500' sudo tcpdump -ni eth0 'udp port 500 or udp port 4500'
ซ็อกเก็ตที่กำลังฟังอยู่คือหลักฐาน หากไม่มีสิ่งใดผูกกับที่อยู่ ไม่ว่าเส้นทางจะบอกอย่างไร เกตเวย์ก็ไม่ใช่ผู้สิ้นสุด และการดักจับแพ็กเก็ตจะแสดงดาต้าแกรมที่เข้ามาโดยไม่มีสิ่งใดตอบกลับ
อย่าวางอินเทอร์เฟซที่สองลงในซับเน็ตที่มีอยู่แล้วที่อื่นในโครงสร้างเครือข่าย และอย่าคิดว่าแพลตฟอร์มจะจัดการให้ ซับเน็ตของอินเทอร์เฟซที่ซ้อนทับกันทำให้การเลือกต้นทางกำกวม และบนแพลตฟอร์มจำนวนมากทำให้ปฏิเสธการกำหนดค่าโดยสิ้นเชิง
แบบจำลอง B: อุปกรณ์ต้นทางบนแปลให้
ในแบบจำลองที่สอง ไฟร์วอลล์ต้นทางบนถือที่อยู่เฉพาะและส่งต่อทราฟฟิกไปยังเกตเวย์ VPN อีกตัวหนึ่ง นั่นคือการแปลปลายทางที่มีเส้นทางย้อนกลับ และเป็นการออกแบบที่ใช้ได้อย่างสมบูรณ์ตราบใดที่บันทึกไว้เช่นนั้น
สิ่งที่ไม่ใช่นั้น คือหลักฐานว่าอุปกรณ์ต้นทางบนได้ซ็อกเก็ต VPN ในเครื่องมา การแปลส่งต่อแพ็กเก็ต มันไม่ได้ทำให้กล่องต้นทางบนเป็นผู้ตอบ IKE หากกฎต้นทางบนถูกลบหรือเส้นทางย้อนกลับขาด VPN จะหยุดทั้งที่เกตเวย์แข็งแรงและผู้รับฟังของมันเองยังสมบูรณ์
บันทึกที่อยู่ทั้งสอง ที่อยู่ที่เพียร์ติดต่อและที่อยู่ที่เกตเวย์มองเห็นจริง จากนั้นบันทึกการขนส่งและเส้นทางย้อนกลับ เพราะการแปลที่ใช้ได้กับ UDP 500 แต่ไม่ใช้กับ ESP ที่ห่อหุ้มจะเชื่อมต่อได้แล้วหลังจากนั้นล้มเหลวในการพาทราฟฟิก ซึ่งเป็นความล้มเหลวที่สับสนเมื่อต้องแก้ไขในภายหลัง
ตัวตนไม่ใช่ที่อยู่ภายนอก
IPsec แยกปลายทางของอุโมงค์ออกจากทราฟฟิกที่มันปกป้อง และสถาปัตยกรรมเก็บการตัดสินใจเหล่านั้นไว้ในที่ต่างกัน การเปลี่ยนที่อยู่ที่เพียร์ติดต่อไม่ได้เปลี่ยนพรีฟิกซ์ภายในที่อนุญาต เส้นทางที่ติดตั้ง หรือทรัพยากรที่เซสชันเข้าถึงได้โดยอัตโนมัติ
ตัวตนที่ผ่านการรับรองแยกออกไปอีก IKEv2 บรรทุกเพย์โหลดตัวตนและการแลกเปลี่ยนการรับรองที่ไม่จำเป็นต้องตรงกับที่อยู่แพ็กเก็ตภายนอก และนั่นคือเหตุผลที่การออกแบบที่แปลแล้วยังรับรองได้อย่างถูกต้อง
ความเป็นอิสระนั้นมีประโยชน์และในขณะเดียวกันก็เป็นกับดัก ชื่อ DNS สองชื่อที่แปลงไปยังผู้รับฟังธรรมดาตัวเดียวไม่ได้เลือกแบ็กเอนด์ VPN ที่ต่างกัน และใบรับรองที่ระบุตัวตนหนึ่งจะไม่ทำให้เพียร์ที่คาดหวังอีกตัวพอใจ ยืนยันว่าเพียร์ตรวจสอบอะไรก่อนสันนิษฐานว่าที่อยู่เพียงอย่างเดียวเป็นตัวตัดสิน
ยอมรับการออกแบบด้วยการเฝ้าดูการเชื่อมต่อหนึ่งครั้ง
ตรวจสอบว่าการเชื่อมต่อที่ได้รับอนุญาตใหม่ถูกส่งไปที่ใดจริง ตัวตนใดตอบ และทราฟฟิกส่วนตัวใดได้รับอนุญาตหลังจากนั้น สามการสังเกต สามชั้นที่ต่างกัน และการค้นหาที่อยู่แบบสาธารณะที่สำเร็จไม่ทดสอบสิ่งใดในนั้นเลย
เก็บกรณีปฏิเสธไว้ด้วย เพียร์ที่ไม่ควรได้รับการยอมรับ หรือพรีฟิกซ์ภายในที่ไม่ควรเข้าถึงได้ ซึ่งตรวจสอบหลังการเปลี่ยนแปลง บันทึกที่คุณเขียนไว้ตอนต้นคือสิ่งที่ทำให้การทดสอบนั้นเป็นไปได้โดยไม่ต้องสร้างการออกแบบขึ้นใหม่จากความจำ
จุดมุ่งหมายของทั้งหมดนี้คือให้เจ้าของเครือข่ายเลือกวิธีการจัดสรรที่รองรับ แทนที่จะพึ่งพาข้อกล่าวอ้างทั่วไปว่าไฟร์วอลล์ทุกตัวทำอะไรได้กับที่อยู่เพิ่มเติม ข้อกล่าวอ้างนั้นคือจุดที่การออกแบบเหล่านี้ผิดพลาด เพราะฟังดูน่าเชื่อบนทุกแพลตฟอร์มและโดยทั่วไปไม่จริงบนแพลตฟอร์มใดเลย บันทึกสี่บรรทัดตัดสินเรื่องนี้ให้แพลตฟอร์มของคุณได้ในสิบนาที