lëshimi i filtrit të paketave , i zhvilluar si një zëvendësim për iptables, ip6tables, arptables dhe ebtables përmes unifikimit të ndërfaqeve të filtrimit të paketave për IPv4, IPv6, ARP dhe urat rrjetë. Në paketën nftables përfshihen komponentë të filtrit të paketave që punojnë në hapësirën e përdoruesit, ndërsa në nivelin e bërthames punën e siguron nën-sistemi nf_tables, i cili është pjesë e bërthamës Linux që nga lëshimi 3.13. Ndryshimet e nevojshme për funksionimin e lëshimit nftables 0.9.5 janë përfshirë në bërthamë .
Në nivelin e bërthames ofrohet vetëm një ndërfaqe e përgjithshme, që nuk varet nga protokolli specifik dhe ofron funksione të bazës për nxjerrjen e të dhënave nga paketat, kryerjen e operacioneve me të dhëna dhe menaxhimin e rrjedhës. Rregullat e filtrimit dhe trajtuesit specifikë për protokollet kompilohet në kod bajtësh në hapësirën e përdoruesit, pas së cilës ky kod bajtësh ngarkohet në bërthamë përmes ndërfaqes Netlink dhe ekzekutohet në bërthamë në një makinë virtuale speciale, e cila i ngjan BPF (Berkeley Packet Filters). Ky qasje lejon të zvogëlohet në mënyrë të konsiderueshme madhësia e kodit të filtrimit që punon në nivelin bërthamor dhe të transferohen të gjitha funksionet e analizës së rregullave dhe logjikës së punës me protokollet në hapësirën e përdoruesit.
Novitetet kryesore:
- Në grupe janë shtuar mbështetje për numëruesit e paketave dhe trafikut, të lidhur me elementët e grupit. Numëruesit aktivizohen përmes fjalës kyçe "counter":
tabela ip x {
grupi y {
lloji i ip saddr
numërues
elementët = { 192.168.10.35, 192.168.10.101, 192.168.10.135 }
}zinxhiri z {
tipi i filtrit të lidhjes së daljes me prioritet filtri; politika pranohet;
ip daddr @y
}
} - Për të vendosur vlerat fillestare të numëruesve, për shembull, për të rikuperuar numëruesit e kaluar pas rilëshimit, në grup mund të përdoret komanda "nft -f":
# cat ruleset.nft
tabela ip x {
grupi y {
lloji i ip saddr
numërues
elementët = { 192.168.10.35 numërues paketash 1 bytes 84, 192.168.10.101 \
numërues p 192.168.10.135 numërues paketash 0 bytes 0 }
}zinxhiri z {
tipi i filtrit të lidhjes së daljes me prioritet filtri; politika pranohet;
ip daddr @y
}
}
# nft -f ruleset.nft
# nft list ruleset
tabela ip x {
grupi y {
lloji i ip saddr
numërues
elementët = { 192.168.10.35 numërues paketash 1 bytes 84, 192.168.10.101 \
numërues p 192.168.10.135 numërues paketash 0 bytes 0 }
}zinxhiri z {
tipi i filtrit të lidhjes së daljes me prioritet filtri; politika pranohet;
ip daddr @y
}
} - Mbështetje për numëruesit është shtuar gjithashtu në flowtable:
tabela ip foo {
flowtable bar {
në folderin e hyrjes me prioritet -100
dispozitat = { eth0, eth1 }
numërues
}zinxhiri përpara {
tipi i filtrit të lidhjes së përparme me prioritet filtri;
rrjedha shto @bar numërues
}
}Për të parë listën e numëruesve mund të përdoret komanda "conntrack -L":
tcp 6 src=192.168.10.2 dst=10.0.1.2 sport=47278 dport=5201 paketat=9 bytes=608 \
src=10.0.1.2 dst=10.0.1.1 sport=5201 dport=47278 paketat=8 bytes=428 [OFFLOAD] mark=0 \
secctx=null use=2 tcp 6 src=192.168.10.2 dst=10.0.1.2 sport=47280 dport=5201 \
paketat=1005763 bytes=44075714753 src=10.0.1.2 dst=10.0.1.1 sport=5201 dport=47280 \
paketet=967505 bytes=50310268 [OFFLOAD] mark=0 secctx=null use=2 - Në paketat për bashkëngjitjet (concatenation, lidhje specifike të adresave dhe porteve që lehtësojnë përshtatjen) është e mundur të përdoret direktiva "typeof", e cila përcakton tipin e dhënave të elementeve për përbërësit e elementeve të paketës:
tabela ip foo {
set whitelist {
typeof ip saddr . tcp dport
elements = { 192.168.10.35 . 80, 192.168.10.101 . 80 }
}chain bar {
type filter hook prerouting priority filter; policy drop;
ip daddr . tcp dport @whitelist accept
}
} - Direktiva typeof tani gjithashtu aplikohet për bashkëngjitjet në listat e hartës:
tabela ip foo {
map addr2mark {
typeof ip saddr . tcp dport : meta mark
elements = { 192.168.10.35 . 80 : 0x00000001,
192.168.10.135 . 80 : 0x00000002 }
}chain bar {
type filter hook prerouting priority filter; policy drop;
meta mark set ip daddr . tcp dport map @addr2mark accept
}
} - Shtuar mbështetje për bashkëngjitjet me diapazone në paketat anonime (të paemëruara):
# nft add rule inet filter input ip daddr . tcp dport \
{ 10.0.0.0/8 . 10-23, 192.168.1.1-192.168.3.8 . 80-443 } accept - Ofruar mundësia për të hedhur paketa me flamuj 802.1q (VLAN) gjatë trajtimit të urave rrjetë:
# nft add rule bridge foo bar ether type vlan reject with tcp reset
- Shtuar mbĂ«shtetje pĂ«r pĂ«rshtatjen sipas identifikuesit tĂ« seancĂ«s TCP (conntrack ID). PĂ«r tĂ« pĂ«rcaktuar conntrack ID, mund tĂ« pĂ«rdoret opsioni "âoutput id":
# conntrack -L âoutput id
udp 17 18 src=192.168.2.118 dst=192.168.2.1 sport=36424 dport=53 packets=2 \
bytes=122 src=192.168.2.1 dst=192.168.2.118 sport=53 dport=36424 packets=2 bytes=320 \
[ASSURED] mark=0 use=1 id=2779986232# nft add rule foo bar ct id 2779986232 counter
Burimi: opennet.ru
