Välja antud nftables 1.1.6, mis ühtlustab pakettide filtreerimise liideseid IPv4, IPv6, ARP ja võrgusildade jaoks (siht on asendada iptables, ip6tables, arptables ja ebtables). Samal ajal anti välja kaasnev raamatukogu libnftnl 1.3.1, mis pakub madala taseme API-d nf_tables alamsüsteemiga suhtlemiseks.
Nftables'i paketis on kasutusruumi paketifiltreerimise komponendid, samas kui tuuma tasemel tagab töö nf_tables alamsüsteem, mis on Linuxi tuumas saadaval alates versioonist 3.13. Tuuma tasemel on olemas vaid üldine liides, mis ei sõltu konkreetsetest protokollidest ja pakub põhiülesandeid paketidest andmete ekstraheerimiseks, andmete töötlemiseks ja voogude haldamiseks.
Filtreerimisreeglid ja protokollispetsiifilised töötlejad kompileeritakse kasutusruumis byte-koodiks, seejärel laaditakse see byte-kood tuuma Netlinki liidese abil ja käivitatakse tuumas eraldi virtuaalmasinas, mis tahes BPF (Berkeley Packet Filters). Sarnane lähenemine võimaldab oluliselt vähendada filterkoodi suurust, mis töötab tuuma tasemel, ning viia kõik reeglite parsing'u funktsioonid ja protokollide töötlemise loogika kasutajaruumi.
Peamised muudatused:
- Tugiteenused kergemate tunnelite, nagu vxlan, geneve ja erspan, täielik tugi: table netdev global { tunnel t1 { id 10 ip saddr 192.168.2.10 ip daddr 192.168.2.11 sport 1025 dport 20020 ttl 1 erspan { version 1 index 2 } } tunnel t2 { id 10 ip saddr 192.168.3.10 ip daddr 192.168.3.11 sport 1025 dport 21021 ttl 1 erspan { version 1 index 2 } } chain in { type filter hook ingress device veth0 priority 0; tunnel name ip saddr map { 10.141.10.12 : «t1», 10.141.10.13 : «t2» } fwd to erspan1 } } Enne reeglite laadimist tuleb luua võrguliides erspan1: ip link add dev erspan1 type erspan external
- Lisatud on toetus maskide kasutamiseks võrguliideste nimedes netdev töötlejates; näiteks, et lisada põhiketiga reegel sissetuleva liikluse filtrisse kõigi vlan-seadmete jaoks, võib märkida: table netdev t { chain c { type filter hook ingress devices = { «vlan*», «veth0» } priority filter; policy accept; } }
- Linuxi 6.18+ tuumaga süsteemides on rakendatud L2-raamide edastamise tugi silmade liideste (bridge) kohaliku töötlemise jaoks, näiteks, et suunata IP-kihisse kõik Ethernet-raamid MAC-aadressile de:ad:00:00:be:ef, võib märkida: table bridge global { chain pre { type filter hook prerouting priority 0; policy accept; ether daddr de:ad:00:00:be:ef meta pkttype set host ether daddr set meta ibrhwaddr accept } }
- Uus infrastruktuur fuzzing-testimiseks on lisatud, kasutades afl++ (american fuzzy lop++) tööriistu, ning see aktiveeritakse ehitusprotsessi käigus märkides «./configure —with-fuzzer».
Allikas: opennet.ru
