ftables paketi fyuluta 1.0.3 kumasulidwa

ΠžΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½ выпуск ΠΏΠ°ΠΊΠ΅Ρ‚Π½ΠΎΠ³ΠΎ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π° nftables 1.0.3, ΡƒΠ½ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΡŽΡ‰Π΅Π³ΠΎ интСрфСйсы Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΠΈ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² для IPv4, IPv6, ARP ΠΈ сСтСвых мостов (Π½Π°Ρ†Π΅Π»Π΅Π½ Π½Π° Π·Π°ΠΌΠ΅Π½Ρƒ iptables, ip6table, arptables ΠΈ ebtables). НСобходимыС для Ρ€Π°Π±ΠΎΡ‚Ρ‹ выпуска nftables 1.0.3 измСнСния Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Ρ‹ Π² состав ядра Linux 5.18.

Phukusi la nftables limaphatikizapo zosefera zapaketi ya ogwiritsa ntchito, pomwe ntchito ya kernel-level imaperekedwa ndi nf_tables subsystem, yomwe yakhala gawo la Linux kernel kuyambira kutulutsidwa kwa 3.13. Mulingo wa kernel umapereka mawonekedwe odziyimira pawokha a generic omwe amapereka ntchito zoyambira kuchotsa deta m'mapaketi, kuchita ma data, ndikuwongolera kuyenda.

Malamulo osefera ndi ogwiritsira ntchito ma protocol amapangidwa kukhala bytecode mu malo ogwiritsira ntchito, pambuyo pake bytecode iyi imayikidwa mu kernel pogwiritsa ntchito mawonekedwe a Netlink ndi kuphedwa mu kernel mu makina apadera omwe amakumbukira BPF (Berkeley Packet Filters). Njirayi imakuthandizani kuti muchepetse kwambiri kukula kwa code yosefera yomwe ikuyenda pamlingo wa kernel ndikusuntha ntchito zonse za malamulo ophatikizira ndi malingaliro ogwirira ntchito ndi ma protocol mu malo ogwiritsa ntchito.

