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

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

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

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

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

  • เพิ่มความสามารถในการย้ายการประมวลผล flowtable ไปยังฝั่งอะแดปเตอร์เครือข่าย ซึ่งเปิดใช้งานได้โดยใช้แฟล็ก 'offload' Flowtable เป็นกลไกสำหรับการปรับเส้นทางการส่งต่อแพ็กเก็ตให้เหมาะสมที่สุด ซึ่งการข้ามผ่านแบบเต็มของเชนการประมวลผลกฎทั้งหมดจะถูกนำไปใช้กับแพ็กเก็ตแรกเท่านั้น และแพ็กเก็ตอื่นๆ ทั้งหมดในโฟลว์จะถูกส่งต่อโดยตรง table ip global { flowtable f { hook ingress priority filter + 1 devices = { lan3, lan0, wan } flags offload } chain forward { type filter hook forward priority filter; policy accept; ip protocol { tcp, udp } flow add @f } chain post { type nat hook postrouting priority filter; policy accept; oifname "wan" masquerade } }
  • เพิ่มการรองรับการแนบแฟล็กเจ้าของเข้ากับตาราง ซึ่งจะช่วยให้มั่นใจว่ากระบวนการจะใช้ตารางนั้นอย่างเฉพาะเจาะจง เมื่อกระบวนการสิ้นสุด ตารางที่เกี่ยวข้องจะถูกลบโดยอัตโนมัติ ข้อมูลกระบวนการจะแสดงในกฎ dump เป็นความคิดเห็น: table ip x { # progname nft flags owner chain y { type filter hook input priority filter; policy accept; counter packets 1 bytes 309 } }
  • เพิ่มการรองรับข้อกำหนด IEEE 802.1ad (VLAN stacking หรือ QinQ) ซึ่งกำหนดวิธีการแทนที่แท็ก VLAN หลายรายการลงในเฟรม Ethernet เดียว ตัวอย่างเช่น หากต้องการตรวจสอบเฟรม Ethernet ภายนอกประเภท 8021ad และ vlan id=342 คุณสามารถใช้โครงสร้าง ... ether ประเภท 802.1ad vlan id 342 เพื่อตรวจสอบเฟรม Ethernet ภายนอกประเภท 8021ad/vlan id=1, 802.1q/vlan id=2 ซ้อนกัน และห่อหุ้มแพ็กเก็ต IP เพิ่มเติม: ... ether ประเภท 8021ad vlan id 1 vlan ประเภท 8021q vlan id 2 vlan ประเภท ip counter
  • เพิ่มการรองรับการจัดการทรัพยากรโดยใช้ลำดับชั้น cgroups v2 แบบรวม ความแตกต่างที่สำคัญระหว่าง cgroups v2 และ v1 คือการใช้ลำดับชั้น cgroups ร่วมกันสำหรับทรัพยากรทุกประเภท แทนที่จะใช้ลำดับชั้นแยกต่างหากสำหรับการจัดสรรทรัพยากร CPU การจัดการหน่วยความจำ และ I/O ตัวอย่างเช่น หากต้องการตรวจสอบว่าบรรพบุรุษของซ็อกเก็ตที่ระดับแรกของ cgroupv2 ตรงกับมาสก์ "system.slice" หรือไม่ คุณสามารถใช้โครงสร้างต่อไปนี้: ... ซ็อกเก็ต cgroupv2 ระดับ 1 "system.slice"
  • เพิ่มความสามารถในการตรวจสอบส่วนประกอบของแพ็กเก็ต SCTP (ฟังก์ชันที่จำเป็นสำหรับการใช้งานจะปรากฏในเคอร์เนล) Linux 5.14) ตัวอย่างเช่น ในการตรวจสอบว่าแพ็กเก็ตมีชิ้นส่วนข้อมูลที่มีประเภท 'data' และฟิลด์ 'type' หรือไม่: … sctp chunk data exists … sctp chunk data type 0
  • ความเร็วในการโหลดกฎโดยใช้แฟล็ก "-f" เพิ่มขึ้นเกือบสองเท่า การแสดงผลรายการกฎก็เร็วขึ้นเช่นกัน
  • มีรูปแบบการตรวจสอบการตั้งค่าบิตในแฟล็กแบบกระชับ ตัวอย่างเช่น หากต้องการตรวจสอบว่าบิตสถานะ snat และ dnat ไม่ถูกตั้งค่า คุณสามารถระบุ: ... ct status ! snat,dnat เพื่อตรวจสอบว่าบิต syn ถูกตั้งค่าในมาสก์บิต syn,ack: ... tcp flags syn / syn,ack เพื่อตรวจสอบว่าบิต fin และ rst ไม่ได้ถูกตั้งค่าในมาสก์บิต syn,ack,fin,rst: ... tcp flags != fin,rst / syn,ack,fin,rst
  • คีย์เวิร์ด "verdict" ได้รับอนุญาตในคำจำกัดความ typeof สำหรับ set/map: add map xm { typeof iifname . ip protocol . th dport : verdict ;}

ที่มา: opennet.ru

ซื้อโฮสติ้งที่เชื่อถือได้สำหรับไซต์ที่มีการป้องกัน DDoS เซิร์ฟเวอร์ VPS VDS 🔥 ซื้อบริการเว็บโฮสติ้งที่เชื่อถือได้ พร้อมระบบป้องกัน DDoS และเซิร์ฟเวอร์ VPS/VDS | ProHoster