Fîltera pakêtê ya nftables 0.9.9 hate berdan. Ew navrûyên fîlterkirina pakêtê ji bo IPv4, IPv6, ARP, û pirên torê (ku wekî cîgirê iptables, ip6table, arptables, û ebtables hatine armanc kirin) yek dike. Pirtûkxaneya libnftnl 1.2.0 ya pêvek, ku API-yek asta nizm ji bo têkiliyê bi jêrpergala nf_tables re peyda dike, di heman demê de hate berdan. Guhertinên ku ji bo nftables 0.9.9 hewce ne di nav kernel de hatine bicîh kirin. Linux 5.13-rc1.
Pakêta nftables pêkhateyên fîltera pakêtê dihewîne ku di qada bikarhêner de dixebitin, di heman demê de xebata asta kernel ji hêla jêrpergala nf_tables ve tê peyda kirin, ku beşek ji kernel e. Linux Ji guhertoya 3.13an vir ve, tenê navrûyeke serbixwe ya protokolê di asta kernelê de tê peyda kirin, ku fonksiyonên bingehîn ji bo derxistina daneyan ji pakêtan, pêkanîna operasyonên daneyan, û kontrola herikînê peyda dike.
Rêgezên fîlterkirinê bi xwe û destgirkerên protokolê yên taybetî di qada bikarhêner de di bytecode de têne berhev kirin, piştî vê yekê ev bytecode bi karanîna navrûya Netlink tê barkirin nav kernelê û di kernelê de bi awayekî taybetî tê bicîhanîn. makîneya virtual, dişibihe BPF (Fîlterên Pakêtên Berkeley). Ev rêbaz dihêle ku mezinahiya koda fîlterkirinê ya ku di asta kernel de dixebite bi girîngî kêm bibe û hemî şîrovekirina qaîdeyan û mantiqa protokolê vediguhezîne qada bikarhêner.
Nûvekirinên sereke:
- Kapasîteya guheztina pêvajoya tabloya herikandinê ber bi hêla adapterê torê ve hatî bicîh kirin, bi karanîna ala 'dakêşandin' ve hatî çalak kirin. Flowtable mekanîzmayek e ji bo xweşbînkirina riya beralîkirina pakêtê, ku tê de derbasbûna bêkêmasî ya hemî zincîreyên hilberandina qaîdeyan tenê li pakêta yekem tê sepandin, û hemî pakêtên din ên di herikê de rasterast têne şandin. tabloya ip global { flowtable f { fîltreya pêşîn a têketina hook + 1 cîhaz = { lan3, lan0, wan } alayên dakêşandî } zincîra pêş { type filter hook hook priority priority filter; polîtîka qebûl dikin; ip protokola { tcp, udp } herikîn lê zêde bike @f } posta zincîre { type nat hook postrouting priority filter; polîtîka qebûl dikin; oifname "wan" masquerade } }
- Piştgiriyek ji bo girêdana ala xwedan maseyek zêde kir da ku ji hêla pêvajoyek ve karanîna taybetî ya tabloyê misoger bike. Dema ku pêvajoyek bi dawî bibe, tabloya pê re têkildar bixweber tê jêbirin. Agahdariya li ser pêvajoyê di rêziknameyê de di forma şîroveyê de tê xuyang kirin: ip x { # progname nft flags zincîra xwedan y { Parzûna pêşîn a têketina hookê binivîsîne; polîtîka qebûl dikin; pakêtên jimarvan 1 byte 309 } }
- Piştgiriyek ji bo taybetmendiya IEEE 802.1ad (VLAN stacking an QinQ) zêde kir, ku navgînek ji bo cîgirkirina gelek tagên VLAN-ê di çarçoveyek Ethernetê de diyar dike. Mînakî, ji bo kontrolkirina celebê çarçoweya Ethernetê ya derveyî 8021ad û vlan id=342, hûn dikarin avakirina ... ether type 802.1ad vlan id 342 bikar bînin da ku cûreya derveyî ya çarçoveya Ethernet 8021ad/vlan id=1, 802.1 nested kontrol bikin. q/vlan id=2 û pêvekirina pakêta IP-ya din: ... ether type 8021ad vlan id 1 vlan type 8021q vlan id 2 vlan type ip counter
- Piştgiriyek ji bo birêvebirina çavkaniyan bi karanîna cgroupên hiyerarşiya yekbûyî v2 zêde kir. Cûdahiya sereke di navbera cgroupên v2 û v1 de, ji bo veqetandina çavkaniyên CPU-yê, ji bo birêkûpêkkirina mezaxtina bîranînê, û ji bo I/O, ji bo her cûre çavkaniyan, li şûna hiyerarşiyên cihêreng, karanîna hiyerarşiyek cgroupên hevpar e. Mînakî, ji bo kontrol bikin ka bav û kalê soketek di asta yekem cgroupv2 de bi maskeya "system.slice" re têkildar e, hûn dikarin vê çêkirinê bikar bînin: ... soket cgroupv2 asta 1 "system.slice"
- Şîyana kontrolkirina pêkhateyên pakêtên SCTP hate zêdekirin (fonksiyonên pêwîst ji bo xebitandinê dê di kernel de xuya bibin) Linux 5.14). Bo nimûne, ji bo kontrolkirina ka pakêtek perçeyek bi celebê 'dane' û zeviya 'type' dihewîne: … daneyên perçeya sctp hene … celebê daneyên perçeya sctp 0
- Pêkanîna operasyona barkirina qaîdeyê bi karanîna ala "-f" bi qasî du caran bileztir bûye. Hilberîna navnîşa qaîdeyan jî bileztir bûye.
- Formek kompakt ji bo kontrolkirina ka bitsên ala hatine danîn tê peyda kirin. Mînakî, ji bo kontrol bikin ku bitsên statûya snat û dnat nehatine danîn, hûn dikarin diyar bikin: ... ct status ! snat,dnat ji bo kontrol bikin ku bit syn di bitmask syn,ack,ack: ... tcp alên syn / syn,ack ji bo kontrol bikin ku bit û rst di bitmask syn,ack,fin,rst de nehatine danîn: ... alayên tcp = fin,rst / syn,ack,fin,rst
- Destûrê bide peyva sereke ya "biryara" di pênaseyên cûreyên set/nexşeyê de: nexşeya xm { typeof iifname . protokola ip dport : biryar ;}
Source: opennet.ru
