ฉันกำลังทำงานบน 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
โหลดไฟร์วอลล์ใหม่และผลลัพธ์ก็เหมือนเดิมâ¦
นี่ทำให้ฉันคลั่ง ไฟร์วอลล์ไม่ควรแตะต้องตารางกฎอื่นนอกจากของตัวเอง แต่นี่ไม่ใช่กรณี!