Score:2

iptables ถูกล้างเมื่อโหลดไฟร์วอลล์

ธง br

ฉันกำลังทำงานบน Rocky Linux (ใช้ RHEL8) และค่อนข้างลำบากกับ firewalld และ iptables ยังไงก็ไม่ใช่ iptables อยู่ดี ให้ฉันอธิบาย

ฉันตั้งค่าคลัสเตอร์ K8S บน VMWare ESXi ด้วยเครื่องเสมือนหกเครื่อง เหมือนกันทั้งหมด ฉัน ความต้องการ เพื่อให้ไฟร์วอลล์ทำงานโดยพิจารณาจากสภาพแวดล้อมนี้ ฉันใช้ Weave CNI ซึ่งใช้ iptables เพื่อสร้างกฎเครือข่าย

นี่คือการค้นพบครั้งแรกของฉัน:

  • บนภาชนะนักเทียบท่าแบบสาน และ ใช้โฮสต์ VM, iptables ที่มีแบ็กเอนด์ nf_tables
    • สิ่งนี้ได้รับการยืนยันโดย iptables -V ผลลัพธ์ที่ให้ฉัน iptables v1.8.4 (nf_tables)
  • firewalld ได้รับการตั้งค่าให้ใช้ nftables เป็นแบ็กเอนด์ (ไฟร์วอลล์แบ็กเอนด์)
  • บริการ iptables ไม่มีอยู่จริง (ไม่พบ iptables.service)
  • โหลดบริการ nftables แต่ไม่ได้ใช้งาน
  • บริการ firewalld กำลังทำงานอยู่
  • ถ้าฉันเริ่มบริการ nftables บริการ firewalld จะหยุดทำงาน และในทางกลับกัน

ตามความเข้าใจของฉันเกี่ยวกับ firewalld เนื่องจากมันใช้ nftables จึงไม่ควรล้าง iptables เลยตามที่พวกเขา โพสต์บล็อก เกี่ยวกับแบ็กเอนด์ nftables

เมื่อ weave ตั้งกฎ iptables (สำหรับการกำหนดเส้นทางและนโยบายเครือข่าย) ฉันสามารถดูได้ด้วย iptables-บันทึก หรือ ชุดกฎรายการ nft. ซึ่งหมายความว่า แม้ว่า weave จะใช้ iptables เพื่อตั้งกฎ แต่ความจริงแล้ว พวกมันถูกตั้งค่าเป็น nftable

ตอนนี้ปัญหาของฉันคือถ้าฉันโหลดไฟร์วอลล์ใหม่ (ด้วย ไฟร์วอลล์ cmd --reload หรือ systemctl โหลด firewalld.service ใหม่) หลังจากสานตั้งกฎ กฎทั้งหมดถูกล้าง! ฉันสามารถยืนยันได้ว่า iptables-บันทึก หรือ ชุดกฎรายการ nft.

อาจเกี่ยวข้องกับการใช้ iptables คำสั่งแทน เอ็นเอฟที? แม้ว่า iptables จะใช้แบ็กเอนด์ nf_tables ก็ตาม

โปรดทราบว่าปัญหานี้ได้รับการแก้ไขบางส่วนโดยการสาน เนื่องจากกฎเหล่านี้ตรวจสอบกฎเพื่อดูว่ายังมีสายโซ่พิเศษ (ว่าง) ของ WEAVE-CANARY อยู่หรือไม่ หากไม่มี ระบบจะสร้างเส้นทางการกำหนดเส้นทางใหม่ แต่ไม่มีการดำเนินการใดๆ สำหรับกฎนโยบายเครือข่าย ปัจจุบันนี้ก คำขอคุณสมบัติ.

ทางออกที่เป็นไปได้คืออะไร? ฉันคิดเกี่ยวกับการเชื่อมต่อกับบริการ firewalld เพื่อเพิ่ม ExecStopPre และ ExecReloadPre เพื่อบันทึกกฎอื่นๆ นอกเหนือจากกฎของไฟร์วอลล์ /etc/sysconfig/nftables.conf (หรือไฟล์อื่นที่รวมอยู่ในนั้น) แต่มันค่อนข้างแฮ็กและฉันก็ไม่ชอบ “โซลูชัน” นี้ นอกจากนี้ ฉันไม่แน่ใจด้วยซ้ำว่าจะได้ผล เนื่องจากบริการ nftables หยุดทำงาน

แก้ไข: ฉันทำการทดสอบและพฤติกรรมบางอย่างแปลกจริงๆ

ฉันเพิ่มกฎด้วย iptables: iptables -I อินพุต 3 -s 10.1.1.9 -j DROPจากนั้นโหลดไฟร์วอลล์ใหม่และกฎก็ไม่มีอีกต่อไป! ฉันพยายามเช่นเดียวกันกับ เอ็นเอฟที: nft เพิ่มกฎตัวกรอง ip INPUT ip saddr 10.1.1.9 dropโหลดไฟร์วอลล์ใหม่และผลลัพธ์ก็เหมือนเดิมâ¦

นี่ทำให้ฉันคลั่ง ไฟร์วอลล์ไม่ควรแตะต้องตารางกฎอื่นนอกจากของตัวเอง แต่นี่ไม่ใช่กรณี!

