paketifiltri vÀljalaskmine , mis areneb iptables, ip6tables, arptables ja ebtables asendamiseks, unifitseerides pakettide filtreerimise liideseid IPv4, IPv6, ARP ja vÔrgu silmade jaoks. Paketis nftables on komponentide paketifilter, mis töötab kasutaja ruumis, samas kui tuuma tasemel pakub tööd nf_tables subsystem, mis on osa Linuxi tuumast alates versioonist 3.13. Nftables 0.9.4 vÀljalaske jaoks vajalikud muudatused on lisatud tulevasse tuuma haru. .
Ytme tasandi kasutab vaid ĂŒldist liidest, mis ei sĂ”ltu konkreetsest protokollist ja pakub pĂ”hifunktsioone andmete vĂ€ljatĂ”mbeks pakettidest, andmetega töötamiseks ja voogude haldamiseks. Filtreerimisreeglid ja protokollispetsiifilised töötlejad kompileeritakse kasutajaruumi baidi koodi, seejĂ€rel laaditakse see baidikood Netlinki liidese kaudu ytmesse ning seda tĂ€idetakse ytmes spetsiaalses virtuaalmasinas, mis meenutab BPF (Berkeley Packet Filters) protokolli. Selline lĂ€henemine vĂ”imaldab oluliselt vĂ€hendada ytmes töötava filtreerimiskoodi suurust ja viia kĂ”ik reeglite parsingu ja protokollidega töötamise funktsioonid kasutajaruumi.
PÔhilised uuendused:
- Toetused vahemike jaoks konkateneerimistes (concatenation, teatud aadressi ja portide sidumist, mis lihtsustavad vastavust). NĂ€iteks âwhitelistâ seadistuses, mille elemendid on konkateneerimine, nĂ€itab âintervalâ lipu mÀÀramine, et komplekt vĂ”ib sisaldada vahemikke konkateneerimises (nt âipv4_addr . ipv4_addr . inet_serviceâ puhul oli varem vĂ”imalik loetleda tĂ€psed vasteid nagu â192.168.10.35 . 192.68.11.123 . 80â, nĂŒĂŒd on lubatud mÀÀrata aadressigruppide vahemikke nagu â192.168.10.35-192.168.10.40 . 192.68.11.123-192.168.11.125 . 80â):
table ip foo {
set whitelist {
type ipv4_addr . ipv4_addr . inet_service
flags interval
elements = { 192.168.10.35-192.168.10.40 . 192.68.11.123-192.168.11.125 . 80 }
}chain bar {
type filter hook prerouting priority filter; policy drop;
ip saddr . ip daddr . tcp dport @whitelist accept
}
} - Komplektides ja map-loendites on tagatud vĂ”imalus kasutada direktiivi âtypeofâ, mis mÀÀrab elemendi formaadi vastavuse ajal.
NĂ€iteks:table ip foo {
set whitelist {
typeof ip saddr
elements = { 192.168.10.35, 192.168.10.101, 192.168.10.135 }
}chain bar {
type filter hook prerouting priority filter; policy drop;
ip daddr @whitelist accept
}
}table ip foo {
map addr2mark {
typeof ip saddr : meta mark
elements = { 192.168.10.35 : 0x00000001, 192.168.10.135 : 0x00000002 }
}
} - Lisatud on vÔimalus kasutada konkateneerimisi NAT-seostes, mis vÔimaldab mÀÀrata aadressi ja pordi NAT-muunduste mÀÀratlemisel map-loendite vÔi nimetatud komplektide alusel:
nft add rule ip nat pre dnat ip addr . port to ip saddr map { 1.1.1.1 : 2.2.2.2 . 30 }
nft add map ip nat destinations { type ipv4_addr . inet_service : ipv4_addr . inet_service \\; }
nft add rule ip nat pre dnat ip addr . port to ip saddr . tcp dport map @destinations - Riistvara kiirenduse tugi, mis viib mÔned filtreerimise operatsioonid vÔrgu kaardi kanda. Kiirendus aktiveeritakse utiliidiga ethtool ("ethtool -K eth0 hw-tc-offload on"), seejÀrel aktiveeritakse nftables jaoks peamises ahelas lipuga "offload". Linuxi tuuma versioonis 5.6 toetatakse riistvara kiirendust pÀisevÀljade sobitamiseks ja sissetuleva liidese kontrollimiseks koos pakettide vastuvÔtmise, Àraviskamise (dup) ja suunamise (fwd) funktsioonidega. JÀrgnevas nÀites visatakse pakette, mis tulevad aadressilt 192.168.30.20, vÔrgu kaardi tasemel, ilma pakettide tuuma saatmiseta:
# cat file.nft
table netdev x {
chain y {
type filter hook ingress device eth0 priority 10; flags offload;
ip saddr 192.168.30.20 drop
}
}
# nft -f file.nft - Parandatud vigade teatamise tÀpsus reeglite puhul.
# nft delete rule ip y z handle 7
Viga: Reegli töötlemine ebaÔnnestus: Tegu ei kehti
delete rule ip y z handle 7
^# nft delete rule ip x x handle 7
Viga: Reegli töötlemine ebaÔnnestus: Tegu ei kehti
delete rule ip x x handle 7
^# nft delete table twst
Viga: Tegu ei kehti; kas soovisite table 'test' peres ip?
delete table twst
^^^^Esimeses nĂ€ites on nĂ€idatud, et tabel "y" puudub sĂŒsteemist, teises, et puudub töötleja "7", ja kolmandas, et kuvatakse soovitus trĂŒkivea kohta tabeli nime sisestamisel.
- Lisatud tugi slave-liidese kontrollimiseks, kasutades "meta sdif" vÔi "meta sdifname":
⊠meta sdifname vrf1 âŠ
- Lisatud tugi paremale vĂ”i vasakule nihke operatsioonidele. NĂ€iteks, et nihutada olemasolevat paketi mĂ€rki vasakule ĂŒhe biti vĂ”rra ja seada madalam bit vÀÀrtusele 1:
⊠meta mark set meta mark lshift 1 or 0x1 âŠ
- Rakendatud valik "-V" laienenud versiooniteabe kuvamiseks.
# nft -V
nftables v0.9.4 (Jive at Five)
cli: readline
json: jah
minigmp: ei
libxtables: jah - KĂ€skude valikud peavad nĂŒĂŒd olema nĂ€idatud enne kĂ€ske. NĂ€iteks tuleb kirjutada "nft -a list ruleset", samas kui "nft list ruleset -a" kĂ€ivitamine toob kaasa veateate.
Allikas: opennet.ru
