paketifiltri vĂ€ljaanne , areneb olema iptables, ip6table, arptables ja ebtables asendaja, pakettide filtreerimise liideste ĂŒhtsustamise abil IPv4, IPv6, ARP ja vĂ”rgu sillutamiseks. Paketi nftables koosseisus on kasutusruumis töötavad pakettide filtreerimise komponendid, samas kui sĂŒdamikus tagab töö nf_tables alamsĂŒsteem, mis on Linuxi tuumas alates versioonist 3.13. Nöödamisega nftables 0.9.4 töötamiseks vajalikud muudatused on tulevase tuuma haru koosseisus. .
SĂŒdamiku tasemel pakutakse vaid ĂŒldist liidest, mis ei sĂ”ltu konkreetsest protokollist ja pakub pĂ”hifunktsioone andmete extracatsiooniks pakettidest, andmete opereerimiseks ja voolu juhtimiseks. Otsesed filtreerimise reeglid ja protokollispetsiifilised töötlejajad kompileeritakse kasutusruumis baitkoodiks, seejĂ€rel laaditakse see baitkood Netlinki liidese abil tuuma ja tĂ€idetakse tuumas spetsiaalses virtuaalmasinas, mis sarnaneb BPF-iga (Berkeley Packet Filters). Selline lĂ€henemine vĂ”imaldab oluliselt vĂ€hendada sĂŒdamikus töötava filtreerimise koodi suurust ja viia kĂ”ik reeglite analĂŒĂŒsi ja protokollide töötlemise loogika kasutusruumi.
Peamised uuendused:
- Toetatakse vahemike kasutamist ĂŒhendustes (concatenation, mÀÀratud aadresside ja portide kombinatsioonid, mis lihtsustavad vastavust). NĂ€iteks
table ip foo {
seata whitelist {
tĂŒĂŒp ipv4_addr . ipv4_addr . inet_service
lipud intervall
elemendid = { 192.168.10.35-192.168.10.40 . 192.68.11.123-192.168.11.125 . 80 }
}chain bar {
tĂŒĂŒp filter hook prerouting prioriteet filter; poliitika drop;
ip saddr . ip daddr . tcp dport @whitelist accept
}
} - Kogudes ja map-loendites on vÔimalik kasutada direktiivi 'typeof', mis mÀÀratleb elemendi vormi vastavuse korral.
NĂ€iteks:table ip foo {
seata whitelist {
typeof ip saddr
elemendid = { 192.168.10.35, 192.168.10.101, 192.168.10.135 }
}chain bar {
tĂŒĂŒp filter hook prerouting prioriteet filter; poliitika drop;
ip daddr @whitelist accept
}
}table ip foo {
map addr2mark {
typeof ip saddr : meta mark
elemendid = { 192.168.10.35 : 0x00000001, 192.168.10.135 : 0x00000002 }
}
} - Lisatud vĂ”imalus kasutada NAT-sideĂŒhendustes, mis vĂ”imaldab mÀÀrata aadressi ja porti NAT-muutuste mÀÀratlemisel map-loendite vĂ”i nimetatud kogumite 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 filtrite toimingud vÔrkaartsele. Kiirendus aktiveeritakse utiliidi ethtool kaudu ("ethtool -K eth0 hw-tc-offload on"), seejÀrel aktiveeritakse see nftables'i pÔhiketis flagi "offload" abil. Linuxi tuuma 5.6 korral toimetatakse riistvara kiirenduse tugi pealkirja vÀljade ja sissetuleva liidese kontrollimise vastetega, koos pakettide vastuvÔtmise, kÔrvaleheitmise (dup) ja edasi suunamise (fwd) toimingutega. Allpool olevas nÀites kÔrvaldavad reeglid pakette, mis tulevad aadressilt 192.168.30.20, vÔrkaartsel tasemel, ilma pakettide edastamiseta tuumale:
# 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 veateadet reeglite viga asukohast.
# nft delete rule ip y z handle 7
Error: Reegli töötlemine ebaÔnnestus: Sellist faili vÔi katalooge ei leitud
delete rule ip y z handle 7
^# nft delete rule ip x x handle 7
Error: Reegli töötlemine ebaÔnnestus: Sellist faili vÔi katalooge ei leitud
delete rule ip x x handle 7
^# nft delete table twst
Error: Sellist faili vĂ”i katalooge ei leitud; kas mĂ”tlesite tabelit ĂąâŹËtestâ perekonnas ip?
delete table twst
^^^^Esimeses nĂ€ites on nĂ€idatud, et tabelit "y" ei ole sĂŒsteemis, teises, et kĂ€itaja "7" puudub, ja kolmandas, et antakse trĂŒkivea vihje tabeli nime sisestamisel.
- Lisatud tugi slave-liidese kontrollimiseks, kasutades "meta sdif" vÔi "meta sdifname":
⊠meta sdifname vrf1 âŠ
- Lisatud paremale vÔi vasakule nihkumise toiming. NÀiteks, et nihutada olemasolevat pakettide sildi vasakule 1 bitti ja seadistada madalam bitt 1:
⊠meta mark set meta mark lshift 1 or 0x1 âŠ
- Rakendatud valik "-V", et kuvada pikendatud teave versiooni kohta.
# nft -V
nftables v0.9.4 (Jive at Five)
cli: readline
json: yes
minigmp: no
libxtables: yes - KĂ€skude reavahetuse valikud peavad nĂŒĂŒd olema esitatud enne kĂ€sklusi. NĂ€iteks tuleb kirjutada "nft -a list ruleset", kuid "nft list ruleset -a" kĂ€ivitamine toob kaasa vea.
Allikas: opennet.ru
