nftables ΠΏΠ°ΠΊΠ΅Ρ‚ Ρ„ΠΈΠ»Ρ‚Π΅Ρ€ 1.0.6 ΠΎΡΠ»ΠΎΠ±ΠΎΠ΄ΡƒΠ²Π°ΡšΠ΅

ОбјавСно Π΅ ΠΎΠ±Ρ˜Π°Π²ΡƒΠ²Π°ΡšΠ΅Ρ‚ΠΎ Π½Π° ΠΏΠ°ΠΊΠ΅Ρ‚Π½ΠΈΡ‚Π΅ Ρ„ΠΈΠ»Ρ‚Ρ€ΠΈ nftables 1.0.6, ΠΎΠ±Π΅Π΄ΠΈΠ½ΡƒΠ²Π°Ρ˜ΡœΠΈ Π³ΠΈ ΠΈΠ½Ρ‚Π΅Ρ€Ρ„Π΅Ρ˜ΡΠΈΡ‚Π΅ Π·Π° Ρ„ΠΈΠ»Ρ‚Ρ€ΠΈΡ€Π°ΡšΠ΅ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ Π·Π° IPv4, IPv6, ARP ΠΈ ΠΌΡ€Π΅ΠΆΠ½ΠΈ мостови (Π½Π°ΠΌΠ΅Π½Π΅Ρ‚ΠΈ Π΄Π° Π³ΠΈ Π·Π°ΠΌΠ΅Π½Π°Ρ‚ iptables, ip6table, arptables ΠΈ ebtables). ΠŸΠ°ΠΊΠ΅Ρ‚ΠΎΡ‚ nftables Π²ΠΊΠ»ΡƒΡ‡ΡƒΠ²Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΈ Π·Π° Ρ„ΠΈΠ»Ρ‚Π΅Ρ€ Π·Π° ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ ΠΊΠΎΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ Π²ΠΎ корисничкиот простор, Π΄ΠΎΠ΄Π΅ΠΊΠ° Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚Π° Π½Π° Π½ΠΈΠ²ΠΎ Π½Π° Ρ˜Π°Π΄Ρ€ΠΎΡ‚ΠΎ Π΅ ΠΎΠ±Π΅Π·Π±Π΅Π΄Π΅Π½Π° ΠΎΠ΄ потсистСмот nf_tables, кој Π΅ Π΄Π΅Π» ΠΎΠ΄ ΠΊΠ΅Ρ€Π½Π΅Π»ΠΎΡ‚ Линукс ΠΎΠ΄ ΠΎΠ±Ρ˜Π°Π²ΡƒΠ²Π°ΡšΠ΅Ρ‚ΠΎ 3.13. Нивото Π½Π° Ρ˜Π°Π΄Ρ€ΠΎΡ‚ΠΎ ΠΎΠ±Π΅Π·Π±Π΅Π΄ΡƒΠ²Π° само Π³Π΅Π½Π΅Ρ€ΠΈΡ‡ΠΊΠΈ ΠΈΠ½Ρ‚Π΅Ρ€Ρ„Π΅Ρ˜Ρ нСзависСн ΠΎΠ΄ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» кој ΠΎΠ±Π΅Π·Π±Π΅Π΄ΡƒΠ²Π° основни Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π·Π° ΠΈΠ·Π²Π»Π΅ΠΊΡƒΠ²Π°ΡšΠ΅ ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ ΠΎΠ΄ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ, ΠΈΠ·Π²Ρ€ΡˆΡƒΠ²Π°ΡšΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ со ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ ΠΈ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π° Π½Π° ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΡ‚.