Zatsopano zazikulu:

  • Π’ set-списках появилась ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° сопоставлСния ΠΈΠΌΡ‘Π½ сСтСвых интСрфСйсов ΠΏΠΎ маскС, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π·Π°Π΄Π°Π½Π½ΠΎΠΉ с использованиСм символа Β«*Β»: table inet testifsets { set simple_wild { type ifname flags interval elements = { Β«abcdef*Β», Β«othernameΒ», Β«ppp0Β» } } chain v4icmp { type filter hook input priority 0; policy accept; iifname @simple_wild counter packets 0 bytes 0 iifname { Β«abcdef*Β», Β«eth0Β» } counter packets 0 bytes 0 } }
  • Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ΠΎ автоматичСскоС объСдинСниС ΠΏΠ΅Ρ€Π΅ΡΠ΅ΠΊΠ°ΡŽΡ‰ΠΈΡ…ΡΡ элСмСнтов set-списка Π²ΠΎ врСмя Ρ€Π°Π±ΠΎΡ‚Ρ‹. Π Π°Π½Π΅Π΅ ΠΏΡ€ΠΈ выставлСнии ΠΎΠΏΡ†ΠΈΠΈ Β«auto-mergeΒ» объСдинСниС ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΠ»ΠΎΡΡŒ Π½Π° стадии объявлСния ΠΏΡ€Π°Π²ΠΈΠ», Π° Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ срабатываСт ΠΈ ΠΏΡ€ΠΈ ΠΈΠ½ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½ΠΎΠΌ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠΈ Π½ΠΎΠ²Ρ‹Ρ… элСмСнтов Π² процСссС Ρ€Π°Π±ΠΎΡ‚Ρ‹. НапримСр, Π½Π° этапС объявлСния список set y { flags interval auto-merge elements = { 1.2.3.0, 1.2.3.255, 1.2.3.0/24, 3.3.3.3, 4.4.4.4, 4.4.4.4-4.4.4.8, 3.3.3.4, 3.3.3.5 } } Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€Π΅Π²Ρ€Π°Ρ‰Ρ‘Π½ Π² elements = { 1.2.3.0/24, 3.3.3.3-3.3.3.5, 4.4.4.4-4.4.4.8 } Π° Π·Π°Ρ‚Π΅ΠΌ Ссли Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π½ΠΎΠ²Ρ‹Π΅ элСмСнты # nft add element ip x y { 1.2.3.0-1.2.4.255, 3.3.3.6 } ΠΏΡ€ΠΈΠΌΠ΅Ρ‚ Π²ΠΈΠ΄ elements = { 1.2.3.0-1.2.4.255, 3.3.3.3-3.3.3.6, 4.4.4.4-4.4.4.8 }

    ΠŸΡ€ΠΈ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠΈ ΠΈΠ· списка ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… элСмСнтов, ΠΏΠΎΠΏΠ°Π΄Π°ΡŽΡ‰ΠΈΡ… Π² ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ элСмСнты с Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π°ΠΌΠΈ, Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ сокращаСтся ΠΈΠ»ΠΈ раздСляСтся.

  • Π’ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ‚ΠΎΡ€ ΠΏΡ€Π°Π²ΠΈΠ», Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΉ ΠΏΡ€ΠΈ ΡƒΠΊΠ°Π·Π°Π½ΠΈΠΈ ΠΎΠΏΡ†ΠΈΠΈ Β«-o/β€”optimizeΒ», Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° объСдинСния Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΏΡ€Π°Π²ΠΈΠ» трансляции адрСсов (NAT) Π² map-список. НапримСр, для Π½Π°Π±ΠΎΡ€Π° # cat ruleset.nft table ip x { chain y { type nat hook postrouting priority srcnat; policy drop; ip saddr 1.1.1.1 tcp dport 8000 snat to 4.4.4.4:80 ip saddr 2.2.2.2 tcp dport 8001 snat to 5.5.5.5:90 } }

    Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Β«nft -o -c -f ruleset.nftΒ» ΠΏΡ€ΠΈΠ²Π΅Π΄Ρ‘Ρ‚ ΠΊ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΡŽ Ρ€Π°Π·Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€Π°Π²ΠΈΠ» Β«ip saddrΒ» Π² map-список: snat to ip saddr . tcp dport map { 1.1.1.1 . 8000 : 4.4.4.4 . 80, 2.2.2.2 . 8001 : 5.5.5.5 . 90 }

    Аналогично Π² map-списки ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒΡΡ ΠΈ raw-выраТСния: # cat ruleset.nft table ip x { […] chain nat_dns_acme { udp length 47-63 @th,160,128 0x0e373135363130333131303735353203 goto nat_dns_dnstc udp length 62-78 @th,160,128 0x0e31393032383939353831343037320e goto nat_dns_this_5301 udp length 62-78 @th,160,128 0x0e31363436323733373931323934300e goto nat_dns_saturn_5301 udp length 62-78 @th,160,128 0x0e32393535373539353636383732310e goto nat_dns_saturn_5302 udp length 62-78 @th,160,128 0x0e38353439353637323038363633390e goto nat_dns_saturn_5303 drop } }

    послС ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ map-cписок: udp length . @th,160,128 vmap { 47-63 . 0x0e373135363130333131303735353203 : goto nat_dns_dnstc, 62-78 . 0x0e31393032383939353831343037320e : goto nat_dns_this_5301, 62-78 . 0x0e31363436323733373931323934300e : goto nat_dns_saturn_5301, 62-78 . 0x0e32393535373539353636383732310e : goto nat_dns_saturn_5302, 62-78 . 0x0e38353439353637323038363633390e : goto nat_dns_saturn_5303 }

  • Π Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΎ использованиС raw-Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ Π² опСрациях ΠΊΠΎΠ½ΠΊΠ°Ρ‚Π΅Π½Π°Ρ†ΠΈΠΈ. НапримСр: # nft add rule x y ip saddr . @ih,32,32 { 1.1.1.1 . 0x14, 2.2.2.2 . 0x1e } ΠΈΠ»ΠΈ table x { set y { typeof ip saddr . @ih,32,32 elements = { 1.1.1.1 . 0x14 } } }
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° указания цСлочислСнных ΠΏΠΎΠ»Π΅ΠΉ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠ² Π² опСрациях ΠΊΠΎΠ½ΠΊΠ°Ρ‚Π΅Π½Π°Ρ†ΠΈΠΈ: table inet t { map m1 { typeof udp length . @ih,32,32 : verdict flags interval elements = { 20-80 . 0x14 : accept, 1-10 . 0xa : drop } } chain c { type filter hook input priority 0; policy drop; udp length . @ih,32,32 vmap @m1 } }
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° сброса TCP-ΠΎΠΏΡ†ΠΈΠΉ (Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΈ Π½Π°Π»ΠΈΡ‡ΠΈΠΈ ядра Linux 5.18+): tcp flags syn reset tcp option sack-perm
  • УскорСно Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄ Π²Ρ‹Π²ΠΎΠ΄Π° Ρ†Π΅ΠΏΠΎΡ‡Π΅ΠΊ (Β«nft list chain x yΒ»).

Source: opennet.ru

Kuwonjezera ndemanga