ตัวกรองแพ็คเก็ต nftables ปล่อย 1.0.1

การเปิดตัวตัวกรองแพ็คเก็ต nftables 1.0.1 ได้รับการเผยแพร่แล้ว โดยเป็นการรวมอินเทอร์เฟซการกรองแพ็คเก็ตสำหรับ IPv4, IPv6, ARP และบริดจ์เครือข่าย (มีวัตถุประสงค์เพื่อแทนที่ iptables, ip6table, arptables และ ebtables) การเปลี่ยนแปลงที่จำเป็นสำหรับการเผยแพร่ nftables 1.0.1 จะรวมอยู่ในเคอร์เนล Linux 5.16-rc1

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

กฎการกรองเองและตัวจัดการเฉพาะโปรโตคอลจะถูกคอมไพล์เป็นไบต์โค้ดพื้นที่ผู้ใช้ หลังจากนั้นโค้ดไบต์นี้จะถูกโหลดลงในเคอร์เนลโดยใช้อินเตอร์เฟส Netlink และดำเนินการในเคอร์เนลในเครื่องเสมือนพิเศษที่คล้ายกับ BPF (Berkeley Packet Filters) วิธีการนี้ทำให้สามารถลดขนาดของรหัสการกรองที่ทำงานในระดับเคอร์เนลได้อย่างมาก และย้ายฟังก์ชันทั้งหมดของกฎการแยกวิเคราะห์และตรรกะของการทำงานกับโปรโตคอลไปยังพื้นที่ผู้ใช้

นวัตกรรมหลัก:

  • ลดการใช้หน่วยความจำเมื่อโหลดรายการชุดและแผนที่ขนาดใหญ่
  • การรีโหลดรายการชุดและแผนที่ได้รับการเร่งให้เร็วขึ้น
  • ผลลัพธ์ของตารางและเชนที่เลือกในชุดกฎขนาดใหญ่ได้รับการเร่ง ตัวอย่างเช่น เวลาดำเนินการของคำสั่ง “nft list Ruleset” เพื่อแสดงชุดกฎที่มี 100 แถวคือ 3.049 วินาที และเมื่อส่งออกเฉพาะตาราง nat และตัวกรอง (“nft list table nat”, “nft list table filter ”) ลดลงเหลือ 1.969 และ 0.697 วินาที
  • การดำเนินการค้นหาด้วยตัวเลือก "--terse" ได้รับการเร่งขึ้นเมื่อประมวลผลกฎที่มีรายการชุดและแผนที่ขนาดใหญ่
  • เป็นไปได้ที่จะกรองการรับส่งข้อมูลจากเชน “egress” ซึ่งประมวลผลในระดับเดียวกับตัวจัดการ egress ในเชน netdev (egress hook) เช่น ในขั้นตอนที่ไดรเวอร์ได้รับแพ็กเก็ตจากสแต็กเครือข่ายเคอร์เนล ตาราง netdev filter { chain egress { ประเภทอุปกรณ์กรอง hook egress = { eth0, eth1 } ลำดับความสำคัญ 0; ชุดลำดับความสำคัญเมตา ip แผนที่ saddr { 192.168.10.2 : abcd:2, 192.168.10.3 : abcd:3 } } }
  • อนุญาตให้มีการจับคู่และแก้ไขไบต์ในส่วนหัวและเนื้อหาของแพ็กเก็ตที่ออฟเซ็ตที่กำหนด # nft เพิ่มกฎ xy @ih,32,32 0x14000000 ตัวนับ # nft เพิ่มกฎ xy @ih,32,32 ชุด 0x14000000 ตัวนับ

ที่มา: opennet.ru

เพิ่มความคิดเห็น