Π‘Π°ΠΌΠΈΡ‚Π΅ ΠΏΡ€Π°Π²ΠΈΠ»Π° Π·Π° Ρ„ΠΈΠ»Ρ‚Ρ€ΠΈΡ€Π°ΡšΠ΅ ΠΈ Ρ€Π°ΠΊΡƒΠ²Π°Ρ‡ΠΈΡ‚Π΅ спСцифични Π·Π° ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΎΡ‚ сС ΠΊΠΎΠΌΠΏΠ°Ρ˜Π»ΠΈΡ€Π°Π°Ρ‚ Π²ΠΎ Π±Π°Ρ˜Ρ‚Π΅ΠΊΠΎΠ΄ Π½Π° кориснички простор, ΠΏΠΎ ΡˆΡ‚ΠΎ овој Π±Π°Ρ˜Ρ‚Π΅ΠΊΠΎΠ΄ сС Π²Ρ‡ΠΈΡ‚ΡƒΠ²Π° Π²ΠΎ ΠΊΠ΅Ρ€Π½Π΅Π»ΠΎΡ‚ со помош Π½Π° ΠΈΠ½Ρ‚Π΅Ρ€Ρ„Π΅Ρ˜ΡΠΎΡ‚ Π½Π° Netlink ΠΈ сС ΠΈΠ·Π²Ρ€ΡˆΡƒΠ²Π° Π²ΠΎ ΠΊΠ΅Ρ€Π½Π΅Π»ΠΎΡ‚ Π²ΠΎ ΡΠΏΠ΅Ρ†ΠΈΡ˜Π°Π»Π½Π° Π²ΠΈΡ€Ρ‚ΡƒΠ΅Π»Π½Π° машина ΡˆΡ‚ΠΎ Π»ΠΈΡ‡ΠΈ Π½Π° BPF (Berkeley Packet Filters). Овој пристап ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡƒΠ²Π° Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»Π½ΠΎ Π΄Π° сС Π½Π°ΠΌΠ°Π»ΠΈ Π³ΠΎΠ»Π΅ΠΌΠΈΠ½Π°Ρ‚Π° Π½Π° ΠΊΠΎΠ΄ΠΎΡ‚ Π·Π° Ρ„ΠΈΠ»Ρ‚Ρ€ΠΈΡ€Π°ΡšΠ΅ ΡˆΡ‚ΠΎ Ρ€Π°Π±ΠΎΡ‚ΠΈ Π½Π° Π½ΠΈΠ²ΠΎ Π½Π° Ρ˜Π°Π΄Ρ€ΠΎΡ‚ΠΎ ΠΈ Π΄Π° сС прСмСстат ситС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π½Π° ΠΏΡ€Π°Π²ΠΈΠ»Π°Ρ‚Π° Π·Π° ΠΏΠ°Ρ€ΡΠΈΡ€Π°ΡšΠ΅ ΠΈ Π»ΠΎΠ³ΠΈΠΊΠ°Ρ‚Π° Π½Π° Ρ€Π°Π±ΠΎΡ‚Π° со ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΈ Π²ΠΎ корисничкиот простор.

