nftables paka filtrilo 1.0.6 eldono

La nftables 1.0.6 paka filtrila eldono estis publikigita, unuigante pakaĵetfiltrilinterfacojn por IPv4, IPv6, ARP kaj retaj pontoj (celitaj por anstataŭigi iptables, ip6table, arptables kaj ebtables). La pako nftables inkluzivas pakatajn filtrilkomponentojn, kiuj funkcias en uzantspaco, dum la kernnivelo estas provizita de la subsistemo nf_tables, kiu estas parto de la Linukso-kerno ekde eldono 3.13. Sur la kernnivelo, nur senmarka protokol-sendependa interfaco estas disponigita kiu disponigas bazajn funkciojn por eltiri datenojn de pakaĵetoj, elfarante operaciojn sur datenoj, kaj kontrolante fluon.

La filtraj reguloj mem kaj protokol-specifaj pritraktiloj estas kompilitaj en uzantspacan bajtkodon, post kiu tiu bajtokodo estas ŝarĝita en la kernon uzante la Netlink-interfacon kaj efektivigita en la kerno en speciala virtuala maŝino simila al BPF (Berkeley Packet Filters). Ĉi tiu aliro ebligas signife redukti la grandecon de la filtra kodo funkcianta ĉe la kernnivelo kaj movi ĉiujn funkciojn de analizaj reguloj kaj la logikon labori kun protokoloj en uzantspacon.

Ĉefaj ŝanĝoj:

  • En la reguloj-optimumigilo vokita dum specifado de la opcio "-o/--optimize", aŭtomata pakado de reguloj estis starigita kombinante ilin kaj konvertante ilin en map- kaj aro-listoj. Ekzemple, la reguloj estas # cat ruleset.nft table ip x { chain y { type filter hook input priority filter; politika guto; meta iifname eth1 ip saddr 1.1.1.1 ip daddr 2.2.2.3 akceptu meta iifname eth1 ip saddr 1.1.1.2 ip daddr 2.2.2.4 akceptu meta iifname eth1 ip saddr 1.1.1.2 ip daddr 2.2.3.0 eth24 ip saddr 1/1.1.1.2. .2.2.4.0 ip daddr 2.2.4.10-2 akceptu meta iifname eth1.1.1.3 ip saddr 2.2.2.5 ip daddr 4 akceptu } } post "nft -o -c -f ruleset.nft" estos konvertita al la jena: ruleset. nft:17:74-1: meta iifname eth1.1.1.1 ip saddr 2.2.2.3 ip daddr 5 akceptu ruleset.nft:17:74-1: meta iifname eth1.1.1.2 ip saddr 2.2.2.4 ip daddr 6 akceptu ruleset.nft: 17:77-1: meta iifname eth1.1.1.2 ip saddr 2.2.3.0 ip daddr 24/7 akceptu ruleset.nft:17:83-1: meta iifname eth1.1.1.2 ip saddr 2.2.4.0 ip daddr 2.2.4.10-8 akceptu ruleset.nft:17:74-2: meta iifname eth1.1.1.3 ip saddr 2.2.2.5 ip daddr 1 akceptu en: iifname . ip saddr . ip daddr { eth1.1.1.1 . 2.2.2.3. 1, et1.1.1.2 . 2.2.2.4. 1, et1.1.1.2 . 2.2.3.0. 24/1, et1.1.1.2 . 2.2.4.0. 2.2.4.10-2, et1.1.1.3 . 2.2.2.5. XNUMX } akcepti
  • La optimumigilo ankaŭ povas kondensi regulojn kiuj jam uzas simplajn arolistojn en pli kompaktan formon, kiel ekzemple: # cat ruleset.nft table ip filter { chain input { type filter hook input priority filter; politika guto; iifname "lo" accept ct state established,related accept comment "In traffic we originate, we trust" 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 accept 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 akceptu } } post rulado de "nft" reguloj -et. : 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 sporto 32768 udp:-dprt:-65535:-7 udp:-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 akcepti en: iifname . ip saddr . ip daddr . udp sporto . 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 } akcepti
  • Solvis problemon kun bajtkoda generacio por kunfandado de intervaloj, kiuj uzas tipojn kun malsama endianeco, kiel IPv4 (reto endian) kaj metamarko (sistema endian). tablo ip x { mapo w { tipo de ip saddr . metamarko : verdikto flagoj intervalokalkulilo elementoj = {127.0.0.1-127.0.0.4 . 0x123434-0xb00122 : akcepti, 192.168.0.10-192.168.1.20. 0x0000aa00-0x0000aaff : akcepti, } } ĉeno k { tipo filtrilo hoko enigo prioritata filtrilo; politika guto; ip saddr . metamarko vmap @w } }
  • Plibonigitaj maloftaj protokolaj mapadoj dum uzado de krudaj esprimoj, ekzemple: meta l4proto 91 @th,400,16 0x0 akcepti
  • Korektitaj problemoj kun ebligaj reguloj je intervaloj: enmeti regulon xy tcp sport { 3478-3497, 16384-16387 } counter accept
  • La JSON API estis plibonigita por subteni esprimojn en aro kaj mapo-listoj.
  • En etendaĵoj al la nftables-python-biblioteko, reguloj rajtas esti ŝarĝitaj por prilaborado en kontrolreĝimo ("-c") kaj subteno por ekstera varia difino estis aldonita.
  • Aldoni komentojn estas permesita en la elementoj de arolistoj.
  • Estas permesite specifi nulvaloron en bajta rapidlimo.

fonto: opennet.ru

Aldoni komenton