nftables paket filtri 1.0.2 versiyasi

IPv1.0.2, IPv4, ARP va tarmoq ko'priklari (iptables, ip6table, arptables va ebtables almashtirishga qaratilgan) uchun paketli filtrlash interfeyslarini birlashtiruvchi nftables 6 paketli filtri nashr etildi. Nftables 1.0.2 versiyasi ishlashi uchun zarur bo'lgan o'zgarishlar Linux yadrosi 5.17-rc ichiga kiritilgan.

nftables to'plami foydalanuvchi bo'shlig'i paket filtri komponentlarini o'z ichiga oladi, yadro darajasidagi ish esa 3.13 versiyasidan beri Linux yadrosining bir qismi bo'lgan nf_tables quyi tizimi tomonidan ta'minlanadi. Yadro darajasi paketlardan ma'lumotlarni olish, ma'lumotlar operatsiyalarini bajarish va oqimlarni boshqarish uchun asosiy funktsiyalarni ta'minlaydigan faqat umumiy protokoldan mustaqil interfeysni ta'minlaydi.

Filtrlash qoidalari va protokolga xos ishlov beruvchilar foydalanuvchi maydonida bayt-kodga kompilyatsiya qilinadi, shundan so'ng bu bayt kod Netlink interfeysi yordamida yadroga yuklanadi va yadroda BPF (Berkeley Packet Filters) ni eslatuvchi maxsus virtual mashinada bajariladi. Ushbu yondashuv yadro darajasida ishlaydigan filtrlash kodining hajmini sezilarli darajada kamaytirish va protokollar bilan ishlash uchun tahlil qilish qoidalari va mantiqining barcha funktsiyalarini foydalanuvchi maydoniga ko'chirish imkonini beradi.

Asosiy innovatsiyalar:

  • Qoidalarni optimallashtirish rejimi qo'shildi, yangi "-o" ("--optimallashtirish") opsiyasi yordamida yoqildi, uni "--check" opsiyasi bilan birlashtirish mumkin bo'lgan qoidalar to'plami faylini yuklamasdan tekshirish va o'zgartirishlarni optimallashtirish mumkin. . Optimallashtirish shunga o'xshash qoidalarni birlashtirishga imkon beradi, masalan, qoidalar: meta iifname eth1 ip saddr 1.1.1.1 ip daddr 2.2.2.3 qabul qilish meta iifname eth1 ip saddr 1.1.1.2 ip daddr 2.2.2.5 IP saddr 1.1.1.1d. .2.2.2.2 qabul qilish ip saddr 2.2.2.2 ip daddr 3.3.3.3 tomchi

    meta iifname ga birlashtiriladi. ip saddr. ip daddr {eth1. 1.1.1.1. 2.2.2.3, et1. 1.1.1.2. 2.2.2.5 } IP saddrni qabul qiling. ip daddr vmap {1.1.1.1. 2.2.2.2: qabul qilish, 2.2.2.2. 3.3.3.3 : tushirish }

    Foydalanish misoli: # nft -c -o -f ruleset.test Birlashtirish: ruleset.nft:16:3-37: ip daddr 192.168.0.1 counter accept ruleset.nft:17:3-37: ip daddr 192.168.0.2 counter qabul ruleset.nft:18:3-37: ip daddr 192.168.0.3 hisoblagich qabul qilinadi: ip daddr {192.168.0.1, 192.168.0.2, 192.168.0.3} hisoblagich paketlari 0 bayt 0 qabul qilinadi

  • To'plamlar ro'yxatlari ip va tcp opsiyalarini, shuningdek sctp qismlarini belgilash qobiliyatini amalga oshiradi: set s5 { typeof ip option ra value elements = { 1, 1024 } } set s7 { typeof sctp chunk init num-inbound-streams elements = { 1, 4 } } zanjir c5 { ip variant ra qiymati @s5 qabul } zanjir c7 { sctp chunk init num-inbound-streams @s7 qabul }
  • fastopen, md5sig va mptcp uchun TCP opsiyalarini qo'llab-quvvatlash qo'shildi.
  • Xaritalarda mp-tcp pastki turidan foydalanish uchun qo'shimcha yordam: tcp opsiyasi mptcp kichik turi 1
  • Yadro tomonidagi filtrlash kodi yaxshilandi.
  • Flowtable endi JSON formatini to'liq qo'llab-quvvatlaydi.
  • Ethernet freymlarini moslashtirish operatsiyalarida "rad etish" amalidan foydalanish imkoniyati taqdim etilgan. efir saddr aa:bb:cc:dd:ee:ff ip daddr 192.168.0.1 rad etish

Manba: opennet.ru

a Izoh qo'shish