Az nftables 1.1.0 csomagszűrő kiadása

Megjelent az nftables 1.1.0 verziójú csomagszűrő kiadása, amely egységesíti a csomagszűrési interfészeket IPv4, IPv6, ARP és hálózati hídként (célja az iptables, ip6tables, arptables és ebtables helyettesítése). A jelentős verziószám-változás nem kapcsolódik radikális változásokhoz, hanem csak a tizedes számok sorozatos folytatásának következménye (az előző kiadás 1.0.9 volt). Egyidejűleg megjelent a kísérő libnftnl 1.2.7 könyvtár kiadása is, amely alacsony szintű API-t nyújt az nf_tables alrendszerrel való interakcióhoz.

Az nftables csomagba tartoznak a felhasználói térben működő csomagszűrő komponensek, míg a kernel szintjén az nf_tables alrendszer látja el a feladatot, amely a Linux kernel 3.13-as verziójától kezdve érhető el. A kernel szintjén csak egy általános interfész áll rendelkezésre, amely független a konkrét protokolltól, és alapvető funkciókat biztosít a csomagokból származó adatok kinyerésére, az adatokkal végzett műveletekre és az adatfolyam kezelésére.

Közvetlenül a szűrési szabályok és a protokollspecifikus kezelők felhasználói térben bájt kódba vannak fordítva, majd ezt a bájt kódot a Netlink interfész segítségével betöltik a kernelbe, ahol speciális környezetben végrehajtásra kerül. virtuális gépben, amely a BPF (Berkeley Packet Filters) eljárásra emlékeztet. Ez a megközelítés jelentősen csökkenti a kernel szinten működő szűrési kód méretét, miközben az összes szabályok parszolásával és a protokollokkal kapcsolatos logikával kapcsolatos funkciót a felhasználói térbe helyezi.

Főbb változások:

  • A map-kifejezésekben bevezetésre került a változók támogatása: define dst_map = { ::1234 : 5678 } table ip6 nat { map dst_map { typeof ip6 daddr : tcp dport; elements = $dst_map } chain prerouting { ip6 nexthdr tcp redirect to ip6 daddr map @dst_map } }
  • VLAN támogatás került bevezetésre: 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 accept
  • A 'log' kifejezésekhez új karakterlánc-preprocesszort alkalmaztak, amely támogatja a változókat: define message=»test» log prefix «my $message»
  • A 'meta hour' kifejezés értékének kiszámítása során megvalósult a negatív időeltolás kezelése az időzónában, amelyet a TZ környezeti változó határoz meg: TZ=UTC-4 nft add rule x y meta hour «22:00»
  • Biztosították a bájtok sorrendjének átalakítását ct és meta kifejezések használatakor, valamint a set-készletekben történő egyesítési műveleteknél és tartománymegadásnál. map mapv6 { typeof ip6 dscp : meta mark; } meta mark set ip6 dscp map @map1 az alábbi bájtkód keletkezik: [ 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 ]
  • Megújult a 'replace rule' parancs támogatása. 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 }’
  • Újra lehetséges hálózati eszközök hozzáadása meglévő flowtable-hez: create flowtable inet filter f1 { hook ingress priority 0; counter } add flowtable inet filter f1 { devices = { dummy1 } ; }
  • Megoldották a 'create set' parancs használatával kapcsolatos problémákat: define ip-block-4 = { 1.1.1.1 } create set netdev filter ip-block-4-test { type ipv4_addr flags interval auto-merge elements = $ip-block-4 }
  • Megoldották a TCP lehetőségek numerikus ábrázolásával kapcsolatos problémákat: tcp option 254
  • Megoldották a meta és ct kifejezések használatával kapcsolatos problémákat map-készletekben: meta mark set vlan id map { 1 : 0x00000001, 4095 : 0x00004095 }
  • A payload és concat kifejezésekben tilos 512 bájtnál nagyobb méretű adatokat megadni.
  • A „nft describe” parancs végrehajtásakor figyelembe vételre kerülnek a group, rt_mark és rt_realms fájlok értékei, amelyek az /etc/iproute2/ és a /usr/share/iproute2/ könyvtárakban találhatók. # nft describe meta rtclassid meta kifejezés, adat típusa realm (routing realm) (alap típus: integer), 32 bit Előre definiált szimbolikus konstansok az /etc/iproute2/rt_realms-ból (decimális formátumban): cosmos 0 Elutasító állítás tartománnyal meta mark set 0-100
  • Felgyorsult a táblázatlistázás művelete. Támogatásra került a -t/—terse opció a „list table” és a „list set” parancsok gyorsítására.
  • A meter kifejezések dinamikus set-csoportokká való átkonvertálása biztosítva van: add rule t c tcp dport 80 meter m size 128 { ip saddr timeout 2s limit rate 10/second } átkonvertálva lesz 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 }
  • A JSON formátumú megjelenítéshez hozzáadva a synproxy és a map-csoportok támogatása az egyesített adatokkal.
  • A JSON formátumban megadott set-csoportokban implementálták az auto-merge jelzőt.
  • A JSON formátumú megjelenítésekor több eszköz megadását a „chain” blokkban engedélyezték.
  • Az -f/—filename opciók használatakor a relatív elérési utak kezelése a jelenlegi fájl könyvtára alapján történik.
  • Az -I/—include opciók használatakor az alapértelmezett elérési útvonalak végrehajtása mostantól a lista végéről történik.
  • Az -o/—optimize opciók funkcióinak működését kijavították az érték számlálókat tartalmazó kifejezésekkel: # nft -c -o -f ruleset.nft Egyesítés: ruleset.nft:5:17-45: ct state invalid counter drop ruleset.nft :6:17-59: ct state established,related counter accept egyesítve: ct state vmap { invalid counter : drop, established counter : accept, related counter : accept } Egyesítés: ruleset.nft:7:17-43: tcp dport 80 counter accept ruleset.nft:8:17-44: tcp dport 123 counter accept egyesítve: tcp dport { 80, 123 } counter accept Egyesítés: 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 egyesítve: 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 }
  • Visszaállította a set elem dump fájlok kompatibilitását, amelyeket a nftables 0.9.8 verziója előtt készítettek.

Forrás: opennet.ru

Megbízható hosting vásárlása weboldalak számára, DDoS védelemmel, VPS VDS szerverek. 🔥 Megbízható webtárhely vásárlása DDoS védelemmel, VPS VDS szerverek | ProHoster