Izdanje filtra paketa nftables 1.0.6

Objavljeno je izdanje filtera paketa nftables 1.0.6, koje objedinjuje sučelja za filtriranje paketa za IPv4, IPv6, ARP i mrežne mostove (s ciljem zamjene iptables, ip6table, arptables i ebtables). Paket nftables uključuje komponente filtera paketa koje se izvode u korisničkom prostoru, dok rad na razini kernela osigurava podsustav nf_tables, koji je dio Linux kernela od izdanja 3.13. Razina kernela pruža samo generičko sučelje neovisno o protokolu koje pruža osnovne funkcije za izdvajanje podataka iz paketa, izvođenje podatkovnih operacija i kontrolu toka.

Pravila filtriranja i rukovatelji specifični za protokol kompajliraju se u bajt kod u korisničkom prostoru, nakon čega se ovaj bajt kod učitava u kernel pomoću Netlink sučelja i izvršava u kernelu u posebnom virtualnom stroju koji podsjeća na BPF (Berkeley Packet Filters). Ovaj pristup vam omogućuje da značajno smanjite veličinu koda za filtriranje koji se izvodi na razini jezgre i premjestite sve funkcije pravila parsiranja i logike za rad s protokolima u korisnički prostor.

Velike promjene:

  • Optimizator pravila, koji se poziva kada je navedena opcija "-o/—optimize", ima automatsko pakiranje pravila njihovim kombiniranjem i pretvaranjem u karte i popise skupova. Na primjer, pravila # cat ruleset.nft table ip x { chain y { type filter hook input priority filter; pad politike; meta iifname eth1 ip saddr 1.1.1.1 ip daddr 2.2.2.3 prihvati meta iifname eth1 ip saddr 1.1.1.2 ip daddr 2.2.2.4 prihvati meta iifname eth1 ip saddr 1.1.1.2 ip daddr 2.2.3.0/24 prihvati meta iifname eth1 ip saddr 1.1.1.2 .2.2.4.0 ip daddr 2.2.4.10-2 accept meta iifname eth1.1.1.3 ip saddr 2.2.2.5 ip daddr 4 accept } } nakon izvođenja "nft -o -c -f ruleset.nft" bit će pretvoren na sljedeći način: ruleset . nft:17:74-1: meta iifname eth1.1.1.1 ip saddr 2.2.2.3 ip daddr 5 prihvati pravila.nft:17:74-1: meta iifname eth1.1.1.2 ip saddr 2.2.2.4 ip daddr 6 prihvati pravila.nft : 17:77-1: meta iifname eth1.1.1.2 ip saddr 2.2.3.0 ip daddr 24/7 prihvati pravila.nft:17:83-1: meta iifname eth1.1.1.2 ip saddr 2.2.4.0 ip daddr 2.2.4.10-8 prihvati skup pravila.nft:17:74-2: meta iifname eth1.1.1.3 ip saddr 2.2.2.5 ip daddr 1 prihvati u: iifname . ip saddr. ip daddr {eth1.1.1.1. 2.2.2.3. 1, eth1.1.1.2. 2.2.2.4. 1, eth1.1.1.2. 2.2.3.0. 24/1, eth1.1.1.2. 2.2.4.0. 2.2.4.10-2, eth1.1.1.3. 2.2.2.5. XNUMX } prihvatiti
  • Optimizator također može pretvoriti pravila koja već koriste jednostavne popise skupova u kompaktniji oblik, na primjer pravila: # cat ruleset.nft table ip filter { chain input { type filter hook input priority filter; pad politike; iifname “lo” prihvati ct stanje uspostavljeno, povezano prihvati komentar “U prometu mi potječemo, vjerujemo” iifname “enp0s31f6” ip saddr { 209.115.181.102, 216.197.228.230 } ip daddr 10.0.0.149 udp sport 123 udp dport 32768-65535 prihvati iifname "enp0s31f6" ip saddr { 64.59.144.17, 64.59.150.133 } ip daddr 10.0.0.149 udp sport 53 udp dport 32768-65535 accept } } nakon izvršavanja "nft -o -c -f ruleset.nft" bit će pakiran na sljedeći način : ruleset.nft:6:22-149: iifname "enp0s31f6" ip saddr { 209.115.181.102, 216.197.228.230 } ip daddr 10.0.0.149 udp sport 123 udp dport 32768-65535 prihvati pravila.nft:7:22 - 143: iifname "enp0s31f6" ip saddr { 64.59.144.17, 64.59.150.133 } ip daddr 10.0.0.149 udp sport 53 udp dport 32768-65535 prihvati u: iifname . ip saddr. ip daddr. udp sport. udp dport { enp0s31f6 . 209.115.181.102. 10.0.0.149. 123. 32768-65535, enp0s31f6. 216.197.228.230. 10.0.0.149. 123. 32768-65535, enp0s31f6. 64.59.144.17. 10.0.0.149. 53. 32768-65535, enp0s31f6. 64.59.150.133. 10.0.0.149. 53. 32768-65535 } prihvatiti
  • Riješen problem s generiranjem bajt koda za intervale spajanja koji koriste vrste s različitim redoslijedom bajtova, kao što su IPv4 (mrežni redoslijed bajtova) i meta oznaka (sistemski redoslijed bajtova). tablica ip x { karta w { tipof ip saddr. meta oznaka: zastavice presude elementi brojača intervala = {127.0.0.1-127.0.0.4. 0x123434-0xb00122 : prihvatiti, 192.168.0.10-192.168.1.20 . 0x0000aa00-0x0000aaff : prihvati, } } lanac k { tip filtra hook input priority filter; pad politike; ip saddr. meta oznaka vmap @w } }
  • Poboljšana usporedba rijetkih protokola pri korištenju neobrađenih izraza, na primjer: meta l4proto 91 @th,400,16 0x0 accept
  • Problemi s omogućavanjem pravila u intervalima su riješeni: umetnite pravilo xy tcp sport { 3478-3497, 16384-16387 } counter accept
  • JSON API poboljšan je tako da uključuje podršku za izraze u popisima skupova i mapa.
  • Proširenja biblioteke nftables python dopuštaju učitavanje skupova pravila za obradu u načinu provjere valjanosti ("-c") i dodaju podršku za vanjsku definiciju varijabli.
  • Dodavanje komentara dopušteno je u elementima popisa skupova.
  • Byte ratelimit omogućuje određivanje nulte vrijednosti.

Izvor: opennet.ru

Dodajte komentar