nftables paket filtri 1.0.0 versiyasi

IPv1.0.0, IPv4, ARP va tarmoq ko'priklari (iptables, ip6table, arptables va ebtables o'rnini bosishga qaratilgan) uchun paketli filtrlash interfeyslarini birlashtiruvchi nftables 6 paketli filtrining chiqarilishi chop etildi. Nftables 1.0.0 versiyasi ishlashi uchun zarur bo'lgan o'zgarishlar Linux 5.13 yadrosiga kiritilgan. Versiya raqamining sezilarli o'zgarishi hech qanday fundamental o'zgarishlar bilan bog'liq emas, balki faqat o'nli kasr belgilarida raqamlashni izchil davom ettirish natijasidir (oldingi versiya 0.9.9 edi).

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:

  • To'plamda belgilangan boshqa elementlarga kirmaydigan har qanday paketlar uchun ishga tushiriladigan ro'yxatlarga "*" niqob elementini qo'llab-quvvatlash qo'shildi. jadval x {xarita blokirovka ro'yxati {turi ipv4_addr: hukm bayroqlari interval elementlari = {192.168.0.0/16: qabul qilish, 10.0.0.0/8: qabul qilish, *: tomchi}} zanjir y {turi filtri ilgagini oldindan yo'naltirish ustuvorligi 0; siyosatni qabul qilish; ip saddr vmap @blocklist }}
  • “--define” opsiyasi yordamida buyruq satridan o‘zgaruvchilarni aniqlash mumkin. # cat test.nft jadvali netdev x { zanjir y { turi filtrli kanca kirish qurilmalari = $dev ustuvorligi 0; siyosatning pasayishi; } } # nft —define dev="{ eth0, eth1 }" -f test.nft
  • Xarita ro'yxatlarida doimiy (statistik) ifodalardan foydalanishga ruxsat beriladi: jadval inet filtri { map portmap { type inet_service : hukm hisoblagich elementlari = { 22 hisoblagich paketlari 0 bayt 0 : jump ssh_input, * hisoblagich paketlari 0 bayt 0 : tomchi }} zanjir ssh_input { } zanjir wan_input { tcp dport vmap @portmap } zanjirni oldindan yo'naltirish { turi filtri kancasini oldindan yo'naltirish ustuvorligi xom; siyosatni qabul qilish; iif vmap { "lo" : o'tish wan_input }}}
  • Berilgan paketlar oilasi uchun ishlov beruvchilar roʻyxatini koʻrsatish uchun “list hooks” buyrugʻi qoʻshildi: # nft list hooks ip device eth0 family ip { hook ingress {+0000000010 zanjir netdev xy [nf_tables] +0000000300 zanjir inet mw [nf_tables] } hook input { -0000000100 zanjir ip ab [nf_tables] +0000000300 zanjir inet mz [nf_tables] } ilgak oldinga { -0000000225 selinux_ipv4_forward 0000000000 zanjir ip ac [nf_tables0000000225] {4 zanjir ip ac [nf_tables0000000225] 4_output } hook postrouting {+XNUMX XNUMX selinux_ipvXNUMX_postroute }}
  • Navbat bloklari jhash, symhash va numgen ifodalarini birlashtirib, paketlarni foydalanuvchi maydonidagi navbatlarga tarqatish imkonini beradi. … symhash mod 65536 navbati … navbat bayroqlari numgen inc mod 65536 ga aylanib o‘tish … jhash oif uchun navbat. meta mark mod 32 "navbat" ixtiyoriy kalitlar asosida foydalanuvchi maydonida navbatni tanlash uchun xarita ro'yxatlari bilan ham birlashtirilishi mumkin. ... navbat bayroqlari oifname xaritasini chetlab o'tadi { "eth0" : 0, "ppp0" : 2, "eth1" : 2 }
  • To'plam ro'yxatini o'z ichiga olgan o'zgaruvchilarni bir nechta xaritalarga kengaytirish mumkin. interfeyslarni aniqlash = { eth0, eth1 } jadval ip x { zanjir y { turi filtri kanca kirish ustuvor 0; siyosatni qabul qilish; iifname vmap { lo : qabul qilish, $interfeyslar : tomchi } } } # nft -f x.nft # nft ro'yxati qoidalari jadvali ip x { zanjir y { turi filtri kancasi kiritish ustuvorligi 0; siyosatni qabul qilish; iifname vmap { "lo" : qabul qilish, "eth0" : tushirish, "eth1" : tushirish } } }
  • Vmaplarni (hukm xaritasi) intervalgacha birlashtirishga ruxsat beriladi: # nft qo'shish qoidasi xy tcp dport . ip saddr vmap {1025-65535. 192.168.10.2: qabul qiling}
  • NAT xaritalari uchun soddalashtirilgan sintaksis. Manzil diapazonlarini belgilashga ruxsat berilgan: ... snat to ip saddr map {10.141.11.4 : 192.168.2.2-192.168.2.4 } yoki aniq IP manzillar va portlar: ... dnat to ip saddr map {10.141.11.4 : 192.168.2.3. . 80 } yoki IP diapazonlari va portlarining kombinatsiyasi: ... dnat to ip saddr . tcp dport xaritasi {192.168.1.2. 80: 10.141.10.2-10.141.10.5. 8888-8999 }

Manba: opennet.ru

a Izoh qo'shish