Π˜Π·Π»ΡŠΡ‡Π²Π°Π½Π΅ Π½Π° пакСтния Ρ„ΠΈΠ»Ρ‚ΡŠΡ€ nftables 0.9.9

ΠŸΡƒΠ±Π»ΠΈΠΊΡƒΠ²Π°Π½ΠΈ Π΅ ΠΈΠ·Π΄Π°Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° пакСтния Ρ„ΠΈΠ»Ρ‚ΡŠΡ€ nftables 0.9.9, ΡƒΠ½ΠΈΡ„ΠΈΡ†ΠΈΡ€Π°Ρ‰ интСрфСйситС Π·Π° Ρ„ΠΈΠ»Ρ‚Ρ€ΠΈΡ€Π°Π½Π΅ Π½Π° ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ Π·Π° IPv4, IPv6, ARP ΠΈ ΠΌΡ€Π΅ΠΆΠΎΠ²ΠΈ мостовС (с Ρ†Π΅Π» замяна Π½Π° iptables, ip6tables, arptables ΠΈ ebtables). Π’ ΡΡŠΡ‰ΠΎΡ‚ΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π΅ ΠΏΡƒΠ±Π»ΠΈΠΊΡƒΠ²Π°Π½ΠΎ ΠΈ ΠΈΠ·Π΄Π°Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° ΡΡŠΠΏΡŠΡ‚ΡΡ‚Π²Π°Ρ‰Π°Ρ‚Π° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° libnftnl 1.2.0, прСдоставяща нискоуровнСви API Π·Π° взаимодСйствиС с подсистСмата nf_tables. НСобходимитС Π·Π° Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚Π° Π½Π° nftables 0.9.9 измСнСния са Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈ Π² ядрото Π½Π° Linux 5.13-rc1.

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

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

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

  • Π Π΅Π°Π»ΠΈΠ·ΠΈΡ€Π°Π½Π° Π΅ Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ Π·Π° ΠΏΡ€Π΅Ρ…Π²ΡŠΡ€Π»ΡΠ½Π΅ Π½Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°Ρ‚Π° Π½Π° flowtable Π½Π° страната Π½Π° мрСТовия Π°Π΄Π°ΠΏΡ‚Π΅Ρ€, Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°Π½Π° Ρ‡Ρ€Π΅Π· Ρ„Π»Π°Π³Π° β€˜offload’. Flowtable прСдставлява ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΡŠΠΌ Π·Π° оптимизация Π½Π° ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚Π° Π½Π° прСнасочванС Π½Π° ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ, ΠΏΡ€ΠΈ ΠΊΠΎΠΉΡ‚ΠΎ ΠΏΡŠΠ»Π½ΠΎΡ‚ΠΎ ΠΏΡ€Π΅ΠΌΠΈΠ½Π°Π²Π°Π½Π΅ ΠΏΡ€Π΅Π· всички Π²Π΅Ρ€ΠΈΠ³ΠΈ Π·Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° ΠΏΡ€Π°Π²ΠΈΠ»Π° сС ΠΏΡ€ΠΈΠ»Π°Π³Π° само Π·Π° ΠΏΡŠΡ€Π²ΠΈΡ ΠΏΠ°ΠΊΠ΅Ρ‚, Π° всички останали ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ Π² ΠΏΠΎΡ‚ΠΎΠΊΠ° сС ΠΏΡ€Π΅Π΄Π°Π²Π°Ρ‚ Π΄ΠΈΡ€Π΅ΠΊΡ‚Π½ΠΎ. table ip global { flowtable f { hook ingress priority filter + 1 devices = { lan3, lan0, wan } flags offload } chain forward { type filter hook forward priority filter; policy accept; ip protocol { tcp, udp } flow add @f } chain post { type nat hook postrouting priority filter; policy accept; oifname Β«wanΒ» masquerade } }
  • Π”ΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π·Π° прикрСпянС Π½Π° Ρ„Π»Π°Π³ към Ρ‚Π°Π±Π»ΠΈΡ†Π°Ρ‚Π° Π·Π° ΠΏΡ€ΠΈΠ²ΡŠΡ€Π·Π²Π°Π½Π΅ към собствСник, ΠΊΠΎΠΉΡ‚ΠΎ позволява Π΄Π° сС осигури Сксклузивно ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° Ρ‚Π°Π±Π»ΠΈΡ†Π°Ρ‚Π° ΠΎΡ‚ процСса. ΠŸΡ€ΠΈ ΠΏΡ€ΠΈΠΊΠ»ΡŽΡ‡Π²Π°Π½Π΅ Π½Π° процСса ΡΠ²ΡŠΡ€Π·Π°Π½Π°Ρ‚Π° с Π½Π΅Π³ΠΎ Ρ‚Π°Π±Π»ΠΈΡ†Π° Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎ сС ΠΈΠ·Ρ‚Ρ€ΠΈΠ²Π°. Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡ Π·Π° процСса сС ΠΏΠΎΠΊΠ°Π·Π²Π° Π² Π΄Π°ΠΌΠΏΠ° Π½Π° ΠΏΡ€Π°Π²ΠΈΠ»Π°Ρ‚Π° ΠΏΠΎΠ΄ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° Π½Π° ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€: table ip x { # progname nft flags owner chain y { type filter hook input priority filter; policy accept; counter packets 1 bytes 309 } }
  • Π”ΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π·Π° спСцификацията IEEE 802.1ad (стСкванС Π½Π° VLAN ΠΈΠ»ΠΈ QinQ), която опрСдСля срСдства Π·Π° вмъкванС Π½Π° мноТСство VLAN Ρ‚Π°Π³ΠΎΠ²Π΅ Π² Π΅Π΄ΠΈΠ½ Ethernet ΠΊΠ°Π΄ΡŠΡ€. НапримСр, Π·Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° Ρ‚ΠΈΠΏΠ° Π½Π° външния Ethernet ΠΊΠ°Π΄ΡŠΡ€ 8021ad ΠΈ vlan id=342 ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° конструкцията … ether type 802.1ad vlan id 342 Π·Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° външния Ρ‚ΠΈΠΏ Ethernet ΠΊΠ°Π΄ΡŠΡ€ 8021ad/vlan id=1, Π²Π»ΠΎΠΆΠ΅Π½ 802.1q/vlan id=2 ΠΈ послСдваща инкапсулация Π½Π° IP ΠΏΠ°ΠΊΠ΅Ρ‚Π°: … ether type 8021ad vlan id 1 vlan type 8021q vlan id 2 vlan type ip counter
  • Π”ΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π·Π° ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° рСсурси с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° ΡƒΠ½ΠΈΡ„ΠΈΡ†ΠΈΡ€Π°Π½Π° йСрархия cgroups v2. ΠžΡΠ½ΠΎΠ²Π½Π°Ρ‚Π° Ρ€Π°Π·Π»ΠΈΠΊΠ° ΠΌΠ΅ΠΆΠ΄Ρƒ cgroups v2 ΠΈ v1 Π΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° ΠΎΠ±Ρ‰Π° йСрархия cgroups Π·Π° всички Π²ΠΈΠ΄ΠΎΠ²Π΅ рСсурси, вмСсто ΠΎΡ‚Π΄Π΅Π»Π½ΠΈ ΠΉΠ΅Ρ€Π°Ρ€Ρ…ΠΈΠΈ Π·Π° Ρ€Π°Π·ΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π½Π° CPU рСсурси, Ρ€Π΅Π³ΡƒΠ»ΠΈΡ€Π°Π½Π΅ Π½Π° ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π° ΠΈ Π²Ρ…ΠΎΠ΄/ΠΈΠ·Ρ…ΠΎΠ΄. НапримСр, Π·Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π΄Π°Π»ΠΈ родитСлят Π½Π° сокСта Π½Π° ΠΏΡŠΡ€Π²ΠΎ Π½ΠΈΠ²ΠΎ cgroupv2 ΡΡŠΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²Π° Π½Π° маската β€žsystem.sliceβ€œ, ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° конструкцията: … socket cgroupv2 level 1 β€žsystem.sliceβ€œ
  • Π”ΠΎΠ±Π°Π²Π΅Π½Π° Π΅ Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ Π·Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° ΡΡŠΡΡ‚Π°Π²Π½ΠΈΡ‚Π΅ части Π½Π° SCTP ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ (Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠ° функционалност, която Ρ‰Π΅ сС появи Π² ядрото Π½Π° Linux 5.14). НапримСр, Π·Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° Π½Π°Π»ΠΈΡ‡ΠΈΠ΅Ρ‚ΠΎ Π½Π° chunk с Ρ‚ΠΈΠΏ β€˜data’ ΠΈ ΠΏΠΎΠ»Π΅ β€˜type’: … sctp chunk data exists … sctp chunk data type 0
  • Π˜Π·ΠΏΡŠΠ»Π½Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° опСрацията Π·Π° Π·Π°Ρ€Π΅ΠΆΠ΄Π°Π½Π΅ Π½Π° ΠΏΡ€Π°Π²ΠΈΠ»Π° с Ρ„Π»Π°Π³Π° β€ž-fβ€œ Π΅ ускорСно ΠΏΡ€ΠΈΠ±Π»ΠΈΠ·ΠΈΡ‚Π΅Π»Π½ΠΎ Π΄Π²Π° ΠΏΡŠΡ‚ΠΈ. Π‘ΡŠΡ‰ΠΎ Ρ‚Π°ΠΊΠ° Π΅ ускорСн ΠΈΠ·Ρ…ΠΎΠ΄ΡŠΡ‚ Π½Π° списъка с ΠΏΡ€Π°Π²ΠΈΠ»Π°.
  • ΠŸΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π΅Π½Π° Π΅ ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚Π½Π° Ρ„ΠΎΡ€ΠΌΠ° Π·Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° настройката Π½Π° Π±ΠΈΡ‚ΠΎΠ²Π΅Ρ‚Π΅ във Ρ„Π»Π°Π³ΠΎΠ²Π΅Ρ‚Π΅. НапримСр, Π·Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ°, Ρ‡Π΅ Π±ΠΈΡ‚ΠΎΠ²Π΅Ρ‚Π΅ Π½Π° ΡΡŠΡΡ‚ΠΎΡΠ½ΠΈΠ΅Ρ‚ΠΎ snat ΠΈ dnat Π½Π΅ са Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°Π½ΠΈ, ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΡƒΠΊΠ°ΠΆΠ΅: … ct status ! snat,dnat Π·Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ°, Ρ‡Π΅ Π±ΠΈΡ‚ΡŠΡ‚ syn Π΅ Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°Π½ Π² Π±ΠΈΡ‚ΠΎΠ²Π°Ρ‚Π° маска syn,ack: … tcp flags syn / syn,ack Π·Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ°, Ρ‡Π΅ Π±ΠΈΡ‚ΠΎΠ²Π΅Ρ‚Π΅ fin ΠΈ rst Π½Π΅ са Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°Π½ΠΈ Π² Π±ΠΈΡ‚ΠΎΠ²Π°Ρ‚Π° маска syn,ack,fin,rst: … tcp flags != fin,rst / syn,ack,fin,rst
  • Π Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΎ Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΠΊΠ»ΡŽΡ‡ΠΎΠ²Π°Ρ‚Π° Π΄ΡƒΠΌΠ° β€žverdictβ€œ Π² опрСдСлСнията typeof Π·Π° set/map: add map x m { typeof iifname . ip protocol . th dport : verdict;}

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

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