บน Linux Centos7 ฉันมีทราฟฟิกที่ถูกกำหนดเส้นทางด้วยเส้นทางคงที่จากอินเทอร์เฟซหนึ่งไปยังอีกอินเทอร์เฟซหนึ่ง
ฉันสังเกตเห็นว่าเมื่อเปิดใช้งานไฟร์วอลล์แล้ว ทั้งสองอินเทอร์เฟซถูกเพิ่มในโซนหนึ่ง และไม่ได้รับอนุญาตในโซนนี้ การรับส่งข้อมูลทั้งหมดจะยังคงกำหนดเส้นทางโดยไม่มีข้อจำกัดใดๆ
ฉันพยายามกำหนดค่า ip_forward=0 : จากนั้นทราฟฟิกจะไม่ถูกกำหนดเส้นทางอีกต่อไป
จากนั้นฉันเพิ่มกฎ FORWARD ใน firewalld direct.xml : การรับส่งข้อมูลถูกกำหนดเส้นทางและกรอง
คำถามของฉันคือ:
- เคอร์เนล ip_forward ตั้งค่าไฟร์วอลล์ "บายพาส" หรือไม่
- เหตุใดจึงมีการอธิบายในฟอรัมต่างๆ ว่า ip_forward จำเป็นต้องกำหนดเส้นทางทราฟฟิกจากอินเทอร์เฟซหนึ่งไปยังอีกอินเทอร์เฟซหนึ่ง หากการใช้ iptable FORWARD ใช้งานได้โดยปิดการตั้งค่านี้
ฉันพบคำอธิบายน้อยมากเกี่ยวกับความสัมพันธ์ระหว่างไฟร์วอลล์และเคอร์เนล ip_forward และฉันต้องการทราบว่าฉันพลาดอะไรที่นี่
แก้ไข : เปิดใช้งานการปลอมตัวบนโซนไฟร์วอลล์
แก้ไข 2 : ฉันทำการทดสอบอื่น ๆ และดูเหมือนว่านี่จะไม่เกี่ยวกับการตั้งค่า ip_filter แต่เป็นการปลอมตัว ฉันถูกหลอกโดยข้อเท็จจริงที่ว่า "firewall-cmd --reload" บังคับให้ ip_forward เป็น 1
นี่คือวิธีการทำซ้ำกรณีของฉัน:
ระบบปฏิบัติการ Centos7 ใหม่ การกำหนดค่าสองอินเทอร์เฟซ eth1 และ eth2 พร้อมที่อยู่ IP X และ Y
-----------------> @X CENTOS @Y -----------------> @Z -------
dst_IP = ก dst_IP = ก
src_IP = B dst_IP = B
แก้ไข /etc/firewalld/zones/TEST.xml เพิ่มสองอินเทอร์เฟซ เปิดใช้งานการปลอมตัว
เพิ่มเส้นทางดังต่อไปนี้:
เกตเวย์ปลายทาง GenMask
อาแซด 255.255.255.255
จากนั้นเปิดใช้งาน ip ส่งต่อและปิดใช้งาน rp_filter :
sysctl net.ipv4.ip_forward=1
sysctl net.ipv4.conf.eth1.rp_filter=2
sysctl net.ipv4.conf.eth2.rp_filter=2
ในการตั้งค่านี้ paquets จะถูกถ่ายโอนไปยัง @Z แต่ไม่มีกฎในไฟร์วอลล์ที่กำหนดค่าให้ยอมรับ และฉันไม่เข้าใจว่าทำไม