nftables pakettfiltri 1.0.6 väljalase

Avaldatud on paketifiltri nftables 1.0.6 väljalase, mis ühendab IPv4, IPv6, ARP ja võrgusildade pakettfiltri liidesed (eesmärgiks iptables, ip6table, arptables ja ebtables asendamine). Pakett nftables sisaldab pakettfiltri komponente, mis töötavad kasutajaruumis, samas kui kerneli tasemel töö tagab alamsüsteem nf_tables, mis on Linuxi kerneli osa olnud alates versioonist 3.13. Kerneli tase pakub ainult üldist protokollist sõltumatut liidest, mis pakub põhifunktsioone pakettidest andmete eraldamiseks, andmetoimingute tegemiseks ja voo juhtimiseks.

Filtreerimisreeglid ja protokollispetsiifilised töötlejad kompileeritakse kasutajaruumis baitkoodiks, misjärel laaditakse see baitkood Netlink liidese abil kernelisse ja käivitatakse kernelis spetsiaalses BPF-i meenutavas virtuaalmasinas (Berkeley Packet Filters). Selline lähenemine võimaldab oluliselt vähendada kerneli tasemel töötava filtreerimiskoodi suurust ning teisaldada kõik sõelumisreeglite ja protokollidega töötamise loogika funktsioonid kasutajaruumi.

Peamised muudatused:

  • Reeglite optimeerijal, mida kutsutakse välja, kui on määratud suvand "-o/—optimize", on reeglite automaatne pakkimine, kombineerides need ja teisendades need kaardi- ja komplektiloenditeks. Näiteks reeglid # cat rulett.nft tabel ip x { ahel y { type filter hook input priority filter; poliitika langus; meta iifname eth1 ip saddr 1.1.1.1 ip daddr 2.2.2.3 aktsepteeri meta iifname eth1 ip saddr 1.1.1.2 ip daddr 2.2.2.4 aktsepteeri meta iifname eth1 ip saddr 1.1.1.2 ip daddr 2.2.3.0 ip 24addr 1 .1.1.1.2 .2.2.4.0 ip daddr 2.2.4.10-2 aktsepteeri meta iifname eth1.1.1.3 ip saddr 2.2.2.5 ip daddr 4 aktsepteeri } } pärast käsu "nft -o -c -f ruleset.nft" täitmist teisendatakse järgmiseks: ruleset nft:17:74-1: meta iifname eth1.1.1.1 ip saddr 2.2.2.3 ip daddr 5 aktsepteeri reeglid.nft:17:74-1: meta iifname eth1.1.1.2 ip saddr 2.2.2.4 ip daddr 6.nft. : 17:77-1: meta iifname eth1.1.1.2 ip saddr 2.2.3.0 ip daddr 24/7 nõustu reeglitega.nft:17:83-1: meta iifname eth1.1.1.2 ip saddr 2.2.4.0 ip daddr 2.2.4.10. aktsepteeri reeglid.nft:8:17-74: meta iifname eth2 ip saddr 1.1.1.3 ip daddr 2.2.2.5 aktsepteeri sisse: iifname . ip saddr. ip isa { eth1 . 1.1.1.1. 2.2.2.3, eth1 . 1.1.1.2. 2.2.2.4, eth1 . 1.1.1.2. 2.2.3.0/24, eth1 . 1.1.1.2. 2.2.4.0-2.2.4.10, eth2. 1.1.1.3. 2.2.2.5 } nõustuma
  • Samuti saab optimeerija teisendada reeglid, mis juba kasutavad lihtsaid komplektide loendeid, kompaktsemaks vormiks, näiteks reeglid: # cat rulett.nft table ip filter { chain input { type filter hook input priority filter; poliitika langus; iifname “lo” aktsepteeri ct olek loodud, seotud aktsepteeri kommentaar “Liikluses lähtume, me usaldame” iifname “enp0s31f6” ip saddr { 209.115.181.102, 216.197.228.230 } ip daddr 10.0.0.149 sport 123-32768p65535d 0 võta vastu iIFName "ENP31S6F64.59.144.17" IP SADDR {64.59.150.133, 10.0.0.149} IP DADDR 53 UDP Sport 32768 UDP DPORT DPORT 65535-6 aktsepteerimist}} pärast "NFT -C -C -FF -reeglit.NFT" pakutud "nft -c -fift". : ruleset.nft:22:149-0: iifname "enp31s6f209.115.181.102" ip saddr { 216.197.228.230, 10.0.0.149 } ip daddr 123 udp sport 32768 udp sport 65535. 7 udp sport 22. 143. :0- 31: iifname "enp6s64.59.144.17f64.59.150.133" ip saddr { 10.0.0.149, 53 } ip daddr 32768 udp sport 65535 udp dport 0-31 võta vastu: iifname. ip saddr. ip isa. udp sport. udp dport { enp6s209.115.181.102f10.0.0.149 . 123. 32768. 65535. 0-31, enp6s216.197.228.230f10.0.0.149. 123. 32768. 65535. 0-31, enp6s64.59.144.17f10.0.0.149. 53. 32768. 65535. 0-31, enp6s64.59.150.133f10.0.0.149. 53. 32768. 65535. XNUMX-XNUMX } aktsepteerima
  • Lahendatud on baitkoodi genereerimise probleem erinevate baitide järjestusega tüüpe kasutavate intervallide liitmisel, nagu IPv4 (võrgu baitide järjekord) ja metamärk (süsteemi baitide järjekord). tabel ip x { map w { typeof ip saddr . metamärk : kohtuotsuse lipud intervallide loenduri elemendid = { 127.0.0.1-127.0.0.4 . 0x123434-0xb00122 : aktsepteeri, 192.168.0.10-192.168.1.20 . 0x0000aa00-0x0000aaff : aktsepteeri, } } ahel k { type filter hook input priority filter; poliitika langus; ip saddr. metamärk vmap @w } }
  • Täiustatud haruldaste protokollide võrdlus töötlemata avaldiste kasutamisel, näiteks: meta l4proto 91 @th,400,16 0x0 aktsepteeri
  • Probleemid reeglite intervallide lubamisega on lahendatud: sisesta reegel xy tcp sport { 3478-3497, 16384-16387 } counter aktsepteeri
  • JSON API-d on täiustatud, et see hõlmaks komplekti- ja kaardiloendis olevate avaldiste tuge.
  • Nftables pythoni teegi laiendused võimaldavad laadida reeglikomplekte töötlemiseks valideerimisrežiimis ("-c") ja lisavad tuge muutujate välisele määratlusele.
  • Kommentaaride lisamine on lubatud komplektide loendi elementides.
  • Baiti kiiruspiirang võimaldab määrata nullväärtuse.

Allikas: opennet.ru

Lisa kommentaar