paketifiltri väljaanne , arenebes, mis arenebes iptables, ip6tables, arptables ja ebtables asendamiseks packet filtreerimise liideste ühtlustamise kaudu IPv4, IPv6, ARP ja võrgu sildade jaoks. Nf_tables alamsüsteem, mis kuulub Linuxi kernelisse alates versioonist 3.13, toetab nftablesi, mis sisaldab kasutaja ruumis töötavaid komponente. Ntfablesi 0.9.5 toimimiseks vajalikke muudatusi on kaheksas tuumas. .
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:
- Komplektidesse on lisatud pakettide ja liikluse loendurite tugi, mis on seotud komplekti elementidega. Loendurid aktiveeritakse „counter“ võtmesõna abil:
table ip x {
set y {
typeof ip saddr
counter
elemendid = { 192.168.10.35, 192.168.10.101, 192.168.10.135 }
}chain z {
type filter hook output priority filter; policy accept;
ip daddr @y
}
} - Esialgsete loendurite väärtuste seadmiseks, näiteks varasemate loendurite taastamiseks taaskäivitumise järel, võib komplekti kasutada käsku „nft -f“:
# cat ruleset.nft
table ip x {
set y {
typeof ip saddr
counter
elements = { 192.168.10.35 counter packets 1 bytes 84, 192.168.10.101 \
counter p 192.168.10.135 counter packets 0 bytes 0 }
}chain z {
type filter hook output priority filter; policy accept;
ip daddr @y
}
}
# nft -f ruleset.nft
# nft list ruleset
table ip x {
set y {
typeof ip saddr
counter
elements = { 192.168.10.35 counter packets 1 bytes 84, 192.168.10.101 \
counter p 192.168.10.135 counter packets 0 bytes 0 }
}chain z {
type filter hook output priority filter; policy accept;
ip daddr @y
}
} - Loendurite tugi on samuti lisatud flowtable'isse:
table ip foo {
flowtable bar {
hook ingress priority -100
devices = { eth0, eth1 }
counter
}chain forward {
type filter hook forward priority filter;
flow add @bar counter
}
}Loendite nimekirja saab vaadata käsuga „conntrack -L“:
tcp 6 src=192.168.10.2 dst=10.0.1.2 sport=47278 dport=5201 packets=9 bytes=608 \
src=10.0.1.2 dst=10.0.1.1 sport=5201 dport=47278 packets=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 \
packets=1005763 bytes=44075714753 src=10.0.1.2 dst=10.0.1.1 sport=5201 dport=47280 \
packets=967505 bytes=50310268 [OFFLOAD] mark=0 secctx=null use=2 - Kinnituste komplektides (concatenation, aadresside ja portide spetsiifilised sidemed, mis lihtsustavad kaardistamist) on juurdepääsu direktiiv „typeof“, mis määratleb andmete tüübi elementide jaoks komplekti komponentide jaoks:
table ip foo {
seata whitelist {
typeof ip saddr . tcp dport
elements = { 192.168.10.35 . 80, 192.168.10.101 . 80 }
}chain bar {
tüüp filter hook prerouting prioriteet filter; poliitika drop;
ip daddr . tcp dport @whitelist accept
}
} - Direktiivi typeof võib nüüd kasutada ka map-loendite sidumisel:
table 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 {
tüüp filter hook prerouting prioriteet filter; poliitika drop;
meta mark set ip daddr . tcp dport map @addr2mark accept
}
} - Toetatakse sidumisi vahemikega anonüümsetes (nimetamata) komplektides:
# 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 - Lisatud on toetus pakettide tagasilükkamiseks 802.1q (VLAN) lippudega võrgu sildade töötlemise ajal:
# nft add rule bridge foo bar ether type vlan reject with tcp reset
- Lisatud on tugi TCP-session ID (conntrack ID) kaardistamiseks. Conntrack ID määramine võib kasutada „—output id“ valikut:
# 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
Allikas: opennet.ru
