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

การจับคู่ตามชื่อมีอายุยาวกว่าอินเทอร์เฟซ

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

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

อ่านเชนก่อนเพิ่มกฎ

ดูว่าชุดกฎมีอะไรอยู่ตอนนี้และกฎใหม่จะอยู่ตรงไหน เพราะลำดับเป็นตัวตัดสินผลลัพธ์

nft list ruleset
nft -c -f /etc/nftables.conf

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

เส้นทาง การแปล และโฟลว์มีเจ้าของอื่น

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

conntrack -L -s 10.20.0.0/24 | head
ip route show dev vpn0

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

ยอมรับการเริ่มแบบเย็น การสูญเสีย และการกู้คืน

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

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

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