Ka është publikuar versioni 1.1.6 i filtrit të paketave nftables, që unifikon ndërfaqet e filtrimit të paketave për IPv4, IPv6, ARP dhe urat e rrjetit (dhe ka për qëllim zëvendësimin e iptables, ip6tables, arptables dhe ebtables). Njëkohësisht është publikuar versioni 1.3.1 i bibliotekës ndihmëse libnftnl, e cila ofron një API të nivelit të ulët për ndërveprimin me nën-sistemin nf_tables.
Paketa nftables përmban komponente të filtrit të paketave që funksionojnë në hapësirën e përdoruesit, ndërsa në nivelin e bërthamor punon nën-sistemi nf_tables, i cili është pjesë e bërthamës Linux që nga versione 3.13. Në nivelin e bërthamës ofrohet vetëm një ndërfaqe e përgjithshme, e pavaruar nga protokolli i veçantë dhe që ofron funksione bazë për nxjerrjen e të dhënave nga paketat, për kryerjen e operacioneve me të dhënat dhe menaxhimin e fluksit.
Rregullat për filtrimin dhe trajtuesit specifikë për protokollet kompilohet në kodin e bytes në hapësirën e përdoruesit, pas së cilës ky kod bytes ngarkohet në bërthamë përmes ndërfaqes Netlink dhe ekzekutohet në bërthamë në një mënyrë të veçantë, që i ngjan BPF (Filtrat e Paketa Berkeley). Ky qasje lejon të reduktohet ndjeshëm madhësia e kodit të filtrimit që operon në nivelin e bërthamës dhe të transferohet të gjitha funksionet e përpunimit të rregullave dhe logjikës së punës me protokollet në hapësirën e përdoruesit. makinën virtuale, që ngjan me BPF (Berkeley Packet Filters). Ky qasje lejon reduktimin e ndjeshëm të madhësisë së kodit të filtrimit që operon në nivelin e bërthamës dhe nxjerrjen e të gjitha funksioneve për të analizuar rregullat dhe logjikën e punës me protokollet në hapësirën e përdoruesit.
Ndryshimet kryesore:
- Garantohet mbështetje e plotë për modelët e lehtë të tunelëve, si vxlan, geneve dhe erspan: 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 } } Para ngarkimit të rregullave, duhet krijuar një ndërfaqe rrjeti erspan1: ip link add dev erspan1 type erspan external
- Shtohet mbështetje për maska në emrat e ndërfaqeve rrjeti në trajtuesit netdev, p.sh., për të shtuar një varg bazë në filtrin e trafikut në hyrje për të gjitha pajisjet vlan mund të specifikohet: table netdev t { chain c { type filter hook ingress devices = { «vlan*», «veth0» } priority filter; policy accept; } }
- Në sistemet me bërthamën Linux 6.18+ është realizuar mbështetje për transmetimin e kadrove L2 në ndërfaqen e urave rrjetore për përpunimin lokal, p.sh., për të drejtuar të gjitha kadrot Ethernet në stakun IP për adresën MAC de:ad:00:00:be:ef mund të specifikohet: 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 } }
- Shtohet një infrastrukturë e re për testimin e fuzzing me përdorimin e veglave afl++ (american fuzzy lop++), e cila aktivizohet gjatë fazës së ndërtimit përmes «.\/configure —with-fuzzer».
Burimi: opennet.ru
