nftables pakketfilter release 1.0.7

De uitgave van nftables 1.0.7 pakketfilter is gepubliceerd, die pakketfilterinterfaces verenigt voor IPv4, IPv6, ARP en netwerkbruggen (ter vervanging van iptables, ip6table, arptables en ebtables). Het nftables-pakket bevat pakketfiltercomponenten die in de gebruikersruimte draaien, terwijl het kernelniveau wordt geleverd door het nf_tables-subsysteem, dat sinds release 3.13 deel uitmaakt van de Linux-kernel. Op kernelniveau is er alleen een generieke protocolonafhankelijke interface die basisfuncties biedt voor het extraheren van gegevens uit pakketten, het uitvoeren van bewerkingen op gegevens en het regelen van de stroom.

De filterregels zelf en protocolspecifieke handlers worden in de gebruikersruimte gecompileerd tot bytecode, waarna deze bytecode via de Netlink-interface in de kernel wordt geladen en in de kernel in een speciaal daarvoor bestemde omgeving wordt uitgevoerd. virtuele machineDit doet denken aan BPF (Berkeley Packet Filters). Deze aanpak maakt een aanzienlijke reductie mogelijk van de omvang van de filtercode die op kernelniveau draait en verplaatst alle regelparsing en protocollogica naar de gebruikersruimte.

Grote veranderingen:

  • Voor systemen met Linux-kernel 6.2 of hoger is ondersteuning toegevoegd voor het matchen van de vxlan-, geneve-, gre- en gretap-protocollen, waardoor het mogelijk is om met eenvoudige expressies headers in ingekapselde pakketten te controleren. Bijvoorbeeld om te controleren IP-adressen In de header van het ingebedde pakket van VxLAN kunt u nu regels gebruiken (zonder eerst de VxLAN-header te de-encapsuleren en het filter aan de vxlan0-interface te binden): ... udp dport 4789 vxlan ip protocol udp ... udp dport 4789 vxlan ip saddr 1.2.3.0/24 ... udp dport 4789 vxlan ip saddr . vxlan ip daddr { 1.2.3.4 . 4.3.2.1 }
  • Het automatisch samenvoegen van restanten na gedeeltelijke verwijdering van een setlistelement wordt nu ondersteund, waardoor u een element of een deel van een reeks uit een bestaande reeks kunt verwijderen (voorheen kon u alleen de volledige reeks verwijderen). Als u bijvoorbeeld element 25 uit een setlist met de reeksen 24-30 en 40-50 verwijdert, blijven de reeksen 24, 26-30 en 40-50 in de lijst staan. Oplossingen die nodig zijn om automatisch samenvoegen te laten werken, worden voorgesteld in onderhoudsreleases van stabiele kernelbranches 5.10 en hoger. # nft lijst regels tabel ip x { set y { typeof tcp dport vlaggen interval auto-samenvoeg elementen = { 24-30, 40-50 } } # nft element ip xy verwijderen { 25 } # nft lijst regels tabel ip x { set y { typeof tcp dport vlaggen interval auto-samenvoeg elementen = { 24, 26-30, 40-50 } } }
  • Maakt het gebruik van contacten en bereiken in NAT-mapping mogelijk. tabel ip nat { keten prerouting { type nat hook prerouting prioriteit dstnat; beleid accepteren; dnat naar ip daddr . tcp dport map { 10.1.1.136 . 80 : 1.1.2.69 . 1024, 10.1.1.10-10.1.1.20 . 8888-8889 : 1.1.2.69 . 2048-2049 } persistent } }
  • Ondersteuning toegevoegd voor de "laatste" expressie, waarmee u kunt achterhalen wanneer een element van een regel of setlist voor het laatst is gebruikt. Deze functie wordt ondersteund sinds Linux-kernel 5.14. tabel ip x { set y { typeof ip daddr . tcp dport grootte 65535 flags dynamic,timeout laatste time-out 1u } keten z { type filter hook output prioriteit filter; beleid accepteren; bijwerken @y { ip daddr . tcp dport } } } # nft lijst set ip xy tabel ip x { set y { typeof ip daddr . tcp dport grootte 65535 flags dynamic,timeout laatste time-out 1u elementen = { 172.217.17.14 . 443 laatst gebruikt 1s591ms time-out 1u verloopt 59m58s409ms, 172.67.69.19. 443 laatst gebruikt 4s636ms time-out 1u verloopt 59m55s364ms, 142.250.201.72. 443 laatst gebruikt 4s748ms time-out 1u verloopt 59m55s252ms, 172.67.70.134. 443 laatst gebruikt 4s688ms time-out 1u verloopt 59m55s312ms, 35.241.9.150. 443 laatst gebruikt 5s204ms time-out 1u verloopt 59m54s796ms, 138.201.122.174. 443 laatst gebruikt 4s537ms time-out 1u verloopt 59m55s463ms, 34.160.144.191. 443 laatst gebruikt 5s205ms time-out 1u verloopt 59m54s795ms, 130.211.23.194. 443 laatst gebruikt 4s436ms time-out 1u verloopt 59m55s564ms } } }
  • De mogelijkheid toegevoegd om quota's in setlijsten te definiëren. Om bijvoorbeeld een verkeersquotum voor elk doel-IP-adres te definiëren, kunt u het volgende opgeven: table netdev x { set y { typeof ip daddr size 65535 quota over 10000 mbytes } chain y { type filter hook egress device «eth0» priority filter; policy accept; ip daddr @y drop } } # nft add element inet xy { 8.8.8.8 } # ping -c 2 8.8.8.8 # nft list ruleset table netdev x { set y { type ipv4_addr size 65535 quota over 10000 mbytes elements = { 8.8.8.8 quota over 10000 mbytes used 196 bytes } } chain y { type filter hook egress device «eth0» priority filter; policy accept; ip daddr @y drop } }
  • Constanten zijn toegestaan ​​in setlijsten. Wanneer u bijvoorbeeld het bestemmingsadres en de VLAN-ID als lijstsleutel gebruikt, kunt u het VLAN-nummer (daddr . 123) direct opgeven: table netdev t { set s { typeof ether saddr . vlan id size 2048 flags dynamic,timeout timeout 1m } chain c { type filter hook ingress device eth0 priority 0; policy accept; ether type != 8021q update @s { ether daddr . 123 } counter } }
  • Een nieuwe "destroy"-opdracht toegevoegd om objecten onvoorwaardelijk te verwijderen (in tegenstelling tot de delete-opdracht genereert deze geen ENOENT bij het verwijderen van een ontbrekend object). Vereist minimaal Linux kernel 6.3-rc. destroy table ip filter

Bron: opennet.ru

Voeg een reactie