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

อาการบอกอะไรกับคุณจริง ๆ

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

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

อย่าเริ่มด้วยการติดตั้งแพ็กเกจใหม่

อ่านเครื่องมือรักษาสถานะก่อนใช้

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

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

บันทึกอย่างตั้งใจ หลังจากอ่านสิ่งที่โหลดอยู่แล้ว

ตัดสินว่าอะไรควรอยู่รอด

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

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

คำตอบตัดสินโดยนโยบาย ไม่ใช่แพ็กเกจ

ตรวจลำดับการคืนค่า

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

systemctl status netfilter-persistent
iptables -S

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

ลำดับเป็นคุณสมบัติของระบบที่กำลังทำงาน ไม่ใช่ของไฟล์บนดิสก์

ยอมรับผลลัพธ์สามอย่างแยกกัน

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

nft list ruleset

จากนั้นทดสอบการกระทำที่ได้รับอนุญาตและการปฏิเสธที่จำเป็น

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

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