nftables пакет чыпкасы 0.9.9 чыгаруу

nftables 0.9.9 пакет чыпкасы чыгарылды. Ал IPv4, IPv6, ARP жана тармак көпүрөлөрү үчүн пакет чыпкалоо интерфейстерин бириктирет (iptables, ip6table, arptables жана ebtables алмаштыруу катары багытталган). nf_tables ички системасы менен өз ара аракеттенүү үчүн төмөнкү деңгээлдеги API менен камсыз кылган коштомо libnftnl 1.2.0 китепканасы бир эле учурда чыгарылды. nftables 0.9.9 үчүн талап кылынган өзгөртүүлөр ядрого киргизилген. Linux 5.13-rc1.

nftables пакети колдонуучу мейкиндигинде иштеген пакет чыпкалоочу компоненттерди камтыйт, ал эми ядро ​​деңгээлиндеги иш ядронун бир бөлүгү болгон nf_tables субсистемасы тарабынан камсыз кылынат. Linux 3.13 чыгарылышынан бери ядро ​​деңгээлинде пакеттерден маалыматтарды алуу, маалымат операцияларын аткаруу жана агымдарды башкаруу үчүн негизги функцияларды камсыз кылган жалпы протоколго көз карандысыз интерфейс гана камсыздалган.

Чыпкалоо эрежелеринин өздөрү жана протоколго тиешелүү иштетүүчүлөр колдонуучу мейкиндигинде байткодго компиляцияланат, андан кийин бул байткод Netlink интерфейси аркылуу ядрого жүктөлөт жана ядродо атайын түрдө аткарылат виртуалдык машина, BPF (Беркли пакеттик чыпкаларын) эске салат. Бул ыкма ядро ​​деңгээлинде иштеп жаткан чыпкалоо кодунун өлчөмүн бир топ азайтууга мүмкүндүк берет жана бардык эрежелерди талдоону жана протокол логикасын колдонуучу мейкиндигине жылдырат.

Негизги инновациялар:

  • Агым таблицасын иштетүүнү тармак адаптер тарабына жылдыруу мүмкүнчүлүгү ишке ашырылды, "түшүрүү" желеги аркылуу иштетилди. Flowtable – пакетти кайра багыттоо жолун оптималдаштыруу механизми, мында бардык эрежелерди иштетүү чынжырларынын толук өтүшү биринчи пакетке гана колдонулат, ал эми агымдагы бардык башка пакеттер түз жөнөтүлөт. стол IP глобал { flowtable f { илгичке кирүү приоритеттүү чыпка + 1 түзмөк = { lan3, lan0, wan } желектер түшүрүү } чынжыр алдыга {түр фильтр илгич алдыга артыкчылык чыпкасы; саясатты кабыл алуу; IP протоколу { tcp, UDP } flow add @f } чынжыр пост { type nat hook postrouting priority filter; саясатты кабыл алуу; oifname "wan" маскарад } }
  • Процесс менен үстөлдүн эксклюзивдүү колдонулушун камсыз кылуу үчүн үстөлгө ээсинин желегин тиркөө үчүн кошумча колдоо. Процесс аяктаганда, аны менен байланышкан таблица автоматтык түрдө жок кылынат. Процесс жөнүндө маалымат эрежелердин таштандысында комментарий түрүндө көрсөтүлөт: table ip x { # progname nft flags owner chain y { type filter hook киргизүү приоритеттүү фильтр; саясатты кабыл алуу; эсептегич пакеттер 1 байт 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.1 q/vlan id=2 жана андан аркы IP пакеттин инкапсуляциясы: ... эфир түрү 8021ad vlan id 1 vlan түрү 8021q vlan id 2 vlan түрү IP эсептегич
  • Бирдиктүү иерархиялык cgroups v2 аркылуу ресурстарды башкаруу үчүн кошумча колдоо. Cgroups v2 жана v1 ортосундагы негизги айырмачылык CPU ресурстарын бөлүштүрүү үчүн өзүнчө иерархиялардын ордуна, эстутум керектөөсүн жөнгө салуу жана киргизүү/чыгаруу үчүн ресурстардын бардык түрлөрү үчүн жалпы топтордун иерархиясын колдонуу болуп саналат. Мисалы, биринчи деңгээлдеги cgroupv2 розеткасынын түпкү теги “system.slice” маскасына дал келгенин текшерүү үчүн, сиз төмөнкү конструкцияны колдонсоңуз болот: ... socket cgroupv2 1-деңгээл “system.slice”
  • SCTP пакеттеринин компоненттерин текшерүү мүмкүнчүлүгү кошулду (иштөө үчүн талап кылынган функция ядродо пайда болот) Linux 5.14). Мисалы, пакетте 'data' тибиндеги жана 'type' талаасындагы бөлүк бар же жок экенин текшерүү үчүн: … sctp бөлүк маалыматтары бар … sctp бөлүк маалыматтары 0 түрү
  • Эреже жүктөө операциясынын аткарылышы "-f" желегин колдонуу менен болжол менен эки эсеге тездетилген. Эрежелердин тизмесин чыгаруу да тездетилди.
  • Желектин биттери коюлганын текшерүү үчүн компакт форма берилген. Мисалы, snat жана dnat статус биттери орнотулбаганын текшерүү үчүн төмөнкүнү белгилей аласыз: ... ct status ! snat,dnat syn бит бит маскасында коюлганын текшерүү үчүн syn,ack: ... tcp flags syn / syn,ack fin жана биринчи биттердин бит маскасында коюлбаганын текшерүү үчүн syn,ack,fin,rst: ... tcp желектери ! = fin,rst / syn,ack,fin,rst
  • Set/map typeof аныктамаларында "өкүм" ачкыч сөзүнө уруксат бериңиз: add map xm { typeof iifname . IP протоколу th dport: өкүм ;}

Source: opennet.ru

DDoS коргоосу, VPS VDS серверлери бар сайттар үчүн ишенимдүү хостинг сатып алыңыз 🔥 DDoS коргоосу, VPS VDS серверлери бар ишенимдүү веб-сайт хостингин сатып алыңыз | ProHoster