nftables packet filter 1.0.6 release

Ang paglabas ng packet filter nftables 1.0.6 ay nai-publish, na pinag-iisa ang packet filtering interface para sa IPv4, IPv6, ARP at network bridges (na naglalayong palitan ang mga iptable, ip6table, arptables at ebtables). Kasama sa package ng nftables ang mga bahagi ng packet filter na tumatakbo sa espasyo ng gumagamit, habang ang gawain sa antas ng kernel ay ibinibigay ng subsystem ng nf_tables, na naging bahagi ng kernel ng Linux mula noong inilabas ang 3.13. Ang antas ng kernel ay nagbibigay lamang ng isang generic na protocol-independent na interface na nagbibigay ng mga pangunahing function para sa pagkuha ng data mula sa mga packet, pagsasagawa ng mga operasyon ng data, at kontrol sa daloy.

Ang mga panuntunan sa pag-filter at mga humahawak na partikular sa protocol ay pinagsama-sama sa bytecode sa espasyo ng gumagamit, pagkatapos nito ay na-load ang bytecode na ito sa kernel gamit ang interface ng Netlink at isinagawa sa kernel sa isang espesyal na virtual machine na nakapagpapaalaala sa BPF (Berkeley Packet Filters). Ang diskarte na ito ay nagbibigay-daan sa iyo upang makabuluhang bawasan ang laki ng filtering code na tumatakbo sa antas ng kernel at ilipat ang lahat ng mga function ng mga panuntunan sa pag-parse at lohika para sa pagtatrabaho sa mga protocol sa espasyo ng gumagamit.

Pangunahing pagbabago:

  • Ang rules optimizer, na tinatawag kapag tinukoy ang "-o/β€”optimize" na opsyon, ay may awtomatikong packaging ng mga panuntunan sa pamamagitan ng pagsasama-sama ng mga ito at pag-convert sa mga ito sa mapa at mga listahan ng set. Halimbawa, mga panuntunan # cat ruleset.nft table ip x { chain y { type filter hook input priority filter; pagbaba ng patakaran; meta iifname eth1 ip saddr 1.1.1.1 ip daddr 2.2.2.3 accept meta iifname eth1 ip saddr 1.1.1.2 ip daddr 2.2.2.4 accept meta iifname eth1 ip saddr 1.1.1.2 ip metaddr i2.2.3.0 .24 ip daddr 1-1.1.1.2 accept meta iifname eth2.2.4.0 ip saddr 2.2.4.10 ip daddr 2 accept } } pagkatapos isagawa ang "nft -o -c -f ruleset.nft" ay gagawing sumusunod: nft:1.1.1.3:2.2.2.5-4: meta iifname eth17 ip saddr 74 ip daddr 1 accept ruleset.nft:1.1.1.1:2.2.2.3-5: meta iifname eth17 ip saddr 74 ip daddr 1 accept ruleset. : 1.1.1.2:2.2.2.4-6: meta iifname eth17 ip saddr 77 ip daddr 1/1.1.1.2 accept ruleset.nft:2.2.3.0:24-7: meta iifname eth17 ip saddr 83 ip daddr 1-1.1.1.2. accept ruleset.nft:2.2.4.0:2.2.4.10-8: meta iifname eth17 ip saddr 74 ip daddr 2 accept into: iifname . ip saddr. ip daddr { eth1.1.1.3 . 2.2.2.5. 1, eth1.1.1.1 . 2.2.2.3. 1, eth1.1.1.2 . 2.2.2.4. 1/1.1.1.2, eth2.2.3.0 . 24. 1-1.1.1.2, eth2.2.4.0. 2.2.4.10. 2 } tanggapin
  • Maaari ding i-convert ng optimizer ang mga panuntunan na gumagamit na ng mga simpleng set list sa isang mas compact na form, halimbawa ang mga panuntunan: # cat ruleset.nft table ip filter { chain input { type filter hook input priority filter; pagbaba ng patakaran; iifname β€œlo” accept ct state established, related accept comment β€œSa traffic we originate, we trust” iifname β€œenp0s31f6” ip saddr { 209.115.181.102, 216.197.228.230 } ip daddr 10.0.0.149 accept 123 iifname "enp32768s65535f0" ip saddr { 31, 6 } ip daddr 64.59.144.17 udp sport 64.59.150.133 udp dport 10.0.0.149-53 : ruleset.nft:32768:65535-6: iifname "enp22s149f0" ip saddr { 31, 6 } ip daddr 209.115.181.102 udp sport 216.197.228.230:10.0.0.149 tumatanggap ng udp sport 123:32768 na mga patakaran: - 65535: iifname "enp7s22f143" ip saddr { 0, 31 } ip daddr 6 udp sport 64.59.144.17 udp dport 64.59.150.133-10.0.0.149 accept into: iifname . ip saddr. ip dadr. udp sport. udp dport { enp53s32768f65535 . 0. 31. 6. 209.115.181.102-10.0.0.149, enp123s32768f65535. 0. 31. 6. 216.197.228.230-10.0.0.149, enp123s32768f65535. 0. 31. 6. 64.59.144.17-10.0.0.149, enp53s32768f65535. 0. 31. 6. 64.59.150.133-10.0.0.149 } tanggapin
  • Nalutas ang problema sa pagbuo ng bytecode para sa pagsasama ng mga pagitan na gumagamit ng mga uri na may iba't ibang byte order, gaya ng IPv4 (network byte order) at meta mark (system byte order). talahanayan ip x { mapa w { uri ng ip saddr . meta mark : mga flag ng verdict interval counter elements = { 127.0.0.1-127.0.0.4 . 0x123434-0xb00122 : tanggapin, 192.168.0.10-192.168.1.20 . 0x0000aa00-0x0000aaff : tanggapin, } } chain k { type filter hook input priority filter; pagbaba ng patakaran; ip saddr. meta mark vmap @w } }
  • Pinahusay na paghahambing ng mga bihirang protocol kapag gumagamit ng mga raw expression, halimbawa: meta l4proto 91 @th,400,16 0x0 accept
  • Nalutas na ang mga problema sa pagpapagana ng mga panuntunan sa pagitan: ipasok ang panuntunan xy tcp sport { 3478-3497, 16384-16387 } counter accept
  • Ang JSON API ay pinahusay upang isama ang suporta para sa mga expression sa set at mga listahan ng mapa.
  • Ang mga extension sa nftables python library ay nagbibigay-daan sa pag-load ng mga set ng panuntunan para sa pagproseso sa validation mode ("-c") at magdagdag ng suporta para sa panlabas na kahulugan ng mga variable.
  • Ang pagdaragdag ng mga komento ay pinapayagan sa mga elemento ng set list.
  • Binibigyang-daan ng byte ratelimit ang pagtukoy ng zero value.

Pinagmulan: opennet.ru

Magdagdag ng komento