Π“Π»Π°Π²Π½ΠΈ ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ:

  • ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ‚ΠΎΡ€ Π½Π° ΠΏΡ€Π°Π²ΠΈΠ»Π°, ΠΏΠΎΠ²ΠΈΠΊΠ°Π½ ΠΊΠΎΠ³Π° Π΅ ΠΎΠ΄Ρ€Π΅Π΄Π΅Π½Π° ΠΎΠΏΡ†ΠΈΡ˜Π°Ρ‚Π° β€ž-o/-optimizeβ€œ, ΠΈΠΌΠ° автоматско ΠΏΠ°ΠΊΡƒΠ²Π°ΡšΠ΅ Π½Π° ΠΏΡ€Π°Π²ΠΈΠ»Π°Ρ‚Π° со Π½ΠΈΠ²Π½ΠΎ ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€Π°ΡšΠ΅ ΠΈ ΠΏΡ€Π΅Ρ‚Π²ΠΎΡ€Π°ΡšΠ΅ Π²ΠΎ списоци со ΠΌΠ°ΠΏΠΈ ΠΈ мноТСства. На ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΡ€Π°Π²ΠΈΠ»Π° # cat ruleset.nft Ρ‚Π°Π±Π΅Π»Π° ip x { chain y { type filter hook Π²Π»Π΅Π·Π΅Π½ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚Π΅Π½ Ρ„ΠΈΠ»Ρ‚Π΅Ρ€; ΠΏΠ°Π΄ Π½Π° ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ°Ρ‚Π°; ΠΌΠ΅Ρ‚Π° iifname eth1 ip saddr 1.1.1.1 ip daddr 2.2.2.3 ΠΏΡ€ΠΈΡ„Π°Ρ‚ΠΈ ΠΌΠ΅Ρ‚Π° iifname eth1 ip saddr 1.1.1.2 ip daddr 2.2.2.4 ΠΏΡ€ΠΈΡ„Π°Ρ‚ΠΈ ΠΌΠ΅Ρ‚Π° iifname eth1 ip saddr 1.1.1.2. ip saddr 2.2.3.0 .24 ip daddr 1-1.1.1.2 ΠΏΡ€ΠΈΡ„Π°Ρ‚ΠΈ ΠΌΠ΅Ρ‚Π° iifname eth2.2.4.0 ip saddr 2.2.4.10 ip daddr 2 ΠΏΡ€ΠΈΡ„Π°Ρ‚ΠΈ } } ΠΏΠΎ ΠΈΠ·Π²Ρ€ΡˆΡƒΠ²Π°ΡšΠ΅Ρ‚ΠΎ Π½Π° β€žnft -o -c -f ruleset.nftβ€œ ќС сС ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚ΠΈΡ€Π°Π°Ρ‚ Π²ΠΎ слСднивС nft:1.1.1.3:2.2.2.5-4: meta iifname eth17 ip saddr 74 ip daddr 1 ΠΏΡ€ΠΈΡ„Π°Ρ‚ΠΈ ΠΏΡ€Π°Π²ΠΈΠ»Π°.nft:1.1.1.1:2.2.2.3-5: meta iifname eth17 ip saddr 74 ip daddr.1. : 1.1.1.2:2.2.2.4-6: meta iifname eth17 ip saddr 77 ip daddr 1/1.1.1.2 ΠΏΡ€ΠΈΡ„Π°Ρ‚ΠΈ ΠΏΡ€Π°Π²ΠΈΠ»Π°.nft:2.2.3.0:24-7: meta iifname eth17 ip saddr 83 ip daddr 1/1.1.1.2. ΠΏΡ€ΠΈΡ„Π°Ρ‚ΠΈ ΠΏΡ€Π°Π²ΠΈΠ»Π°.nft:2.2.4.0:2.2.4.10-8: ΠΌΠ΅Ρ‚Π° iifname eth17 ip saddr 74 ip daddr 2 ΠΏΡ€ΠΈΡ„Π°Ρ‚ΠΈ Π²ΠΎ: 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 } ΠΏΡ€ΠΈΡ„Π°Ρ‚ΠΈ
  • ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ‚ΠΎΡ€ΠΎΡ‚ исто Ρ‚Π°ΠΊΠ° ΠΌΠΎΠΆΠ΅ Π΄Π° Π³ΠΈ ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚ΠΈΡ€Π° ΠΏΡ€Π°Π²ΠΈΠ»Π°Ρ‚Π° ΠΊΠΎΠΈ вСќС користат Сдноставни списоци со мноТСства Π²ΠΎ ΠΏΠΎΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚Π½Π° Ρ„ΠΎΡ€ΠΌΠ°, Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΡ€Π°Π²ΠΈΠ»Π°Ρ‚Π°: # cat ruleset.nft Ρ‚Π°Π±Π΅Π»Π° ip Ρ„ΠΈΠ»Ρ‚Π΅Ρ€ { chain input { type filter hook Π²Π»Π΅Π·Π΅Π½ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚Π΅Π½ Ρ„ΠΈΠ»Ρ‚Π΅Ρ€; ΠΏΠ°Π΄ Π½Π° ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ°Ρ‚Π°; iifname β€žΠ΅Π²Π΅β€œ ΠΏΡ€ΠΈΡ„Π°Ρ‚ΠΈ ct ΡΠΎΡΡ‚ΠΎΡ˜Π±Π°, ΠΏΠΎΠ²Ρ€Π·Π°Π½Π° ΠΏΡ€ΠΈΡ„Π°Ρ‚ΠΈ ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€ β€žΠ’ΠΎ ΡΠΎΠΎΠ±Ρ€Π°ΡœΠ°Ρ˜ΠΎΡ‚ Π½ΠΈΠ΅ ΠΏΠΎΡ‚Π΅ΠΊΠ½ΡƒΠ²Π°ΠΌΠ΅, Π²Π΅Ρ€ΡƒΠ²Π°ΠΌΠ΅β€œ iifname β€ženp0s31f6β€œ ip saddr { 209.115.181.102, 216.197.228.230 } ip daddr 10.0.0.149ud123p .32768 ΠΏΡ€ΠΈΡ„Π°Ρ‚ΠΈ iifname "enp65535s0f31" ip saddr { 6, 64.59.144.17 } ip daddr 64.59.150.133 udp sport 10.0.0.149 udp dport 53-32768 ΠΏΡ€ΠΈΡ„Π°Ρ‚Π΅Ρ‚Π΅ Π³ΠΈ ΠΏΡ€Π°Π²ΠΈΠ»Π°Ρ‚Π° -exeftnc} с : ruleset.nft:65535:6-22: iifname "enp149s0f31" ip saddr {6, 209.115.181.102 } ip daddr 216.197.228.230 udp sport 10.0.0.149ft :123-32768 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 ΠΏΡ€ΠΈΡ„Π°Ρ‚ΠΈ Π²ΠΎ: ip saddr. ИП Ρ‚Π°Ρ‚ΠΎ. Π£Π”ΠŸ спорт. 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 } ΠΏΡ€ΠΈΡ„Π°Ρ‚ΠΈ
  • РСшСн Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΎΡ‚ со Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π°ΡšΠ΅ Π±Π°Ρ˜Ρ‚Π΅ΠΊΠΎΠ΄ Π·Π° ΡΠΏΠΎΡ˜ΡƒΠ²Π°ΡšΠ΅ ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»ΠΈ ΠΊΠΎΠΈ користат Ρ‚ΠΈΠΏΠΎΠ²ΠΈ со Ρ€Π°Π·Π»ΠΈΡ‡Π΅Π½ рСдослСд Π½Π° Π±Π°Ρ˜Ρ‚ΠΈ, ΠΊΠ°ΠΊΠΎ ΡˆΡ‚ΠΎ Π΅ IPv4 (рСдослСд Π½Π° ΠΌΡ€Π΅ΠΆΠ½ΠΈ Π±Π°Ρ˜Ρ‚ΠΈ) ΠΈ ΠΌΠ΅Ρ‚Π°-ΠΎΠ·Π½Π°ΠΊΠ° (рСдослСд Π½Π° систСмски Π±Π°Ρ˜Ρ‚ΠΈ). Ρ‚Π°Π±Π΅Π»Π° ip x { map w { typeof ip saddr . ΠΌΠ΅Ρ‚Π° ΠΎΠ·Π½Π°ΠΊΠ°: прСсуда ΠΎΠ·Π½Π°Ρ‡ΡƒΠ²Π° ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π» Π±Ρ€ΠΎΡ˜Π°Ρ‡ Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚ΠΈ = {127.0.0.1-127.0.0.4. 0x123434-0xb00122: ΠΏΡ€ΠΈΡ„Π°Ρ‚ΠΈ, 192.168.0.10-192.168.1.20. 0x0000aa00-0x0000aaff : ΠΏΡ€ΠΈΡ„Π°Ρ‚ΠΈ, } } ΡΠΈΠ½ΡŸΠΈΡ€ k { Ρ‚ΠΈΠΏ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚Π΅Π½ Ρ„ΠΈΠ»Ρ‚Π΅Ρ€ Π·Π° Π²Π»Π΅Π· Π½Π° ΠΊΡƒΠΊΠ° Π·Π° Ρ„ΠΈΠ»Ρ‚Π΅Ρ€; ΠΏΠ°Π΄ Π½Π° ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ°Ρ‚Π°; ip saddr. ΠΌΠ΅Ρ‚Π° ΠΎΠ·Π½Π°ΠΊΠ° vmap @w } }
  • ΠŸΠΎΠ΄ΠΎΠ±Ρ€Π΅Π½Π° спорСдба Π½Π° Ρ€Π΅Ρ‚ΠΊΠΈ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΈ ΠΊΠΎΠ³Π° сС користат сурови ΠΈΠ·Ρ€Π°Π·ΠΈ, Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€: meta l4proto 91 @th,400,16 0x0 ΠΏΡ€ΠΈΡ„Π°Ρ‚ΠΈ
  • ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠΈΡ‚Π΅ со ΠΏΡ€Π°Π²ΠΈΠ»Π°Ρ‚Π° Π·Π° ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡƒΠ²Π°ΡšΠ΅ Π²ΠΎ ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»ΠΈ сС Ρ€Π΅ΡˆΠ΅Π½ΠΈ: Π²ΠΌΠ΅Ρ‚Π½Π΅Ρ‚Π΅ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ xy tcp sport { 3478-3497, 16384-16387 } Π±Ρ€ΠΎΡ˜Π°Ρ‡ ΠΏΡ€ΠΈΡ„Π°Ρ‚ΠΈ
  • JSON API Π΅ ΠΏΠΎΠ΄ΠΎΠ±Ρ€Π΅Π½ Π·Π° Π΄Π° Π²ΠΊΠ»ΡƒΡ‡ΠΈ ΠΏΠΎΠ΄Π΄Ρ€ΡˆΠΊΠ° Π·Π° ΠΈΠ·Ρ€Π°Π·ΠΈ Π²ΠΎ списоци со мноТСства ΠΈ ΠΌΠ°ΠΏΠΈ.
  • ЕкстСнзии Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°Ρ‚Π° nftables python ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡƒΠ²Π°Π°Ρ‚ Π²Ρ‡ΠΈΡ‚ΡƒΠ²Π°ΡšΠ΅ Π½Π° мноТСства ΠΏΡ€Π°Π²ΠΈΠ»Π° Π·Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π²ΠΎ Ρ€Π΅ΠΆΠΈΠΌ Π½Π° Π²Π°Π»ΠΈΠ΄Π°Ρ†ΠΈΡ˜Π° (β€ž-cβ€œ) ΠΈ Π΄ΠΎΠ΄Π°Π²Π°Π°Ρ‚ ΠΏΠΎΠ΄Π΄Ρ€ΡˆΠΊΠ° Π·Π° Π½Π°Π΄Π²ΠΎΡ€Π΅ΡˆΠ½Π° Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ†ΠΈΡ˜Π° Π½Π° ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ.
  • Π”ΠΎΠ΄Π°Π²Π°ΡšΠ΅Ρ‚ΠΎ ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈ Π΅ Π΄ΠΎΠ·Π²ΠΎΠ»Π΅Π½ΠΎ Π²ΠΎ Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ‚Π΅ Π½Π° списокот со мноТСства.
  • ΠžΠ³Ρ€Π°Π½ΠΈΡ‡ΡƒΠ²Π°ΡšΠ΅Ρ‚ΠΎ Π½Π° стапката Π½Π° Π±Π°Ρ˜Ρ‚ΠΈ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡƒΠ²Π° ΠΎΠ΄Ρ€Π΅Π΄ΡƒΠ²Π°ΡšΠ΅ Π½Π° Π½ΡƒΠ»Ρ‚Π° врСдност.

Π˜Π·Π²ΠΎΡ€: opennet.ru

Π”ΠΎΠ΄Π°Π΄Π΅Ρ‚Π΅ ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€