Uitgave van de nftables packet filter 1.1.0

De uitgave van de nftables-pakketfilterversie 1.1.0 is gepubliceerd, die de interfaces voor pakketfiltering voor IPv4, IPv6, ARP en netwerkm [bridges] uniformiseert (bedoeld ter vervanging van iptables, ip6tables, arptables en ebtables). De significante wijziging van het versienummer is niet gerelateerd aan ingrijpende veranderingen, maar is slechts een gevolg van de voortzetting van de nummering in decimale notatie (de vorige uitgave was 1.0.9). Tegelijkertijd is ook de bijbehorende bibliotheek libnftnl 1.2.7 gepubliceerd, die een laagdrempelige API biedt voor interactie met het nf_tables-subsysteem.

De nftables-pakket bevat gebruikersruimte componenten van de pakketfilter, terwijl op kernniveau het nf_tables subsysteem de werking verzorgt, dat deel uitmaakt van de Linux-kernel sinds versie 3.13. Op kernniveau wordt slechts een algemene interface geboden, niet afhankelijk van een specifiek protocol en die basisfunctionaliteiten biedt voor het extraheren van gegevens uit pakketten, het uitvoeren van gegevensbewerkingen en het beheren van stromingen.

Directe filtratieregels en protocolspecifieke verwerkers worden in bytecode gecompileerd in de gebruikersruimte, waarna deze bytecode via de Netlink-interface in de kern wordt geladen en in de kern wordt uitgevoerd in een speciale een virtuele machine, die doet denken aan BPF (Berkeley Packet Filters). Deze aanpak maakt het mogelijk om de grootte van de filtering code die op kernniveau draait aanzienlijk te verkleinen en alle functies voor het parseren van regels en de logica voor de werking met protocollen naar de gebruikersruimte te verplaatsen.

Belangrijkste wijzigingen:

  • In map-uitdrukkingen is ondersteuning voor variabelen toegevoegd: define dst_map = { ::1234 : 5678 } tabel ip6 nat { map dst_map { typeof ip6 daddr : tcp dport; elementen = $dst_map } keten prerouting { ip6 nexthdr tcp omleiden naar ip6 daddr map @dst_map } }
  • Ondersteuning voor VLAN is toegevoegd: ip saddr 10.1.1.1 icmp type echo-request vlan id set 321 # payload ether type 8021ad vlan id 10 vlan type 8021q vlan id 100 vlan type ip accepteer
  • Voor de uitdrukkingen "log" is een nieuwe string-preprocessor met ondersteuning voor variabelen gebruikt: define message=»test» log prefix «my $message»
  • Bij het berekenen van de waarde van de uitdrukking "meta hour" is verwerking van negatieve verschuivingen in de tijdzone, ingesteld via de omgevingsvariabelen TZ, geïmplementeerd: TZ=UTC-4 nft voeg regel toe x y meta hour «22:00»
  • De volgorde van bytes is aangepast bij het gebruik van ct- en meta-uitdrukkingen, evenals bij gebruik van samenvoegingen en het specificeren van reeksen in set-verzamelingen. map mapv6 { typeof ip6 dscp : meta mark; } meta mark set ip6 dscp map @map1 de bytecode zal zijn: [ payload load 2b @ network header + 0 => reg 1 ] [ bitwise reg 1 = ( reg 1 & 0x0000c00f ) ^ 0x00000000 ] [ byteorder reg 1 = ntoh(reg 1, 2, 2) ] [ bitwise reg 1 = ( reg 1 > 0x00000006 ) ] [ lookup reg 1 set mapv6 dreg 1 ] [ meta set mark with reg 1 ]
  • De ondersteuning voor de opdracht "replace rule" is hersteld. replace rule ip t1 c1 handle 3 'jhash ip protocol . ip saddr mod 170 vmap { 0-94 : goto wan1, 95-169 : goto wan2, 170-269 }'
  • De mogelijkheid om netwerksapparaten toe te voegen aan bestaande flowtables is hersteld: create flowtable inet filter f1 { hook ingress priority 0; counter } voeg flowtable inet filter f1 toe { devices = { dummy1 } ; }
  • Problemen bij het gebruik van de opdracht "create set" zijn opgelost: define ip-block-4 = { 1.1.1.1 } create set netdev filter ip-block-4-test { type ipv4_addr flags interval auto-merge elementen = $ip-block-4 }
  • Problemen bij het gebruik van digitale weergave van TCP-opties zijn opgelost: tcp optie 254
  • Problemen bij het gebruik van meta- en ct-uitdrukkingen met map-verzamelingen zijn opgelost: meta mark set vlan id map { 1 : 0x00000001, 4095 : 0x00004095 }
  • In de expressies payload en concat is het verboden om gegevens groter dan 512 bytes op te geven.
  • Bij het uitvoeren van het commando ‘nft describe’ is er een registratie van waarden uit de bestanden group, rt_mark en rt_realms, geplaatst in de mappen /etc/iproute2/ en /use/share/iproute2/. # nft describe meta rtclassid meta expression, datatype realm (routing realm) (basetype integer), 32 bits vooraf gedefinieerde symbolische constanten uit /etc/iproute2/rt_realms (in decimaal): cosmos 0 Verwerp statement met bereik meta mark set 0-100
  • De operatie voor het weergeven van de tabellijst is versneld. Er is ondersteuning voor de optie -t/—terse geïmplementeerd voor de commando’s ‘list table’ en ‘list set’.
  • Er is conversie van meter-expressies naar dynamische set-groepen gerealiseerd: voeg regel t c tcp dport 80 meter m size 128 { ip saddr timeout 2s limit rate 10/second } toe, dit zal worden omgezet in set m { type ipv4_addr size 128 flags dynamic,timeout } tcp dport 80 update @m { ip saddr timeout 2s limit rate 10/second burst 5 packets }
  • In de JSON-weergave is ondersteuning voor synproxy-objecten en map-groepen met gecombineerde gegevens toegevoegd.
  • In set-groepen die in JSON-formaat zijn opgegeven, is ondersteuning voor de auto-merge-vlag geïmplementeerd.
  • Bij gebruik van de JSON-weergave is het toegestaan om meerdere apparaten op te geven in het blok ‘chain’.
  • Bij gebruik van de opties -f/—filename is de verwerking van paden ten opzichte van de huidige bestandlocatie mogelijk gemaakt.
  • Bij gebruik van de opties -I/—include wordt de doorloop van paden standaard nu vanaf het einde van de lijst uitgevoerd.
  • De werking van de opties -o/—optimize met expressies die tellerwaarden bevatten is betrouwbaar gemaakt: # nft -c -o -f ruleset.nft Samenvoegen: ruleset.nft:5:17-45: ct state invalid counter drop ruleset.nft :6:17-59: ct state established,related counter accept in: ct state vmap { invalid counter : drop, established counter : accept, related counter : accept } Samenvoegen: ruleset.nft:7:17-43: tcp dport 80 counter accept ruleset.nft:8:17-44: tcp dport 123 counter accept in: tcp dport { 80, 123 } counter accept Samenvoegen: ruleset.nft:9:17-64: ip saddr 1.1.1.1 ip daddr 2.2.2.2 counter accept ruleset.nft:10:17-62: ip saddr 1.1.1.2 ip daddr 3.3.3.3 counter drop in: ip saddr . ip daddr vmap { 1.1.1.1 . 2.2.2.2 counter : accept, 1.1.1.2 . 3.3.3.3 counter : drop }
  • De compatibiliteit met set-element dumps, gemaakt in nftables vóór versie 0.9.8, is hersteld.

Bron: opennet.ru

Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers 🔥 Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers | ProHoster