alliberament del filtre de paquets , que s'està desenvolupant com a substitut d'iptables, ip6table, arptables i ebtables unificant les interfícies de filtratge de paquets per a IPv4, IPv6, ARP i ponts de xarxa. El paquet nftables inclou components de filtratge de paquets que operen a l'espai d'usuari, mentre que la funcionalitat a nivell de nucli la proporciona el subsistema nf_tables, que forma part del nucli. Linux a partir de la versió 3.13. Els canvis necessaris perquè nftables 0.9.5 funcioni s'han incorporat al nucli .
El nivell del nucli només proporciona una interfície genèrica independent del protocol que proporciona funcions bàsiques per extreure dades dels paquets, realitzar operacions de dades i controlar el flux. Les regles de filtratge i els controladors específics del protocol es compilen en bytecode a l'espai d'usuari, després del qual aquest bytecode es carrega al nucli mitjançant la interfície Netlink i s'executa al nucli en una màquina virtual especial que recorda BPF (Berkeley Packet Filters). Aquest enfocament us permet reduir significativament la mida del codi de filtratge que s'executa al nivell del nucli i moure totes les funcions d'anàlisi de regles i lògica per treballar amb protocols a l'espai d'usuari.
Principals innovacions:
- S'ha afegit als conjunts suport per als comptadors de paquets i trànsit associats amb elements de conjunt. Els comptadors s'activen mitjançant la paraula clau "comptador":
taula ip x {
establir y {
tipus d'ip saddr
contrarestar
elements = { 192.168.10.35, 192.168.10.101, 192.168.10.135 }
}cadena z {
tipus filtre ganxo sortida filtre prioritat; acceptar la política;
ip daddr @y
}
} - Per establir els valors inicials dels comptadors, per exemple, per restaurar els comptadors anteriors després d'un reinici, podeu utilitzar l'ordre "nft -f":
# cat ruleset.nft
taula ip x {
establir y {
tipus d'ip saddr
contrarestar
elements = { 192.168.10.35 comptador de paquets 1 bytes 84, 192.168.10.101 \
comptador p 192.168.10.135 comptador paquets 0 bytes 0 }
}cadena z {
tipus filtre ganxo sortida filtre prioritat; acceptar la política;
ip daddr @y
}
}
# nft -f ruleset.nft
Conjunt de regles de la llista #nft
taula ip x {
establir y {
tipus d'ip saddr
contrarestar
elements = { 192.168.10.35 comptador de paquets 1 bytes 84, 192.168.10.101 \
comptador p 192.168.10.135 comptador paquets 0 bytes 0 }
}cadena z {
tipus filtre ganxo sortida filtre prioritat; acceptar la política;
ip daddr @y
}
} - També s'ha afegit suport de comptador a flowtable:
taula ip foo {
barra de flux {
prioritat d'entrada del ganxo -100
dispositius = { eth0, eth1 }
contrarestar
}cadena cap endavant {
tipus de filtre ganxo cap endavant filtre de prioritat;
flow afegir @bar counter
}
}Podeu veure la llista de comptadors mitjançant l'ordre "conntrack -L":
tcp 6 src=192.168.10.2 dst=10.0.1.2 sport=47278 dport=5201 paquets=9 bytes=608 \
src=10.0.1.2 dst=10.0.1.1 sport=5201 dport=47278 paquets=8 bytes=428 [DESCÀRREGA] marca=0 \
secctx=ús nul=2 tcp 6 src=192.168.10.2 dst=10.0.1.2 sport=47280 dport=5201 \
paquets=1005763 bytes=44075714753 src=10.0.1.2 dst=10.0.1.1 esport=5201 dport=47280 \
paquets=967505 bytes=50310268 [DESCÀRREGA] mark=0 secctx=ús nul=2 - En conjunts per a la concatenació (concatenació, certs paquets d'adreces i ports que simplifiquen la comparació), és possible utilitzar la directiva "typeof", que determina el tipus de dades dels elements per a les parts constitutives dels elements del conjunt:
taula ip foo {
establir llista blanca {
tipus d'ip saddr. tcp dport
elements = { 192.168.10.35 . 80, 192.168.10.101. 80}
}barra de cadena {
filtre de tipus ganxo de preenrutament filtre de prioritat; caiguda de la política;
ip daddr. tcp dport @whitelist acceptar
}
} - La directiva typeof ara també s'aplica a les unions a les llistes de mapes:
taula ip foo {
mapa addr2mark {
tipus d'ip saddr. tcp dport: meta marca
elements = { 192.168.10.35 . 80 : 0x00000001,
192.168.10.135. 80 : 0x00000002}
}barra de cadena {
filtre de tipus ganxo de preenrutament filtre de prioritat; caiguda de la política;
meta mark set ip daddr . tcp dport map @addr2mark acceptar
}
} - S'ha afegit suport per a les unions d'interval en conjunts anònims (sense nom):
# nft add rule input filter inet ip daddr . tcp dport\
{ 10.0.0.0/8 . 10-23, 192.168.1.1-192.168.3.8. 80-443 } acceptar - S'ofereix la possibilitat de descartar paquets amb senyals 802.1q (VLAN) quan es processen ponts de xarxa:
# nft add rule bridge foo bar ether type vlan reject amb tcp reset
- S'ha afegit suport per a la concordança per identificador de sessió TCP (ID de conntrack). Per determinar l'ID de conntrack, podeu utilitzar l'opció "--output id":
# conntrack -L —id de sortida
udp 17 18 src=192.168.2.118 dst=192.168.2.1 sport=36424 dport=53 paquets=2 \
bytes=122 src=192.168.2.1 dst=192.168.2.118 esport=53 dport=36424 paquets=2 bytes=320 \
[ASSEGURAT] marca=0 ús=1 id=2779986232# nft afegir regla foo bar ct id 2779986232 comptador
Font: opennet.ru
