Π˜Π·Π»ΡΠ·ΠΎΡ…Π° наявС пакСтния Ρ„ΠΈΠ»Ρ‚ΡŠΡ€ nftables 1.0.1

ΠŸΡƒΠ±Π»ΠΈΠΊΡƒΠ²Π°Π½ Π΅ пакСтният Ρ„ΠΈΠ»Ρ‚ΡŠΡ€ nftables 1.0.1, ΠΊΠΎΠΉΡ‚ΠΎ ΡƒΠ½ΠΈΡ„ΠΈΡ†ΠΈΡ€Π° интСрфСйситС Π·Π° Ρ„ΠΈΠ»Ρ‚Ρ€ΠΈΡ€Π°Π½Π΅ Π½Π° ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ Π·Π° IPv4, IPv6, ARP ΠΈ ΠΌΡ€Π΅ΠΆΠΎΠ²ΠΈ мостовС (с Ρ†Π΅Π» замяна Π½Π° iptables, ip6tables, arptables ΠΈ ebtables). НСобходимитС Π·Π° Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚Π° измСнСния Π·Π° nftables 1.0.1 са Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈ Π² ядрото Π½Π° Linux 5.16-rc1.

Π’ ΠΏΠ°ΠΊΠ΅Ρ‚a nftables Π²Π»ΠΈΠ·Π°Ρ‚ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΈ Π½Π° пакСтния Ρ„ΠΈΠ»Ρ‚ΡŠΡ€, Ρ€Π°Π±ΠΎΡ‚Π΅Ρ‰ΠΈ Π² пространството Π½Π° потрСбитСля, Π΄ΠΎΠΊΠ°Ρ‚ΠΎ Π½Π° Π½ΠΈΠ²ΠΎ ядро Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚Π° Π΅ осигурСна ΠΎΡ‚ подсистСмата nf_tables, която Π΅ част ΠΎΡ‚ ядрото Π½Π° Linux ΠΎΡ‚ вСрсия 3.13. На Π½ΠΈΠ²ΠΎ ядро сС прСдоставя само ΠΎΠ±Ρ‰ интСрфСйс, нСзависим ΠΎΡ‚ конкрСтния ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ», ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Ρ‰ основни Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π·Π° ΠΈΠ·Π²Π»ΠΈΡ‡Π°Π½Π΅ Π½Π° Π΄Π°Π½Π½ΠΈ ΠΎΡ‚ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ, ΠΈΠ·Π²ΡŠΡ€ΡˆΠ²Π°Π½Π΅ Π½Π° ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ с Π΄Π°Π½Π½ΠΈ ΠΈ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΏΠΎΡ‚ΠΎΠΊΠ°.

ΠŸΡ€Π°Π²ΠΈΠ»Π°Ρ‚Π° Π·Π° Ρ„ΠΈΠ»Ρ‚Ρ€ΠΈΡ€Π°Π½Π΅ ΠΈ спСцифичнитС Π·Π° ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΈΡ‚Π΅ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π²Π°Ρ‰ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ сС ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€Π°Ρ‚ Π² Π±Π°ΠΉΡ‚ΠΊΠΎΠ΄ Π² пространството Π½Π° потрСбитСля, слСд ΠΊΠΎΠ΅Ρ‚ΠΎ Ρ‚ΠΎΠ·ΠΈ Π±Π°ΠΉΡ‚ΠΊΠΎΠ΄ сС Π·Π°Ρ€Π΅ΠΆΠ΄Π° Π² ядрото Ρ‡Ρ€Π΅Π· интСрфСйса Netlink ΠΈ сС изпълнява Π² ядрото Π² спСциална Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»Π½Π° машина, наподобяваща BPF (Berkeley Packet Filters). ПодобСн ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ позволява Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»Π½ΠΎ Π΄Π° сС Π½Π°ΠΌΠ°Π»ΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ€ΡŠΡ‚ Π½Π° ΠΊΠΎΠ΄Π° Π·Π° Ρ„ΠΈΠ»Ρ‚Ρ€ΠΈΡ€Π°Π½Π΅, ΠΊΠΎΠΉΡ‚ΠΎ Ρ€Π°Π±ΠΎΡ‚ΠΈ Π½Π° Π½ΠΈΠ²ΠΎ ядро, ΠΊΠ°Ρ‚ΠΎ всички Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π·Π° Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅ Π½Π° ΠΏΡ€Π°Π²ΠΈΠ»Π°Ρ‚Π° ΠΈ Π»ΠΎΠ³ΠΈΠΊΠ°Ρ‚Π° Π½Π° Ρ€Π°Π±ΠΎΡ‚Π° с ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΈΡ‚Π΅ сС ΠΈΠ·Π²Π΅ΠΆΠ΄Π°Ρ‚ Π² пространството Π½Π° потрСбитСля.

