nftables paket filtri 1.0.7 versiyasi

IPv1.0.7, 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 to'plami foydalanuvchi maydonida ishlaydigan 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 faqat paketlardan ma'lumotlarni olish, ma'lumotlar operatsiyalarini bajarish va oqimlarni boshqarish uchun asosiy funktsiyalarni ta'minlovchi 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 o'zgarishlar:

  • Linux yadrosi 6.2+ bilan ishlaydigan tizimlar uchun vxlan, geneve, gre va gretap protokollari xaritalarini qo'llab-quvvatlash qo'shildi, bu oddiy iboralarni kapsulalangan paketlardagi sarlavhalarni tekshirish imkonini beradi. Masalan, VxLAN-dan o'rnatilgan paket sarlavhasidagi IP-manzilni tekshirish uchun endi siz qoidalardan foydalanishingiz mumkin (avval VxLAN sarlavhasini inkapsulatsiya qilish va filtrni vxlan0 interfeysiga ulash kerak bo'lmasdan): ... udp dport 4789 vxlan ip protokoli udp ... udp dport 4789 vxlan ip saddr 1.2.3.0/24 ... udp dport 4789 vxlan ip saddr. vxlan ip daddr {1.2.3.4. 4.3.2.1 }
  • To'plamlar ro'yxati elementi qisman o'chirilgandan so'ng qoldiqlarni avtomatik ravishda birlashtirishni qo'llab-quvvatlash amalga oshirildi, bu sizga mavjud diapazondan elementni yoki diapazonning bir qismini o'chirish imkonini beradi (ilgari diapazon faqat butunlay o'chirilishi mumkin edi). Masalan, 25-24 va 30-40 diapazonli to'plamlar ro'yxatidan 50-elementni olib tashlaganingizdan so'ng, ro'yxat 24, 26-30 va 40-50 bo'lib qoladi. Ishlash uchun avtomatik birlashtirish uchun zarur bo'lgan tuzatishlar 5.10+ yadrosining barqaror filiallariga texnik xizmat ko'rsatish versiyalarida taklif etiladi. # nft ro'yxat qoidalari jadvali ip x { set y { typeof tcp dport bayroqlari oralig'i avtomatik birlashtirish elementlari = { 24-30, 40-50 } } } # nft elementni o'chirish ip xy { 25 } # nft ro'yxat qoidalari jadvali jadvali ip x { set y { typeof tcp dport bayroqlari oralig'i avtomatik birlashtiruvchi elementlar = { 24, 26-30, 40-50 } } }
  • Manzil tarjimasini (NAT) xaritalashda kontaktlar va diapazonlardan foydalanishga ruxsat beradi. table ip nat { zanjirni oldindan yo'naltirish { type nat hook prerouting priority dstnat; siyosatni qabul qilish; dnat to ip daddr. tcp dport xaritasi {10.1.1.136. 80: 1.1.2.69. 1024, 10.1.1.10-10.1.1.20. 8888-8889: 1.1.2.69. 2048-2049 } doimiy } }
  • Qoida elementi yoki to'plamlar ro'yxatidan oxirgi marta foydalanish vaqtini aniqlashga imkon beruvchi "oxirgi" iborani qo'llab-quvvatlash qo'shildi. Funksiya Linux yadrosi 5.14 dan boshlab qo'llab-quvvatlanadi. jadval ip x {to'siq y { typeof ip daddr. tcp dport hajmi 65535 bayroqlar dinamik, vaqt tugashi oxirgi vaqt tugashi 1 soat } zanjir z { turi filtri kancasi chiqish ustuvor filtri; siyosatni qabul qilish; yangilash @y {ip daddr. tcp dport } } } # nft ro'yxati to'plami ip xy jadval ip x {to'siq y { typeof ip daddr. tcp dport hajmi 65535 bayroqlar dinamik, vaqt tugashi oxirgi vaqt tugashi 1 soat elementlar = {172.217.17.14 . 443 oxirgi ishlatilgan 1s591ms kutish vaqti 1h tugaydi 59m58s409ms, 172.67.69.19 . 443 oxirgi ishlatilgan 4s636ms vaqt tugashi 1h 59m55s364ms, 142.250.201.72 . 443 oxirgi ishlatilgan 4s748ms vaqt tugashi 1h 59m55s252ms, 172.67.70.134 . 443 oxirgi ishlatilgan 4s688ms kutish vaqti 1h tugaydi 59m55s312ms, 35.241.9.150 . 443 oxirgi ishlatilgan 5s204ms vaqt tugashi 1h 59m54s796ms, 138.201.122.174 . 443 oxirgi ishlatilgan 4s537ms vaqt tugashi 1h 59m55s463ms, 34.160.144.191 . 443 oxirgi ishlatilgan 5s205ms vaqt tugashi 1h 59m54s795ms, 130.211.23.194 . 443 oxirgi ishlatilgan 4s436ms kutish vaqti 1soat tugaydi 59m55s564ms } }
  • Belgilangan ro'yxatlarda kvotalar belgilash imkoniyati qo'shildi. Misol uchun, har bir maqsadli IP-manzil uchun trafik kvotasini aniqlash uchun quyidagilarni belgilashingiz mumkin: jadval netdev x { set y { typeof ip daddr hajmi 65535 kvota 10000 mbyte dan ortiq } zanjir y { turi filtri kancasi chiqish qurilmasi "eth0" ustuvor filtri; siyosatni qabul qilish; ip daddr @y drop } } # nft element qo'shish inet xy {8.8.8.8} # ping -c 2 8.8.8.8 # nft ro'yxati qoidalari jadvali netdev x { set y { type ipv4_addr hajmi 65535 kvota 10000 mbaytdan ortiq elementlar. = {8.8.8.8. 10000 kvota 196 mbaytdan ortiq foydalanilgan 0 bayt } } zanjir y { turi filtri kancasi chiqish qurilmasi “ethXNUMX” ustuvor filtri; siyosatni qabul qilish; ip daddr @y drop }}
  • O'rnatilgan ro'yxatlarda konstantalardan foydalanishga ruxsat beriladi. Masalan, maqsad manzili va VLAN identifikatorini ro'yxat kaliti sifatida ishlatganda, siz VLAN raqamini (daddr . 123) to'g'ridan-to'g'ri belgilashingiz mumkin: table netdev t { set s { typeof ether saddr . vlan identifikatori o'lchami 2048 bayroqlar dinamik, vaqt tugashi vaqti tugashi 1m } zanjir c { turi filtri kanca kirish qurilmasi eth0 ustuvor 0; siyosatni qabul qilish; efir turi != 8021q yangilash @s {eter daddr. 123 } hisoblagich } }
  • Ob'ektlarni shartsiz o'chirish uchun yangi "yo'q qilish" buyrug'i qo'shildi (o'chirish buyrug'idan farqli o'laroq, u etishmayotgan ob'ektni o'chirishga urinayotganda ENOENT ni yaratmaydi). Ishlash uchun kamida Linux yadrosi 6.3-rc talab qilinadi. jadval IP filtrini yo'q qilish

Manba: opennet.ru

a Izoh qo'shish