nftables csomagszűrő kiadás 1.0.7

Megjelent az nftables 1.0.7 csomagszűrő kiadása, amely egyesíti az IPv4, IPv6, ARP és hálózati hidak csomagszűrő interfészeit (az iptables, ip6table, arptables és ebtables helyettesítésére). Az nftables csomag felhasználói térben futó csomagszűrő komponenseket tartalmaz, míg a kernel szintjét az nf_tables alrendszer biztosítja, amely a 3.13-as kiadás óta a Linux kernel része. Kernel szinten csak egy általános, protokollfüggetlen interfész biztosított, amely alapvető funkciókat biztosít az adatok csomagokból történő kinyeréséhez, az adatokkal kapcsolatos műveletek végrehajtásához és az áramlás szabályozásához.

Magukat a szűrési szabályokat és a protokoll-specifikus kezelőket felhasználói térbeli bájtkódba fordítják, majd ezt a bájtkódot a Netlink interfész segítségével betöltik a kernelbe, és egy speciális, BPF-hez (Berkeley Packet Filters) hasonlító virtuális gépben hajtják végre a kernelben. Ez a megközelítés lehetővé teszi a kernel szinten futó szűrőkód méretének jelentős csökkentését, valamint az elemzési szabályok összes funkciójának és a protokollokkal való munka logikájának a felhasználói térbe való áthelyezését.

Nagy változások:

  • A Linux kernel 6.2+ verzióját futtató rendszereken a vxlan, geneve, gre és gretap protokollleképezések támogatása hozzáadásra került, lehetővé téve az egyszerű kifejezések a beágyazott csomagok fejléceinek ellenőrzését. Például a VxLAN-ból származó beágyazott csomag fejlécében lévő IP-cím ellenőrzéséhez használhatja a szabályokat (anélkül, hogy először ki kellene bontani a VxLAN fejlécet, és a szűrőt a vxlan0 interfészhez kellene kötni): ... udp dport 4789 vxlan ip protokoll udp ... udp dport 4789 vxlan ip saddr 1.2.3.0. 24/4789 ... udp dport 1.2.3.4 vxlan ip saddr . vxlan ip daddr { 4.3.2.1 . XNUMX }
  • A készletlista elemének részleges törlése után a maradékok automatikus összevonásának támogatása megvalósult, amely lehetővé teszi egy elem vagy egy tartomány egy részének törlését egy meglévő tartományból (korábban egy tartományt csak teljesen lehetett törölni). Például, miután eltávolította a 25-ös elemet a 24-30 és 40-50 tartományú készletlistáról, a lista 24, 26-30 és 40-50 marad. Az automatikus összevonás működéséhez szükséges javításokat az 5.10+ rendszermag stabil ágainak karbantartási kiadásai kínálják fel. # nft lista szabálykészlet tábla ip x { set y { typeof tcp dport flags interval auto-merge elements = { 24-30, 40-50 } } } # nft delete element ip xy { 25 } # nft lista szabálykészlet tábla ip x { set y { typeof tcp dport flags interval auto-merge elements = { 24, 26-30, 40-50 } }
  • Lehetővé teszi a névjegyek és tartományok használatát a címfordítás (NAT) leképezésekor. table ip nat { lánc előútválasztás { type nat hook prerouting priority dstnat; szabályzat elfogadása; dnat to ip daddr. tcp dport térkép { 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 } kitartó } }
  • Hozzáadott támogatás az „utolsó” kifejezéshez, amely lehetővé teszi egy szabályelem vagy halmazlista utolsó használatának időpontját. A funkció az 5.14-es Linux kerneltől kezdve támogatott. táblázat ip x { set y { typeof ip daddr . tcp dport size 65535 flags dynamic,timeout last timeout 1h } chain z { type filter hook output priority filter; szabályzat elfogadása; frissítés @y { ip daddr . tcp dport } } } # nft lista set ip xy table ip x { set y { typeof ip daddr . tcp dport size 65535 jelöli a dynamic,timeout last timeout 1h elements = { 172.217.17.14 . 443 utoljára használt 1s591ms időtúllépés 1h lejár 59m58s409ms, 172.67.69.19 . 443 utoljára használt 4s636ms időtúllépés 1h lejár 59m55s364ms, 142.250.201.72 . 443 utoljára használt 4s748ms időtúllépés 1h lejár 59m55s252ms, 172.67.70.134 . 443 utoljára használt 4s688ms időtúllépés 1h lejár 59m55s312ms, 35.241.9.150 . 443 utoljára használt 5s204ms időtúllépés 1h lejár 59m54s796ms, 138.201.122.174 . 443 utoljára használt 4s537ms időtúllépés 1h lejár 59m55s463ms, 34.160.144.191 . 443 utoljára használt 5s205ms időtúllépés 1h lejár 59m54s795ms, 130.211.23.194 . 443 utoljára használt 4s436ms időtúllépés 1h lejár 59m55s564ms } } }
  • Hozzáadtuk a kvóták készletlistákban történő meghatározásának lehetőségét. Például az egyes cél IP-címek forgalmi kvótájának meghatározásához megadhatja: table netdev x { set y { typeof ip daddr size 65535 quota over 10000 mbyte } chain y { type filter hook egress device "eth0" priority filter; szabályzat elfogadása; ip daddr @y drop } } # nft add element inet xy { 8.8.8.8 } # ping -c 2 8.8.8.8 # nft lista szabálykészlet táblázat netdev x { set y { type ipv4_addr size 65535 quota over 10000 mbyte elements = { 8.8.8.8 elements = . 10000 kvóta 196 mbyte felett használt 0 bájt } } chain y { type filter hook egress device “ethXNUMX” priority filter; szabályzat elfogadása; ip apa @y drop } }
  • A halmazlistákban konstansok használata megengedett. Például, ha a célcímet és a VLAN-azonosítót listakulcsként használja, közvetlenül megadhatja a VLAN-számot (daddr . 123): 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; szabályzat elfogadása; ether type != 8021q frissítés @s { ether daddr . 123 } számláló } }
  • Egy új "destroy" parancs hozzáadva az objektumok feltétel nélküli törléséhez (a delete paranccsal ellentétben nem generál ENOENT-t, amikor egy hiányzó objektumot próbál törölni). A működéshez legalább Linux kernel 6.3-rc szükséges. tábla ip szűrő megsemmisítése

Forrás: opennet.ru

Hozzászólás