Основни нововъвСдСния:

  • НамалСно Π΅ ΠΏΠΎΡ‚Ρ€Π΅Π±Π»Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° ΠΏΠ°ΠΌΠ΅Ρ‚ ΠΏΡ€ΠΈ Π·Π°Ρ€Π΅ΠΆΠ΄Π°Π½Π΅ Π½Π° Π³ΠΎΠ»Π΅ΠΌΠΈ set- ΠΈ map-ΡΠΏΠΈΡΡŠΡ†ΠΈ.
  • УскорСно Π΅ ΠΏΡ€Π΅Π·Π°Ρ€Π΅ΠΆΠ΄Π°Π½Π΅Ρ‚ΠΎ Π½Π° set- ΠΈ map-ΡΠΏΠΈΡΡŠΡ†ΠΈ.
  • УскорСно ΠΈΠ·Π²Π»Π΅Ρ‡Π΅Π½ΠΈΠ΅ Π²Ρ‹Π±Ρ€Π°Π½Π½Ρ‹Ρ… Ρ‚Π°Π±Π»ΠΈΡ† ΠΈ Ρ†Π΅ΠΏΠΎΡ‡Π΅ΠΊ ΠΈΠ· Π±ΠΎΠ»ΡŒΡˆΠΈΡ… Π½Π°Π±ΠΎΡ€ΠΎΠ² ΠΏΡ€Π°Π²ΠΈΠ». НапримСр, врСмя выполнСния ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Β«nft list rulesetΒ» для отобраТСния Π½Π°Π±ΠΎΡ€Π° ΠΏΡ€Π°Π²ΠΈΠ» с 100 тысячами строк составляСт 3.049 сСкунды, Π° ΠΏΡ€ΠΈ ΠΈΠ·Π²Π»Π΅Ρ‡Π΅Π½ΠΈΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚Π°Π±Π»ΠΈΡ† nat ΠΈ filter (Β«nft list table natΒ», Β«nft list table filterΒ») сокращаСтся Π΄ΠΎ 1.969 ΠΈ 0.697 сСкунд.
  • УскорСно Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ запросов с ΠΎΠΏΡ†ΠΈΠ΅ΠΉ Β«β€”terseΒ» ΠΏΡ€ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΠΏΡ€Π°Π²ΠΈΠ» с большими списками set ΠΈ map.
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΠΈ Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ° ΠΈΠ· Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠΈ Β«egressΒ», ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅ΠΌΠΎΠ³ΠΎ Π½Π° Ρ‚ΠΎΠΌ ΠΆΠ΅ ΡƒΡ€ΠΎΠ²Π½Π΅, Ρ‡Ρ‚ΠΎ egress-ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ Π² Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠ΅ netdev (hook egress), Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π½Π° стадии, ΠΊΠΎΠ³Π΄Π° Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ ΠΏΠ°ΠΊΠ΅Ρ‚ ΠΎΡ‚ сСтСвого стСка ядра. table netdev filter { chain egress { type filter hook egress devices = { eth0, eth1 } priority 0; meta priority set ip saddr map { 192.168.10.2 : abcd:2, 192.168.10.3 : abcd:3 } } }
  • Π Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΎ Π΅ сопоставянСто ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° Π±Π°ΠΉΡ‚ΠΎΠ²Π΅ Π² Π·Π°Π³Π»Π°Π²Π½Π°Ρ‚Π° част ΠΈ ΡΡŠΠ΄ΡŠΡ€ΠΆΠ°Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° ΠΏΠ°ΠΊΠ΅Ρ‚Π° ΠΏΠΎ Π·Π°Π΄Π°Π΄Π΅Π½ΠΎ смСщСниС. # nft add rule x y @ih,32,32 0x14000000 counter # nft add rule x y @ih,32,32 set 0x14000000 counter

Π˜Π·Ρ‚ΠΎΡ‡Π½ΠΈΠΊ: opennet.ru

ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС с Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ πŸ”₯ ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС с Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ | ProHoster