A.B avatar
cl flag
A.B
หาก firewalld ใช้ nftables เป็นแบ็กเอนด์จริง ๆ ควรใช้งานได้เฉพาะกับตาราง firewalld: https://firewalld.org/2018/07/nftables-backend#only-flush-firewallds-rules มีตารางไฟร์วอลล์หรือไม่?
A.B avatar
cl flag
A.B
ดูคำถาม / คำตอบนี้ด้วย: https://serverfault.com/questions/1046179/rhel-centos-now-to-add-nftable-rules-to-firewalld-on-system-boot (หมายเหตุของฉันเกี่ยวกับบริการ nftables ล้างทั้งหมด)
br flag
@A.B แน่นอนมีตารางไฟร์วอลล์และ FirewallBackend ถูกตั้งค่าเป็น nftables ใน firewalld config ตามที่ระบุไว้ในโพสต์ของฉัน นั่นเป็นเหตุผลที่ทำให้ฉันคลั่งไคล้ ^^' ได้เห็นและอ่านคำถาม/คำตอบที่คุณชี้แล้ว แต่ฉันไม่คิดว่าจะช่วยแก้ปัญหาได้ เนื่องจากบริการ nftables ไม่ทำงานเลย (เนื่องจากบริการไฟร์วอลล์ทำงานอยู่) ที่จริงแล้ว แนวคิดในการเชื่อมต่อกับบริการ firewalld ได้รับแรงบันดาลใจอย่างมากจากคำตอบของคุณ อย่างไรก็ตาม ฉันได้ทดสอบเพื่อเพิ่มกฎบางอย่างใน /etc/sysconfig/nftables.conf และโหลดไฟร์วอลล์ใหม่อีกครั้ง แต่ฉันไม่เห็นกฎเหล่านั้น ดังนั้นมันจึงไม่ใช่วิธีแก้ปัญหาที่ใช้งานได้ ฉันรู้สึกติดขัดนิดหน่อย
br flag
@เอ.บี. เพื่อความชัดเจนนี่คือตารางที่ฉันมี rn: ตัวกรอง ip, ตัวกรอง ip6, ตัวกรองบริดจ์, ความปลอดภัยของ ip, ip raw, ip mangle, ip nat, ความปลอดภัย ip6, ip6 raw, ip6 mangle, ip6 nat, บริดจ์ nat, inet firewalld, ไฟร์วอลล์ ip, ไฟร์วอลล์ ip6 Weave กำลังเพิ่มกฎในตัวกรอง ip, ip mangle และ ip nat ในการรีโหลด/รีสตาร์ทไฟร์วอลล์ ตารางเหล่านั้นจะถูกล้าง
A.B avatar
cl flag
A.B
เมื่อเริ่มต้น/หยุด/โหลดซ้ำของไฟร์วอลล์ กฎ nftables ในตารางอื่นที่ไม่ใช่ iptables ที่เข้ากันได้หรือไฟร์วอลล์จะถูกรักษาไว้ แต่กฎของ iptables นั้นไม่เป็นเช่นนั้น ดังนั้นบล็อกที่ฉันเชื่อมโยงไปดูเหมือนจะผิด
A.B avatar
cl flag
A.B
โปรดทราบว่าไฟร์วอลล์ที่มีแบ็กเอนด์ nftables ยังคงสามารถใช้ iptables: กับกฎโดยตรงได้ นั่นอาจเป็นเหตุผลที่ iptables ยังคงล้างอยู่ ตอนนี้เพื่อค้นหาว่าสิ่งนี้ถูกบันทึกไว้ที่ไหนหากเป็น ...
br flag
อนิจจามันเป็นบล็อก firewalld อย่างเป็นทางการ ... ฉันคิดว่าฉันควรยื่นเรื่องเกี่ยวกับ GitHub ของพวกเขาดีกว่า! ขอบคุณสำหรับความช่วยเหลือ btw :)
Score:2
ธง br

แหล่งที่มา: GitHub ออกคำตอบจากผู้ทำงานร่วมกันของไฟร์วอลล์

มีสองสามสิ่งที่เกิดขึ้นที่นี่

  • ตัวแปร nft ของ iptables จะเพิ่มกฎให้ nftable ในตารางที่รู้จัก: กรอง, แนท, ดิบฯลฯ
  • ไฟร์วอลล์จะล้างข้อมูลทั้งหมดเสมอ iptables กฎ (เช่น ตัวกรอง iptables -F -t) ซึ่งล้างสายโซ่ทั้งหมดใน กรอง ตาราง. ซึ่งสอดคล้องกับที่ทราบ nftable ชื่อตารางดังกล่าวข้างต้น

ไฟร์วอลล์ของ nftable แบ็กเอนด์ เท่านั้น สัมผัส ไฟร์วอลล์ โต๊ะแต่โต๊ะ กรอง, แนท, ดิบฯลฯ ถูกสัมผัสทางอ้อมผ่าน iptables-nft เพื่อรองรับกฎโดยตรงของ iptables ลักษณะการทำงานนี้ไม่สามารถเปลี่ยนแปลงได้เนื่องจากความเข้ากันได้ Firewalld จะไม่แตะต้องผู้อื่น nftable แม้ว่าตารางเช่น ตารางชื่อ ฟูบาร์ จะได้ไม่หน้าแดง

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

โพสต์คำตอบ

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