Π‘ΠΎΠΉΡ‚Π΅ΡΡŒ уязвимостСй, воркэраунды приносящих. Π§Π°ΡΡ‚ΡŒ 1: FragmentSmack/SegmentSmack

Π‘ΠΎΠΉΡ‚Π΅ΡΡŒ уязвимостСй, воркэраунды приносящих. Π§Π°ΡΡ‚ΡŒ 1: FragmentSmack/SegmentSmack

ВсСм ΠΏΡ€ΠΈΠ²Π΅Ρ‚! МСня Π·ΠΎΠ²ΡƒΡ‚ Π”ΠΌΠΈΡ‚Ρ€ΠΈΠΉ Бамсонов, я Ρ€Π°Π±ΠΎΡ‚Π°ΡŽ Π²Π΅Π΄ΡƒΡ‰ΠΈΠΌ систСмным администратором Π² Β«ΠžΠ΄Π½ΠΎΠΊΠ»Π°ΡΡΠ½ΠΈΠΊΠ°Ρ…Β». Π£ нас Π±ΠΎΠ»Π΅Π΅ 7 тыс. физичСских сСрвСров, 11 тыс. ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ² Π² нашСм ΠΎΠ±Π»Π°ΠΊΠ΅ ΠΈ 200 ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π² Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΎΠΉ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ Ρ„ΠΎΡ€ΠΌΠΈΡ€ΡƒΡŽΡ‚ 700 Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… кластСров. ΠŸΠΎΠ΄Π°Π²Π»ΡΡŽΡ‰Π΅Π΅ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ сСрвСров Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ ΠΏΠΎΠ΄ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ CentOS 7.
14 августа 2018 Π³. Π±Ρ‹Π»Π° ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½Π° информация ΠΎΠ± уязвимости FragmentSmack
(CVE-2018-5391) ΠΈ SegmentSmack (CVE-2018-5390). Π­Ρ‚ΠΎ уязвимости с сСтСвым Π²Π΅ΠΊΡ‚ΠΎΡ€ΠΎΠΌ Π°Ρ‚Π°ΠΊΠΈ ΠΈ достаточно высокой ΠΎΡ†Π΅Π½ΠΊΠΎΠΉ (7.5), которая Π³Ρ€ΠΎΠ·ΠΈΡ‚ ΠΎΡ‚ΠΊΠ°Π·ΠΎΠΌ Π² обслуТивании (DoS) ΠΈΠ·-Π·Π° исчСрпания рСсурсов (CPU). Ѐикс Π² ядрС для FragmentSmack Π½Π° Ρ‚ΠΎΡ‚ ΠΌΠΎΠΌΠ΅Π½Ρ‚ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ Π½Π΅ Π±Ρ‹Π», Π±ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΠ³ΠΎ, ΠΎΠ½ Π²Ρ‹ΡˆΠ΅Π» Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΠΎΠ·ΠΆΠ΅ ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎΠ± уязвимости. Для устранСния SegmentSmack ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π»ΠΎΡΡŒ ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ ядро. Π‘Π°ΠΌ ΠΏΠ°ΠΊΠ΅Ρ‚ с ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ΠΌ Π±Ρ‹Π» Π²Ρ‹ΠΏΡƒΡ‰Π΅Π½ Π² Ρ‚ΠΎΡ‚ ΠΆΠ΅ дСнь, ΠΎΡΡ‚Π°Π²Π°Π»ΠΎΡΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π΅Π³ΠΎ.
НСт, ΠΌΡ‹ совсСм Π½Π΅ ΠΏΡ€ΠΎΡ‚ΠΈΠ² обновлСния ядра! Однако Π΅ΡΡ‚ΡŒ Π½ΡŽΠ°Π½ΡΡ‹β€¦

Как ΠΌΡ‹ обновляСм ядро Π½Π° ΠΏΡ€ΠΎΠ΄Π΅

Π’ ΠΎΠ±Ρ‰Π΅ΠΌ-Ρ‚ΠΎ, Π½ΠΈΡ‡Π΅Π³ΠΎ слоТного:

  1. CΠΊΠ°Ρ‡Π°Ρ‚ΡŒ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹;
  2. Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΈΡ… Π½Π° Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ количСство сСрвСров (Π²ΠΊΠ»ΡŽΡ‡Π°Ρ сСрвСры, хостящиС нашС ΠΎΠ±Π»Π°ΠΊΠΎ);
  3. Π£Π±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ сломалось;
  4. Π£Π΄ΠΎΡΡ‚ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ всС стандартныС настройки ядра ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠ»ΠΈΡΡŒ Π±Π΅Π· ошибок;
  5. ΠŸΠΎΠ΄ΠΎΠΆΠ΄Π°Ρ‚ΡŒ нСсколько Π΄Π½Π΅ΠΉ;
  6. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ сСрвСров;
  7. ΠŸΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π΄Π΅ΠΏΠ»ΠΎΠΉ Π½ΠΎΠ²Ρ‹Ρ… сСрвСров Π½Π° Π½ΠΎΠ²ΠΎΠ΅ ядро;
  8. ΠžΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ всС сСрвСры ΠΏΠΎ Π΄Π°Ρ‚Π°-Ρ†Π΅Π½Ρ‚Ρ€Π°ΠΌ (ΠΎΠ΄ΠΈΠ½ Π΄Π°Ρ‚Π°-Ρ†Π΅Π½Ρ‚Ρ€ Π·Π° Ρ€Π°Π·, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ эффСкт для ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ Π² случаС ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ);
  9. ΠŸΠ΅Ρ€Π΅Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ всС сСрвСры.

ΠŸΠΎΠ²Ρ‚ΠΎΡ€ΠΈΡ‚ΡŒ для всСх Π²Π΅Ρ‚ΠΎΠΊ ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΡ…ΡΡ Ρƒ нас ядСр. На Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ это:

  • Π‘Ρ‚ΠΎΠΊΠΎΠ²ΠΎΠ΅ CentOS 7 3.10 β€” для Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π° ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Ρ… сСрвСров;
  • Π’Π°Π½ΠΈΠ»ΡŒΠ½ΠΎΠ΅ 4.19 β€” для нашСго ΠΎΠ±Π»Π°ΠΊΠ° one-cloud, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π½Π°ΠΌ Π½ΡƒΠΆΠ΅Π½ BFQ, BBR ΠΈ Ρ‚.Π΄.;
  • Elrepo kernel-ml 5.2 β€” для высоконагруТСнных Ρ€Π°Π·Π΄Π°Ρ‚Ρ‡ΠΈΠΊΠΎΠ², ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ 4.19 Ρ€Π°Π½ΡŒΡˆΠ΅ Π²Ρ‘Π» сСбя Π½Π΅ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎ, Π° Ρ„ΠΈΡ‡ΠΈ Π½ΡƒΠΆΠ½Ρ‹ Ρ‚Π΅ ΠΆΠ΅.

Как Π²Ρ‹ ΠΌΠΎΠ³Π»ΠΈ Π΄ΠΎΠ³Π°Π΄Π°Ρ‚ΡŒΡΡ, большС всСго Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° тысяч сСрвСров. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π½Π΅ всС уязвимости ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π½Ρ‹ для всСх сСрвСров, Ρ‚ΠΎ ΠΌΡ‹ ΠΏΠ΅Ρ€Π΅Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅ΠΌ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ доступны ΠΈΠ· ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚Π°. Π’ ΠΎΠ±Π»Π°ΠΊΠ΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°Ρ‚ΡŒ Π³ΠΈΠ±ΠΊΠΎΡΡ‚ΡŒ, ΠΌΡ‹ Π½Π΅ привязываСм доступныС ΠΈΠ·Π²Π½Π΅ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ‹ ΠΊ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΌ сСрвСрам с Π½ΠΎΠ²Ρ‹ΠΌ ядром, Π° ΠΏΠ΅Ρ€Π΅Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅ΠΌ всС хосты Π±Π΅Π· ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ. К ΡΡ‡Π°ΡΡ‚ΡŒΡŽ, Ρ‚Π°ΠΌ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° ΠΏΡ€ΠΎΡ‰Π΅, Ρ‡Π΅ΠΌ с ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΌΠΈ сСрвСрами. НапримСр, stateless-ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ просто ΠΏΠ΅Ρ€Π΅Π΅Ρ…Π°Ρ‚ΡŒ Π½Π° Π΄Ρ€ΡƒΠ³ΠΎΠΉ сСрвСр Π²ΠΎ врСмя Ρ€Π΅Π±ΡƒΡ‚Π°.

Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ Ρ€Π°Π±ΠΎΡ‚Ρ‹ всё Ρ€Π°Π²Π½ΠΎ ΠΌΠ½ΠΎΠ³ΠΎ, ΠΈ ΠΎΠ½Π° ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°Π½ΠΈΠΌΠ°Ρ‚ΡŒ нСсколько нСдСль, Π° ΠΏΡ€ΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΠΈ ΠΊΠ°ΠΊΠΈΡ…-Π»ΠΈΠ±ΠΎ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ с Π½ΠΎΠ²ΠΎΠΉ вСрсиСй β€” Π΄ΠΎ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… мСсяцСв. Π—Π»ΠΎΡƒΠΌΡ‹ΡˆΠ»Π΅Π½Π½ΠΈΠΊΠΈ это прСкрасно ΠΏΠΎΠ½ΠΈΠΌΠ°ΡŽΡ‚, поэтому Π½ΡƒΠΆΠ΅Π½ ΠΏΠ»Π°Π½ Β«Π‘Β».

FragmentSmack/SegmentSmack. Workaround

К ΡΡ‡Π°ΡΡ‚ΡŒΡŽ, для Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… уязвимостСй Ρ‚Π°ΠΊΠΎΠΉ ΠΏΠ»Π°Π½ Β«Π‘Β» сущСствуСт, ΠΈ называСтся ΠΎΠ½ Workaround. Π§Π°Ρ‰Π΅ всСго это ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ настроСк ядра/ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ΠΉ эффСкт ΠΈΠ»ΠΈ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΡΠΊΡΠΏΠ»ΡƒΠ°Ρ‚Π°Ρ†ΠΈΡŽ уязвимостСй.

Π’ случаС с FragmentSmack/SegmentSmack прСдлагался Ρ‚Π°ΠΊΠΎΠΉ Workaround:

«МоТно ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π΄Π΅Ρ„ΠΎΠ»Ρ‚Π½Ρ‹Π΅ значСния 4MB ΠΈ 3MB Π² net.ipv4.ipfrag_high_thresh ΠΈ net.ipv4.ipfrag_low_thresh (ΠΈ ΠΈΡ… Π°Π½Π°Π»ΠΎΠ³ΠΈ для ipv6 net.ipv6.ipfrag_high_thresh ΠΈ net.ipv6.ipfrag_low_thresh) Π½Π° 256 kB ΠΈ 192 kB соотвСтствСнно ΠΈΠ»ΠΈ Π½ΠΈΠΆΠ΅. ВСсты ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ ΠΎΡ‚ нСбольшого Π΄ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ падСния использования CPU Π²ΠΎ врСмя Π°Ρ‚Π°ΠΊΠΈ Π² зависимости ΠΎΡ‚ оборудования, настроСк ΠΈ условий. Однако ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ влияниС Π½Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΈΠ·-Π·Π° ipfrag_high_thresh=262144 bytes, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π΄Π²Π° 64K-Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π° ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ ΡƒΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒΡΡ Π² ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ Π½Π° пСрСсборку. НапримСр, Π΅ΡΡ‚ΡŒ риск, Ρ‡Ρ‚ΠΎ прилоТСния, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΠ΅ с большими UDP-ΠΏΠ°ΠΊΠ΅Ρ‚Π°ΠΌΠΈ, ΠΏΠΎΠ»ΠΎΠΌΠ°ΡŽΡ‚ΡΡΒ».

Π‘Π°ΠΌΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ ядра описаны Ρ‚Π°ΠΊ:

ipfrag_high_thresh - LONG INTEGER
Β Β Β Β Maximum memory used to reassemble IP fragments.

ipfrag_low_thresh - LONG INTEGER
Β Β Β Β Maximum memory used to reassemble IP fragments before the kernel
Β Β Β Β begins to remove incomplete fragment queues to free up resources.
Β Β Β Β The kernel still accepts new fragments for defragmentation.

На ΠΏΡ€ΠΎΠ΄Π°ΠΊΡˆΠ΅Π½-сСрвисах Π±ΠΎΠ»ΡŒΡˆΠΈΡ… UDP Ρƒ нас Π½Π΅Ρ‚. Π’ LAN Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ Ρ‚Ρ€Π°Ρ„ΠΈΠΊ отсутствуСт, Π² WAN Π΅ΡΡ‚ΡŒ, Π½ΠΎ Π½Π΅ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ. Ничто Π½Π΅ ΠΏΡ€Π΅Π΄Π²Π΅Ρ‰Π°Π΅Ρ‚ β€” ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΊΠ°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ Workaround!

FragmentSmack/SegmentSmack. ΠŸΠ΅Ρ€Π²Π°Ρ ΠΊΡ€ΠΎΠ²ΡŒ

ΠŸΠ΅Ρ€Π²Π°Ρ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°, с ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΌΡ‹ ΡΡ‚ΠΎΠ»ΠΊΠ½ΡƒΠ»ΠΈΡΡŒ, Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π»Π°ΡΡŒ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠ±Π»Π°Ρ‡Π½Ρ‹Π΅ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ‹ ΠΏΠΎΡ€ΠΎΠΉ примСняли Π½ΠΎΠ²Ρ‹Π΅ настройки лишь частично (Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ipfrag_low_thresh), Π° ΠΈΠ½ΠΎΠ³Π΄Π° Π½Π΅ примСняли Π²ΠΎΠΎΠ±Ρ‰Π΅ β€” просто ΠΏΠ°Π΄Π°Π»ΠΈ Π½Π° стартС. Π‘Ρ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎ воспроизвСсти ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ Π½Π΅ ΡƒΠ΄Π°Π²Π°Π»ΠΎΡΡŒ (Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ всС настройки ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΠ»ΠΈΡΡŒ Π±Π΅Π· ΠΊΠ°ΠΊΠΈΡ…-Π»ΠΈΠ±ΠΎ слоТностСй). ΠŸΠΎΠ½ΡΡ‚ΡŒ, ΠΏΠΎΡ‡Π΅ΠΌΡƒ ΠΏΠ°Π΄Π°Π΅Ρ‚ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ Π½Π° стартС, Ρ‚ΠΎΠΆΠ΅ Π½Π΅ Ρ‚Π°ΠΊ-Ρ‚ΠΎ просто: Π½ΠΈΠΊΠ°ΠΊΠΈΡ… ошибок Π½Π΅ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½ΠΎ. Одно Π±Ρ‹Π»ΠΎ извСстно Ρ‚ΠΎΡ‡Π½ΠΎ: ΠΎΡ‚ΠΊΠ°Ρ‚ настроСк Ρ€Π΅ΡˆΠ°Π΅Ρ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ с ΠΏΠ°Π΄Π΅Π½ΠΈΠ΅ΠΌ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ².

ΠŸΠΎΡ‡Π΅ΠΌΡƒ нСдостаточно ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ Sysctl Π½Π° хостС? ΠšΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ ΠΆΠΈΠ²Ρ‘Ρ‚ Π² своём Π²Ρ‹Π΄Π΅Π»Π΅Π½Π½ΠΎΠΌ сСтСвом Namespace, поэтому ΠΏΠΎ ΠΊΡ€Π°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅Ρ€Π΅ Ρ‡Π°ΡΡ‚ΡŒ сСтСвых Sysctl-ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² Π² ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡ‚Π»ΠΈΡ‡Π°Ρ‚ΡŒΡΡ ΠΎΡ‚ хоста.

Как ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ настройки Sysctl Π² ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π΅? Π’Π°ΠΊ ΠΊΠ°ΠΊ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ‹ Ρƒ нас Π½Π΅ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅, ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π»ΡŽΠ±ΡƒΡŽ настройку Sysctl, зайдя Π² сам ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€, Π½Π΅ получится β€” просто Π½Π΅ Ρ…Π²Π°Ρ‚ΠΈΡ‚ ΠΏΡ€Π°Π². Для запуска ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ² нашС ΠΎΠ±Π»Π°ΠΊΠΎ Π½Π° Ρ‚ΠΎΡ‚ ΠΌΠΎΠΌΠ΅Π½Ρ‚ использовало Docker (сСйчас ΡƒΠΆΠ΅ Podman). Π”ΠΎΠΊΠ΅Ρ€Ρƒ Ρ‡Π΅Ρ€Π΅Π· API ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Π»ΠΈΡΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°, Π² Ρ‚ΠΎΠΌ числС Π½ΡƒΠΆΠ½Ρ‹Π΅ настройки Sysctl.
Π’ Ρ…ΠΎΠ΄Π΅ ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€Π° вСрсий Π²Ρ‹ΡΡΠ½ΠΈΠ»ΠΎΡΡŒ, Ρ‡Ρ‚ΠΎ API Docker Π½Π΅ ΠΎΡ‚Π΄Π°Π²Π°Π»ΠΎ всС ошибки (ΠΏΠΎ ΠΊΡ€Π°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅Ρ€Π΅, Π² вСрсии 1.10). ΠŸΡ€ΠΈ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ΅ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ Ρ‡Π΅Ρ€Π΅Π· β€œdocker run” ΠΌΡ‹, Π½Π°ΠΊΠΎΠ½Π΅Ρ†-Ρ‚ΠΎ, ΡƒΠ²ΠΈΠ΄Π΅Π»ΠΈ Ρ…ΠΎΡ‚ΡŒ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ:

write /proc/sys/net/ipv4/ipfrag_high_thresh: invalid argument docker: Error response from daemon: Cannot start container <...>: [9] System error: could not synchronise with container process.

Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° Π½Π΅ Π²Π°Π»ΠΈΠ΄Π½ΠΎΠ΅. Но ΠΏΠΎΡ‡Π΅ΠΌΡƒ? И ΠΏΠΎΡ‡Π΅ΠΌΡƒ ΠΎΠ½ΠΎ Π½Π΅ Π²Π°Π»ΠΈΠ΄Π½ΠΎΠ΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΈΠ½ΠΎΠ³Π΄Π°? Π’Ρ‹ΡΡΠ½ΠΈΠ»ΠΎΡΡŒ, Ρ‡Ρ‚ΠΎ Docker Π½Π΅ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ порядок примСнСния ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² Sysctl (послСдняя провСрСнная вСрсия β€” 1.13.1), поэтому ΠΈΠ½ΠΎΠ³Π΄Π° ipfrag_high_thresh пытался Π²Ρ‹ΡΡ‚Π°Π²ΠΈΡ‚ΡŒΡΡ Π½Π° 256K, ΠΊΠΎΠ³Π΄Π° ipfrag_low_thresh Π΅Ρ‰Ρ‘ Π±Ρ‹Π» 3M, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ вСрхняя Π³Ρ€Π°Π½ΠΈΡ†Π° Π±Ρ‹Π»Π° Π½ΠΈΠΆΠ΅, Ρ‡Π΅ΠΌ ниТняя, Ρ‡Ρ‚ΠΎ ΠΈ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΠ»ΠΎ ΠΊ ошибкС.

На Ρ‚ΠΎΡ‚ ΠΌΠΎΠΌΠ΅Π½Ρ‚ Ρƒ нас ΡƒΠΆΠ΅ использовался свой ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ доконфигуривания ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° послС старта (Π·Π°ΠΌΠΎΡ€ΠΎΠ·ΠΊΠ° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° Ρ‡Π΅Ρ€Π΅Π· cgroup freezer ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄ Π² namespace ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° Ρ‡Π΅Ρ€Π΅Π· ip netns), ΠΈ ΠΌΡ‹ Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ Π² эту Ρ‡Π°ΡΡ‚ΡŒ Ρ‚Π°ΠΊΠΆΠ΅ прописываниС Sysctl-ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ². ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π±Ρ‹Π»Π° Ρ€Π΅ΡˆΠ΅Π½Π°.

FragmentSmack/SegmentSmack. ΠŸΠ΅Ρ€Π²Π°Ρ ΠΊΡ€ΠΎΠ²ΡŒ 2

НС успСли ΠΌΡ‹ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ с ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ Workaround Π² ΠΎΠ±Π»Π°ΠΊΠ΅, ΠΊΠ°ΠΊ стали ΠΏΠΎΡΡ‚ΡƒΠΏΠ°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π²Ρ‹Π΅ Ρ€Π΅Π΄ΠΊΠΈΠ΅ ΠΆΠ°Π»ΠΎΠ±Ρ‹ ΠΎΡ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ. На Ρ‚ΠΎΡ‚ ΠΌΠΎΠΌΠ΅Π½Ρ‚ ΠΏΡ€ΠΎΡˆΠ»ΠΎ нСсколько нСдСль с Π½Π°Ρ‡Π°Π»Π° примСнСния Workaround Π½Π° ΠΏΠ΅Ρ€Π²Ρ‹Ρ… сСрвСрах. ΠŸΠ΅Ρ€Π²ΠΈΡ‡Π½ΠΎΠ΅ расслСдованиС ΠΏΠΎΠΊΠ°Π·Π°Π»ΠΎ, Ρ‡Ρ‚ΠΎ ΠΆΠ°Π»ΠΎΠ±Ρ‹ поступали Π½Π° ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ сСрвисы, ΠΈ Π½Π΅ Π½Π° всС сСрвСры Π΄Π°Π½Π½Ρ‹Ρ… сСрвисов. ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ° вновь ΠΎΠ±Ρ€Π΅Π»Π° ΠΊΡ€Π°ΠΉΠ½Π΅ Π½Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹ΠΉ Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€.

Π’ ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ ΠΌΡ‹, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, ΠΏΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Π»ΠΈ ΠΎΡ‚ΠΊΠ°Ρ‚ΠΈΡ‚ΡŒ настройки Sysctl, Π½ΠΎ это Π½Π΅ Π΄Π°Π»ΠΎ Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ эффСкта. Π Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ манипуляции с настройками сСрвСра ΠΈ прилоТСния Ρ‚ΠΎΠΆΠ΅ Π½Π΅ ΠΏΠΎΠΌΠΎΠ³Π»ΠΈ. Помог reboot. Reboot для Linux ΡΡ‚ΠΎΠ»ΡŒ ΠΆΠ΅ противоСстСствСнСн, сколь ΠΎΠ½ Π±Ρ‹Π» Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌ условиСм для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Windows Π² Π±Ρ‹Π»Ρ‹Π΅ Π΄Π½ΠΈ. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ ΠΎΠ½ ΠΏΠΎΠΌΠΎΠ³, ΠΈ ΠΌΡ‹ списали всё Π½Π° «глюк Π² ядрС» ΠΏΡ€ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠΈ Π½ΠΎΠ²Ρ‹Ρ… настроСк Π² Sysctl. Как ΠΆΠ΅ это Π±Ρ‹Π»ΠΎ лСгкомыслСнно…

Π§Π΅Ρ€Π΅Π· Ρ‚Ρ€ΠΈ Π½Π΅Π΄Π΅Π»ΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΠΈΠ»Π°ΡΡŒ. ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ этих сСрвСров Π±Ρ‹Π»Π° довольно простой: Nginx Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ прокси/балансировщика. Π’Ρ€Π°Ρ„ΠΈΠΊΠ° Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ. Новая вводная: Π½Π° ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°Ρ… с ΠΊΠ°ΠΆΠ΄Ρ‹ΠΌ Π΄Π½Ρ‘ΠΌ увСличиваСтся количСство 504-Ρ… ошибок (Gateway Timeout). На Π³Ρ€Π°Ρ„ΠΈΠΊΠ΅ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ число 504-Ρ… ошибок Π² дСнь ΠΏΠΎ этому сСрвису:

Π‘ΠΎΠΉΡ‚Π΅ΡΡŒ уязвимостСй, воркэраунды приносящих. Π§Π°ΡΡ‚ΡŒ 1: FragmentSmack/SegmentSmack

ВсС ошибки ΠΏΡ€ΠΎ ΠΎΠ΄ΠΈΠ½ ΠΈ Ρ‚ΠΎΡ‚ ΠΆΠ΅ Π±Π΅ΠΊΠ΅Π½Π΄ β€” ΠΏΡ€ΠΎ Ρ‚ΠΎΡ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ находится Π² ΠΎΠ±Π»Π°ΠΊΠ΅. Π“Ρ€Π°Ρ„ΠΈΠΊ потрСблСния памяти ΠΏΠΎΠ΄ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Ρ‹ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² Π½Π° этом Π±Π΅ΠΊΠ΅Π½Π΄Π΅ выглядСл ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

Π‘ΠΎΠΉΡ‚Π΅ΡΡŒ уязвимостСй, воркэраунды приносящих. Π§Π°ΡΡ‚ΡŒ 1: FragmentSmack/SegmentSmack

Π­Ρ‚ΠΎ ΠΎΠ΄Π½ΠΎ ΠΈΠ· самых ярких проявлСний ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ Π½Π° Π³Ρ€Π°Ρ„ΠΈΠΊΠ°Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы. Π’ ΠΎΠ±Π»Π°ΠΊΠ΅ ΠΊΠ°ΠΊ Ρ€Π°Π· Π² это ΠΆΠ΅ врСмя Π±Ρ‹Π»Π° ΠΏΠΎΡ„ΠΈΠΊΡˆΠ΅Π½Π° другая сСтСвая ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° с настройками QoS (Traffic Control). На Π³Ρ€Π°Ρ„ΠΈΠΊΠ΅ потрСблСния памяти ΠΏΠΎΠ΄ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Ρ‹ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² ΠΎΠ½Π° выглядСла Ρ‚ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊ ΠΆΠ΅:

Π‘ΠΎΠΉΡ‚Π΅ΡΡŒ уязвимостСй, воркэраунды приносящих. Π§Π°ΡΡ‚ΡŒ 1: FragmentSmack/SegmentSmack

ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π±Ρ‹Π»ΠΎ простым: Ссли Π½Π° Π³Ρ€Π°Ρ„ΠΈΠΊΠ°Ρ… ΠΎΠ½ΠΈ выглядят ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎ, Ρ‚ΠΎ ΠΈ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π° Ρƒ Π½ΠΈΡ… одинаковая. Π’Π΅ΠΌ Π±ΠΎΠ»Π΅Π΅, Ρ‡Ρ‚ΠΎ ΠΊΠ°ΠΊΠΈΠ΅-Π»ΠΈΠ±ΠΎ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ с этим Ρ‚ΠΈΠΏΠΎΠΌ памяти ΡΠ»ΡƒΡ‡Π°ΡŽΡ‚ΡΡ Ρ‡Ρ€Π΅Π·Π²Ρ‹Ρ‡Π°ΠΉΠ½ΠΎ Ρ€Π΅Π΄ΠΊΠΎ.

Π‘ΡƒΡ‚ΡŒ ΠΏΠΎΡ„ΠΈΠΊΡˆΠ΅Π½Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π»Π°ΡΡŒ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ использовали Π² QoS ΠΏΠ°ΠΊΠ΅Ρ‚Π½Ρ‹ΠΉ ΡˆΠ΅Π΄ΡƒΠ»Π»Π΅Ρ€ fq с Π΄Π΅Ρ„ΠΎΠ»Ρ‚Π½Ρ‹ΠΌΠΈ настройками. По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ для ΠΎΠ΄Π½ΠΎΠ³ΠΎ соСдинСния ΠΎΠ½ позволяСт Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ Π² ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ 100 ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² ΠΈ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ соСдинСния Π² ситуации Π½Π΅Ρ…Π²Π°Ρ‚ΠΊΠΈ ΠΊΠ°Π½Π°Π»Π° стали Π·Π°Π±ΠΈΠ²Π°Ρ‚ΡŒ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ Π΄ΠΎ ΠΎΡ‚ΠΊΠ°Π·Π°. Π’ этом случаС ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ Π΄Ρ€ΠΎΠΏΠ°ΡŽΡ‚ΡΡ. Π’ статистикС tc (tc -s qdisc) это Π²ΠΈΠ΄Π½ΠΎ Ρ‚Π°ΠΊ:

qdisc fq 2c6c: parent 1:2c6c limit 10000p flow_limit 100p buckets 1024 orphan_mask 1023 quantum 3028 initial_quantum 15140 refill_delay 40.0ms
Β Sent 454701676345 bytes 491683359 pkt (dropped 464545, overlimits 0 requeues 0)
Β backlog 0b 0p requeues 0
Β Β 1024 flows (1021 inactive, 0 throttled)
Β Β 0 gc, 0 highprio, 0 throttled, 464545 flows_plimit

Β«464545 flows_plimitΒ» β€” это ΠΈ Π΅ΡΡ‚ΡŒ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹, Π΄Ρ€ΠΎΠΏΠ½ΡƒΡ‚Ρ‹Π΅ ΠΈΠ·-Π·Π° ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ΅Π½ΠΈΡ Π»ΠΈΠΌΠΈΡ‚Π° ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ соСдинСния, Π° Β«dropped 464545Β» β€” это сумма всСх Π΄Ρ€ΠΎΠΏΠ½ΡƒΡ‚Ρ‹Ρ… ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² этого ΡˆΠ΅Π΄ΡƒΠ»Π΅Ρ€Π°. ПослС увСличСния Π΄Π»ΠΈΠ½Ρ‹ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ Π΄ΠΎ 1 тыс. ΠΈ рСстарта ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ² ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° пСрСстала ΠΏΡ€ΠΎΡΠ²Π»ΡΡ‚ΡŒΡΡ. МоТно ΠΎΡ‚ΠΊΠΈΠ½ΡƒΡ‚ΡŒΡΡ Π² крСслС ΠΈ Π²Ρ‹ΠΏΠΈΡ‚ΡŒ смузи.

FragmentSmack/SegmentSmack. ПослСдняя ΠΊΡ€ΠΎΠ²ΡŒ

Π’ΠΎ-ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, спустя нСсколько мСсяцСв послС анонса уязвимостСй Π² ядрС, Π½Π°ΠΊΠΎΠ½Π΅Ρ†, появился фикс для FragmentSmack (напомню, Ρ‡Ρ‚ΠΎ вмСстС с анонсом Π² августС Π²Ρ‹ΡˆΠ΅Π» фикс Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для SegmentSmack), Ρ‡Ρ‚ΠΎ Π΄Π°Π»ΠΎ шанс ΠΎΡ‚ΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ ΠΎΡ‚ Workaround, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ доставил Π½Π°ΠΌ довольно ΠΌΠ½ΠΎΠ³ΠΎ нСприятностСй. Π§Π°ΡΡ‚ΡŒ сСрвСров Π·Π° это врСмя ΠΌΡ‹ ΡƒΠΆΠ΅ успСли пСрСвСсти Π½Π° Π½ΠΎΠ²ΠΎΠ΅ ядро, ΠΈ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π½Π°Π΄ΠΎ Π±Ρ‹Π»ΠΎ Π½Π°Ρ‡ΠΈΠ½Π°Ρ‚ΡŒ с Π½Π°Ρ‡Π°Π»Π°. Π—Π°Ρ‡Π΅ΠΌ ΠΌΡ‹ обновляли ядро, Π½Π΅ доТидаясь фикса FragmentSmack? Π”Π΅Π»ΠΎ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ процСсс Π·Π°Ρ‰ΠΈΡ‚Ρ‹ ΠΎΡ‚ этих уязвимостСй совпал (ΠΈ слился) с процСссом обновлСния самого CentOS (Ρ‡Ρ‚ΠΎ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ Π΅Ρ‰Ρ‘ большС Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, Ρ‡Π΅ΠΌ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ядра). К Ρ‚ΠΎΠΌΡƒ ΠΆΠ΅ SegmentSmack β€” Π±ΠΎΠ»Π΅Π΅ опасная ΡƒΡΠ·Π²ΠΈΠΌΠΎΡΡ‚ΡŒ, Π° фикс для Π½Π΅Π³ΠΎ появился сразу, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ смысл Π±Ρ‹Π» Π² любом случаС. Однако, просто ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ ядро Π½Π° CentOS ΠΌΡ‹ Π½Π΅ ΠΌΠΎΠ³Π»ΠΈ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΡƒΡΠ·Π²ΠΈΠΌΠΎΡΡ‚ΡŒ FragmentSmack, которая появилась Π²ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½Π° CentOS 7.5, Π±Ρ‹Π»Π° ΠΏΠΎΡ„ΠΈΠΊΡˆΠ΅Π½Π° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² вСрсии 7.6, поэтому Π½Π°ΠΌ ΠΏΡ€ΠΈΡˆΠ»ΠΎΡΡŒ ΠΎΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ Π΄ΠΎ 7.5 ΠΈ Π½Π°Ρ‡ΠΈΠ½Π°Ρ‚ΡŒ всё Π·Π°Π½ΠΎΠ²ΠΎ с ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ΠΌ Π΄ΠΎ 7.6. И Ρ‚Π°ΠΊ Ρ‚ΠΎΠΆΠ΅ Π±Ρ‹Π²Π°Π΅Ρ‚.

Π’ΠΎ-Π²Ρ‚ΠΎΡ€Ρ‹Ρ…, ΠΊ Π½Π°ΠΌ Π²Π΅Ρ€Π½ΡƒΠ»ΠΈΡΡŒ Ρ€Π΅Π΄ΠΊΠΈΠ΅ ΠΆΠ°Π»ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ Π½Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹. БСйчас ΠΌΡ‹ ΡƒΠΆΠ΅ Ρ‚ΠΎΡ‡Π½ΠΎ Π·Π½Π°Π΅ΠΌ, Ρ‡Ρ‚ΠΎ всС ΠΎΠ½ΠΈ связаны с Π°ΠΏΠ»ΠΎΠ°Π΄ΠΎΠΌ Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΎΡ‚ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ² Π½Π° Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ наши сСрвСры. ΠŸΡ€ΠΈΡ‡Ρ‘ΠΌ Ρ‡Π΅Ρ€Π΅Π· эти сСрвСры шло ΠΎΡ‡Π΅Π½ΡŒ нСбольшоС количСство Π°ΠΏΠ»ΠΎΠ°Π΄ΠΎΠ² ΠΎΡ‚ ΠΎΠ±Ρ‰Π΅ΠΉ массы.

Как ΠΌΡ‹ ΠΏΠΎΠΌΠ½ΠΈΠΌ ΠΈΠ· рассказа Π²Ρ‹ΡˆΠ΅, ΠΎΡ‚ΠΊΠ°Ρ‚ Sysctl Π½Π΅ ΠΏΠΎΠΌΠΎΠ³Π°Π». Помогал Reboot, Π½ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ.
ΠŸΠΎΠ΄ΠΎΠ·Ρ€Π΅Π½ΠΈΡ с Sysctl Π½Π΅ Π±Ρ‹Π»ΠΈ сняты, Π½ΠΎ Π½Π° этот Ρ€Π°Π· Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π»ΠΎΡΡŒ ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ большС ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ. Π’Π°ΠΊΠΆΠ΅ ΠΊΡ€Π°ΠΉΠ½Π΅ Π½Π΅ Ρ…Π²Π°Ρ‚Π°Π»ΠΎ возмоТности воспроизвСсти ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ с Π°ΠΏΠ»ΠΎΠ°Π΄ΠΎΠΌ Π½Π° ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π±ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΡ‡Π΅Ρ‡Π½ΠΎ ΠΈΠ·ΡƒΡ‡ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ происходит.

Анализ всСй доступной статистики ΠΈ Π»ΠΎΠ³ΠΎΠ² Π½Π΅ ΠΏΡ€ΠΈΠ±Π»ΠΈΠ·ΠΈΠ» нас ΠΊ пониманию происходящСго. ΠžΡΡ‚Ρ€ΠΎ Π½Π΅ Ρ…Π²Π°Ρ‚Π°Π»ΠΎ возмоТности воспроизвСсти ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Β«ΠΏΠΎΡ‰ΡƒΠΏΠ°Ρ‚ΡŒΒ» ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ΅ соСдинСниС. НаконСц, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ Π½Π° спСцвСрсии прилоТСния ΡƒΠ΄Π°Π»ΠΎΡΡŒ Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎΠ³ΠΎ воспроизвСдСния ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ Π½Π° тСстовом устройствС ΠΏΡ€ΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΈ Ρ‡Π΅Ρ€Π΅Π· Wi-Fi. Π­Ρ‚ΠΎ стало ΠΏΡ€ΠΎΡ€Ρ‹Π²ΠΎΠΌ Π² расслСдовании. ΠšΠ»ΠΈΠ΅Π½Ρ‚ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π»ΡΡ ΠΊ Nginx, Ρ‚ΠΎΡ‚ проксировал Π½Π° Π±Π΅ΠΊΠ΅Π½Π΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ являлось нашС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° Java.

Π‘ΠΎΠΉΡ‚Π΅ΡΡŒ уязвимостСй, воркэраунды приносящих. Π§Π°ΡΡ‚ΡŒ 1: FragmentSmack/SegmentSmack

Π”ΠΈΠ°Π»ΠΎΠ³ ΠΏΡ€ΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°Ρ… Π±Ρ‹Π» Ρ‚Π°ΠΊΠΎΠΉ (зафиксирован Π½Π° сторонС Nginx-прокси):

  1. ΠšΠ»ΠΈΠ΅Π½Ρ‚: запрос Π½Π° ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ Π΄ΠΎΠΊΠ°Ρ‡ΠΈΠ²Π°Π½ΠΈΠΈ Ρ„Π°ΠΉΠ»Π°.
  2. Java-сСрвСр: ΠΎΡ‚Π²Π΅Ρ‚.
  3. ΠšΠ»ΠΈΠ΅Π½Ρ‚: POST с Ρ„Π°ΠΉΠ»ΠΎΠΌ.
  4. Java-сСрвСр: ошибка.

Java-сСрвСр ΠΏΡ€ΠΈ этом ΠΏΠΈΡˆΠ΅Ρ‚ Π² Π»ΠΎΠ³, Ρ‡Ρ‚ΠΎ ΠΎΡ‚ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΎ 0 Π±Π°ΠΉΡ‚ Π΄Π°Π½Π½Ρ‹Ρ…, Π° Nginx-прокси β€” Ρ‡Ρ‚ΠΎ запрос занял большС 30 сСкунд (30 сСкунд β€” это врСмя Ρ‚Π°ΠΉΠΌΠ°ΡƒΡ‚Π° Ρƒ клиСнтского прилоТСния). ΠŸΠΎΡ‡Π΅ΠΌΡƒ ΠΆΠ΅ Ρ‚Π°ΠΉΠΌΠ°ΡƒΡ‚ ΠΈ ΠΏΠΎΡ‡Π΅ΠΌΡƒ 0 Π±Π°ΠΉΡ‚? Π‘ Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния HTTP всё Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ‚Π°ΠΊ, ΠΊΠ°ΠΊ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ, Π½ΠΎ POST с Ρ„Π°ΠΉΠ»ΠΎΠΌ ΠΊΠ°ΠΊ Π±ΡƒΠ΄Ρ‚ΠΎ ΠΏΡ€ΠΎΠΏΠ°Π΄Π°Π΅Ρ‚ ΠΈΠ· сСти. ΠŸΡ€ΠΈΡ‡Ρ‘ΠΌ ΠΏΡ€ΠΎΠΏΠ°Π΄Π°Π΅Ρ‚ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠΌ ΠΈ Nginx. ΠŸΡ€ΠΈΡˆΠ»ΠΎ врСмя Π²ΠΎΠΎΡ€ΡƒΠΆΠΈΡ‚ΡŒΡΡ Tcpdump! Но для Π½Π°Ρ‡Π°Π»Π° Π½Π°Π΄ΠΎ ΠΏΠΎΠ½ΡΡ‚ΡŒ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ сСти. Nginx-прокси стоит Π·Π° L3-балансировщиком NFware. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Ρ‚ΡƒΠ½Π½Π΅Π»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ для доставки ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² ΠΎΡ‚ L3-балансировщика Π΄ΠΎ сСрвСра, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ добавляСт свои Ρ…ΠΈΠ΄Π΅Ρ€Ρ‹ Π² ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹:

Π‘ΠΎΠΉΡ‚Π΅ΡΡŒ уязвимостСй, воркэраунды приносящих. Π§Π°ΡΡ‚ΡŒ 1: FragmentSmack/SegmentSmack

ΠŸΡ€ΠΈ этом ΡΠ΅Ρ‚ΡŒ Π½Π° этот сСрвСр ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΡ‚ Π² Π²ΠΈΠ΄Π΅ Vlan-Ρ‚Π΅Π³Π³ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ°, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Ρ‚ΠΎΠΆΠ΅ добавляСт свои поля Π² ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹:

Π‘ΠΎΠΉΡ‚Π΅ΡΡŒ уязвимостСй, воркэраунды приносящих. Π§Π°ΡΡ‚ΡŒ 1: FragmentSmack/SegmentSmack

А Π΅Ρ‰Ρ‘ этот Ρ‚Ρ€Π°Ρ„ΠΈΠΊ ΠΌΠΎΠΆΠ΅Ρ‚ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ (Ρ‚ΠΎΡ‚ самый нСбольшой ΠΏΡ€ΠΎΡ†Π΅Π½Ρ‚ входящСго Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ°, ΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΌΡ‹ Π³ΠΎΠ²ΠΎΡ€ΠΈΠ»ΠΈ ΠΏΡ€ΠΈ ΠΎΡ†Π΅Π½ΠΊΠ΅ рисков ΠΎΡ‚ Workaround), Ρ‡Ρ‚ΠΎ Ρ‚ΠΎΠΆΠ΅ мСняСт содСрТаниС Ρ…ΠΈΠ΄Π΅Ρ€ΠΎΠ²:

Π‘ΠΎΠΉΡ‚Π΅ΡΡŒ уязвимостСй, воркэраунды приносящих. Π§Π°ΡΡ‚ΡŒ 1: FragmentSmack/SegmentSmack

Π•Ρ‰Ρ‘ Ρ€Π°Π·: ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ инкапсулированы Vlan-Ρ‚Π΅Π³ΠΎΠΌ, инкапсулированы Ρ‚ΡƒΠ½Π½Π΅Π»Π΅ΠΌ, Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹. Π§Ρ‚ΠΎΠ±Ρ‹ Ρ‚ΠΎΡ‡Π½Π΅Π΅ ΠΏΠΎΠ½ΡΡ‚ΡŒ, ΠΊΠ°ΠΊ это происходит, прослСдим ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ ΠΏΠ°ΠΊΠ΅Ρ‚Π° ΠΎΡ‚ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° Π΄ΠΎ Nginx-прокси.

  1. ΠŸΠ°ΠΊΠ΅Ρ‚ ΠΏΠΎΠΏΠ°Π΄Π°Π΅Ρ‚ Π½Π° L3-балансировщик. Для ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠΉ ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ Π²Π½ΡƒΡ‚Ρ€ΠΈ Π΄Π°Ρ‚Π°-Ρ†Π΅Π½Ρ‚Ρ€Π° ΠΏΠ°ΠΊΠ΅Ρ‚ инкапсулируСтся Π² Ρ‚ΡƒΠ½Π½Π΅Π»ΡŒ ΠΈ отправляСтся Π½Π° ΡΠ΅Ρ‚Π΅Π²ΡƒΡŽ ΠΊΠ°Ρ€Ρ‚Ρƒ.
  2. Π’Π°ΠΊ ΠΊΠ°ΠΊ ΠΏΠ°ΠΊΠ΅Ρ‚ + Ρ…ΠΈΠ΄Π΅Ρ€Ρ‹ туннСля Π½Π΅ Π²Π»Π΅Π·Π°ΡŽΡ‚ Π² MTU, ΠΏΠ°ΠΊΠ΅Ρ‚ рСТСтся Π½Π° Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Ρ‹ ΠΈ отправляСтся Π² ΡΠ΅Ρ‚ΡŒ.
  3. Π‘Π²ΠΈΡ‚Ρ‡ послС L3-балансировщика ΠΏΡ€ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠΈ ΠΏΠ°ΠΊΠ΅Ρ‚Π° добавляСт ΠΊ Π½Π΅ΠΌΡƒ Vlan-Ρ‚Π΅Π³ ΠΈ отправляСт дальшС.
  4. Π‘Π²ΠΈΡ‚Ρ‡ ΠΏΠ΅Ρ€Π΅Π΄ Nginx-прокси Π²ΠΈΠ΄ΠΈΡ‚ (ΠΏΠΎ настройкам ΠΏΠΎΡ€Ρ‚Π°), Ρ‡Ρ‚ΠΎ сСрвСр ΠΎΠΆΠΈΠ΄Π°Π΅Ρ‚ Vlan-инкапсулированный ΠΏΠ°ΠΊΠ΅Ρ‚, поэтому отправляСт Π΅Π³ΠΎ, ΠΊΠ°ΠΊ Π΅ΡΡ‚ΡŒ, Π½Π΅ убирая Vlan-Ρ‚Π΅Π³.
  5. Linux ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Ρ‹ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² ΠΈ склСиваСт ΠΈΡ… Π² ΠΎΠ΄ΠΈΠ½ большой ΠΏΠ°ΠΊΠ΅Ρ‚.
  6. Π”Π°Π»Π΅Π΅ ΠΏΠ°ΠΊΠ΅Ρ‚ ΠΏΠΎΠΏΠ°Π΄Π°Π΅Ρ‚ Π½Π° Vlan-интСрфСйс, Π³Π΄Π΅ с Π½Π΅Π³ΠΎ снимаСтся ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ слой β€” Vlan-инкапсулированиС.
  7. Π—Π°Ρ‚Π΅ΠΌ Linux отправляСт Π΅Π³ΠΎ Π½Π° Tunnel-интСрфСйс, Π³Π΄Π΅ с Π½Π΅Π³ΠΎ снимаСтся Π΅Ρ‰Ρ‘ ΠΎΠ΄ΠΈΠ½ слой β€” Tunnel-инкапсулированиС.

Π‘Π»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ это всё Π² Π²ΠΈΠ΄Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² Π² tcpdump.
Начнём с ΠΊΠΎΠ½Ρ†Π°: Π΅ΡΡ‚ΡŒ Π»ΠΈ чистыС (Π±Π΅Π· Π»ΠΈΡˆΠ½ΠΈΡ… Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠ²) IP-ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ ΠΎΡ‚ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ², со снятым vlan- ΠΈ tunnel-инкапсулированиСм?

tcpdump host <ip ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°>

НСт, Ρ‚Π°ΠΊΠΈΡ… ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² Π½Π° сСрвСрС Π½Π΅ Π±Ρ‹Π»ΠΎ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ Ρ€Π°Π½ΡŒΡˆΠ΅. Π•ΡΡ‚ΡŒ Π»ΠΈ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ со снятым Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Vlan-инкапсулированиСм?

tcpdump ip[32:4]=0xx390x2xx

0xx390x2xx β€” это IP-адрСс ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° Π² hex-Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅.
32:4 β€” адрСс ΠΈ Π΄Π»ΠΈΠ½Π° поля, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ записан SCR IP Π² Tunnel-ΠΏΠ°ΠΊΠ΅Ρ‚Π΅.

АдрСс поля ΠΏΡ€ΠΈΡˆΠ»ΠΎΡΡŒ ΠΏΠΎΠ΄Π±ΠΈΡ€Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€ΠΎΠΌ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π² ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚Π΅ ΠΏΠΈΡˆΡƒΡ‚ ΠΏΡ€ΠΎ 40, 44, 50, 54, Π½ΠΎ Ρ‚Π°ΠΌ IP-адрСса Π½Π΅ Π±Ρ‹Π»ΠΎ. Π’Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² Π² hex (ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ -xx ΠΈΠ»ΠΈ -XX Π² tcpdump) ΠΈ ΠΏΠΎΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ, ΠΏΠΎ ΠΊΠ°ΠΊΠΎΠΌΡƒ адрСсу извСстный Π²Π°ΠΌ IP.

Π•ΡΡ‚ΡŒ Π»ΠΈ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Ρ‹ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² Π±Π΅Π· снятого Vlan- ΠΈ Tunnel-инкапсулирования?

tcpdump ((ip[6:2] > 0) and (not ip[6] = 64))

Π­Ρ‚Π° магия ΠΏΠΎΠΊΠ°ΠΆΠ΅Ρ‚ Π½Π°ΠΌ всС Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Ρ‹, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ послСдний. НавСрноС, Ρ‚ΠΎ ΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎ IP, Π½ΠΎ я Π½Π΅ пытался, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Ρ‚Π°ΠΊΠΈΡ… ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² Π½Π΅ ΠΎΡ‡Π΅Π½ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ, ΠΈ Π² ΠΎΠ±Ρ‰Π΅ΠΌ ΠΏΠΎΡ‚ΠΎΠΊΠ΅ Π»Π΅Π³ΠΊΠΎ нашлись Π½ΡƒΠΆΠ½Ρ‹Π΅ ΠΌΠ½Π΅. Π’ΠΎΡ‚ ΠΎΠ½ΠΈ:

14:02:58.471063 In 00:de:ff:1a:94:11 ethertype IPv4 (0x0800), length 1516: (tos 0x0, ttl 63, id 53652, offset 0, flags [+], proto IPIP (4), length 1500)
Β Β Β Β 11.11.11.11 > 22.22.22.22: truncated-ip - 20 bytes missing! (tos 0x0, ttl 50, id 57750, offset 0, flags [DF], proto TCP (6), length 1500)
Β Β Β Β 33.33.33.33.33333 > 44.44.44.44.80: Flags [.], seq 0:1448, ack 1, win 343, options [nop,nop,TS val 11660691 ecr 2998165860], length 1448
Β Β Β Β Β Β Β Β 0x0000: 0000 0001 0006 00de fb1a 9441 0000 0800 ...........A....
Β Β Β Β Β Β Β Β 0x0010: 4500 05dc d194 2000 3f09 d5fb 0a66 387d E.......?....f8}
Β Β Β Β Β Β Β Β 0x0020: 1x67 7899 4500 06xx e198 4000 3206 6xx4 [email protected].
Β Β Β Β Β Β Β Β 0x0030: b291 x9xx x345 2541 83b9 0050 9740 0x04 .......A...P.@..
Β Β Β Β Β Β Β Β 0x0040: 6444 4939 8010 0257 8c3c 0000 0101 080x dDI9...W.......
Β Β Β Β Β Β Β Β 0x0050: 00b1 ed93 b2b4 6964 xxd8 ffe1 006a 4578 ......ad.....jEx
Β Β Β Β Β Β Β Β 0x0060: 6966 0000 4x4d 002a 0500 0008 0004 0100 if..MM.*........

14:02:58.471103 In 00:de:ff:1a:94:11 ethertype IPv4 (0x0800), length 62: (tos 0x0, ttl 63, id 53652, offset 1480, flags [none], proto IPIP (4), length 40)
Β Β Β Β 11.11.11.11 > 22.22.22.22: ip-proto-4
Β Β Β Β Β Β Β Β 0x0000: 0000 0001 0006 00de fb1a 9441 0000 0800 ...........A....
Β Β Β Β Β Β Β Β 0x0010: 4500 0028 d194 00b9 3f04 faf6 2x76 385x E..(....?....f8}
Β Β Β Β Β Β Β Β 0x0020: 1x76 6545 xxxx 1x11 2d2c 0c21 8016 8e43 .faE...D-,.!...C
Β Β Β Β Β Β Β Β 0x0030: x978 e91d x9b0 d608 0000 0000 0000 7c31 .x............|Q
Β Β Β Β Β Β Β Β 0x0040: 881d c4b6 0000 0000 0000 0000 0000 ..............

Π­Ρ‚ΠΎ Π΄Π²Π° Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π° ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΠ°ΠΊΠ΅Ρ‚Π° (ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΉ ID 53652) с Ρ„ΠΎΡ‚ΠΎΠ³Ρ€Π°Ρ„ΠΈΠ΅ΠΉ (Π²ΠΈΠ΄Π½ΠΎ слово Exif Π² ΠΏΠ΅Ρ€Π²ΠΎΠΌ ΠΏΠ°ΠΊΠ΅Ρ‚Π΅). По ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π΅ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Π½Π° этом ΡƒΡ€ΠΎΠ²Π½Π΅ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ Π΅ΡΡ‚ΡŒ, Π° Π² склССнном Π²ΠΈΠ΄Π΅ Π² Π΄Π°ΠΌΠΏΠ°Ρ… β€” Π½Π΅Ρ‚, Ρ‚ΠΎ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° явно со сборкой. НаконСц-Ρ‚ΠΎ этому Π΅ΡΡ‚ΡŒ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½ΠΎΠ΅ ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½ΠΈΠ΅!

Π”Π΅ΠΊΠΎΠ΄Π΅Ρ€ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² Π½Π΅ выявил Π½ΠΈΠΊΠ°ΠΊΠΈΡ… ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ, ΠΏΡ€Π΅ΠΏΡΡ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… сборкС. ΠŸΡ€ΠΎΠ±ΠΎΠ²Π°Π» Ρ‚ΡƒΡ‚: hpd.gasmi.net. Π‘Π½Π°Ρ‡Π°Π»Π°, ΠΏΡ€ΠΈ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ΅ Ρ‚ΡƒΠ΄Π° Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π·Π°ΠΏΠΈΡ…Π°Ρ‚ΡŒ, Π΄Π΅ΠΊΠΎΠ΄Π΅Ρ€Ρƒ Π½Π΅ нравится Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ ΠΏΠ°ΠΊΠ΅Ρ‚Π°. Оказалось, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΌ Π±Ρ‹Π»ΠΈ ΠΊΠ°ΠΊΠΈΠ΅-Ρ‚ΠΎ лишниС Π΄Π²Π° ΠΎΠΊΡ‚Π΅Ρ‚Π° ΠΌΠ΅ΠΆΠ΄Ρƒ Srcmac ΠΈ Ethertype (Π½Π΅ относящиСся ΠΊ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π°Ρ…). ПослС ΠΈΡ… удалСния Π΄Π΅ΠΊΠΎΠ΄Π΅Ρ€ Π·Π°Ρ€Π°Π±ΠΎΡ‚Π°Π». Однако Π½ΠΈΠΊΠ°ΠΊΠΈΡ… ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ ΠΎΠ½ Π½Π΅ ΠΏΠΎΠΊΠ°Π·Π°Π».
Как Π½ΠΈ ΠΊΡ€ΡƒΡ‚ΠΈ, ΠΊΡ€ΠΎΠΌΠ΅ Ρ‚Π΅Ρ… самых Sysctl Π½ΠΈΡ‡Π΅Π³ΠΎ большС Π½Π΅ нашлось. ΠžΡΡ‚Π°Π²Π°Π»ΠΎΡΡŒ Π½Π°ΠΉΡ‚ΠΈ способ выявлСния ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ½Ρ‹Ρ… сСрвСров, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ½ΡΡ‚ΡŒ ΠΌΠ°ΡΡˆΡ‚Π°Π± ΠΈ ΠΏΡ€ΠΈΠ½ΡΡ‚ΡŒ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ ΠΎ Π΄Π°Π»ΡŒΠ½Π΅ΠΉΡˆΠΈΡ… дСйствиях. Достаточно быстро Π½Π°ΡˆΡ‘Π»ΡΡ Π½ΡƒΠΆΠ½Ρ‹ΠΉ счётчик:

netstat -s | grep "packet reassembles failed”

Он ΠΆΠ΅ Π΅ΡΡ‚ΡŒ Π² snmpd ΠΏΠΎΠ΄ OID=1.3.6.1.2.1.4.31.1.1.16.1 (ipSystemStatsReasmFails).

Β«The number of failures detected by the IP re-assembly algorithm (for whatever reason: timed out, errors, etc.)Β».

Π‘Ρ€Π΅Π΄ΠΈ Π³Ρ€ΡƒΠΏΠΏΡ‹ сСрвСров, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΈΠ·ΡƒΡ‡Π°Π»Π°ΡΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°, Π½Π° Π΄Π²ΡƒΡ… этот счётчик увСличивался быстрСС, Π½Π° Π΄Π²ΡƒΡ… β€” ΠΌΠ΅Π΄Π»Π΅Π½Π½Π΅Π΅, Π° Π΅Ρ‰Ρ‘ Π½Π° Π΄Π²ΡƒΡ… Π²ΠΎΠΎΠ±Ρ‰Π΅ Π½Π΅ увСличивался. Π‘Ρ€Π°Π²Π½Π΅Π½ΠΈΠ΅ Π΄ΠΈΠ½Π°ΠΌΠΈΠΊΠΈ этого счётчика с Π΄ΠΈΠ½Π°ΠΌΠΈΠΊΠΎΠΉ HTTP-ошибок Π½Π° Java-сСрвСрС выявило ΠΊΠΎΡ€Ρ€Π΅Π»ΡΡ†ΠΈΡŽ. Π’ΠΎ Π΅ΡΡ‚ΡŒ счётчик ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π½Π° ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³.

НаличиС Π½Π°Π΄Ρ‘ΠΆΠ½ΠΎΠ³ΠΎ ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ ΠΎΡ‡Π΅Π½ΡŒ Π²Π°ΠΆΠ½ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Ρ‚ΠΎΡ‡Π½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ, ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ Π»ΠΈ ΠΎΡ‚ΠΊΠ°Ρ‚ Sysctl, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΈΠ· ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π³ΠΎ рассказа ΠΌΡ‹ Π·Π½Π°Π΅ΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡŽ это сразу ΠΏΠΎΠ½ΡΡ‚ΡŒ нСльзя. Π”Π°Π½Π½Ρ‹ΠΉ ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ‚ΠΎΡ€ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ» Π±Ρ‹ Π²Ρ‹ΡΠ²ΠΈΡ‚ΡŒ всС ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ½Ρ‹Π΅ мСста Π² ΠΏΡ€ΠΎΠ΄Π°ΠΊΡˆΠ΅Π½Π΅ Π΄ΠΎ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ это ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ°Ρ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ.
ПослС ΠΎΡ‚ΠΊΠ°Ρ‚Π° Sysctl ошибки ΠΏΠΎ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Ρƒ ΠΏΡ€Π΅ΠΊΡ€Π°Ρ‚ΠΈΠ»ΠΈΡΡŒ, Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ Π±Ρ‹Π»Π° Π΄ΠΎΠΊΠ°Π·Π°Π½Π°, ΠΊΠ°ΠΊ ΠΈ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΎΡ‚ΠΊΠ°Ρ‚ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚.

ΠœΡ‹ ΠΎΡ‚ΠΊΠ°Ρ‚ΠΈΠ»ΠΈ настройки Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ Π½Π° Π΄Ρ€ΡƒΠ³ΠΈΡ… сСрвСрах, Π³Π΄Π΅ загорСлся Π½ΠΎΠ²Ρ‹ΠΉ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³, Π° Π³Π΄Π΅-Ρ‚ΠΎ ΠΏΠΎΠ΄ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Ρ‹ Π²Ρ‹Π΄Π΅Π»ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ большС памяти, Ρ‡Π΅ΠΌ Π±Ρ‹Π»ΠΎ Π΄ΠΎ этого ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ (это Π±Ρ‹Π»Π° udp-статистика, частичная потСря ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π½Π΅ Π±Ρ‹Π»Π° Π·Π°ΠΌΠ΅Ρ‚Π½Π° Π½Π° ΠΎΠ±Ρ‰Π΅ΠΌ Ρ„ΠΎΠ½Π΅).

Π‘Π°ΠΌΡ‹Π΅ Π³Π»Π°Π²Π½Ρ‹Π΅ вопросы

ΠŸΠΎΡ‡Π΅ΠΌΡƒ Ρƒ нас Π½Π° L3-балансировщикС Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ΠΈΡ€ΡƒΡŽΡ‚ΡΡ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹? Π‘ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€ΠΈΠ»Π΅Ρ‚Π°ΡŽΡ‚ ΠΎΡ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ Π½Π° балансировщики, β€” это SYN ΠΈ ACK. Π Π°Π·ΠΌΠ΅Ρ€Ρ‹ этих ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² нСбольшиС. Но Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ доля Ρ‚Π°ΠΊΠΈΡ… ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² ΠΎΡ‡Π΅Π½ΡŒ Π²Π΅Π»ΠΈΠΊΠ°, Ρ‚ΠΎ Π½Π° ΠΈΡ… Ρ„ΠΎΠ½Π΅ ΠΌΡ‹ Π½Π΅ Π·Π°ΠΌΠ΅Ρ‚ΠΈΠ»ΠΈ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ Π±ΠΎΠ»ΡŒΡˆΠΈΡ… ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ стали Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ.

ΠŸΡ€ΠΈΡ‡ΠΈΠ½ΠΎΠΉ стал поломавшийся скрипт ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ advmss Π½Π° сСрвСрах с Vlan-интСрфСйсами (сСрвСров с Ρ‚Π΅Π³ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠΎΠΌ Π½Π° Ρ‚ΠΎΡ‚ ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π² ΠΏΡ€ΠΎΠ΄Π°ΠΊΡˆΠ΅Π½Π΅ Π±Ρ‹Π»ΠΎ ΠΎΡ‡Π΅Π½ΡŒ ΠΌΠ°Π»ΠΎ). Advmss позволяСт донСсти Π΄ΠΎ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ Π² Π½Π°ΡˆΡƒ сторону Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ мСньшСго Ρ€Π°Π·ΠΌΠ΅Ρ€Π°, Ρ‡Ρ‚ΠΎΠ±Ρ‹ послС приклСивания ΠΊ Π½ΠΈΠΌ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠ² туннСля ΠΈΡ… Π½Π΅ ΠΏΡ€ΠΈΡˆΠ»ΠΎΡΡŒ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ.

ΠŸΠΎΡ‡Π΅ΠΌΡƒ ΠΎΡ‚ΠΊΠ°Ρ‚ Sysctl Π½Π΅ ΠΏΠΎΠΌΠΎΠ³Π°Π», Π° Ρ€Π΅Π±ΡƒΡ‚ ΠΏΠΎΠΌΠΎΠ³Π°Π»? ΠžΡ‚ΠΊΠ°Ρ‚ Sysctl мСнял ΠΎΠ±ΡŠΡ‘ΠΌ памяти, доступной для склСивания ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ². ΠŸΡ€ΠΈ этом, судя ΠΏΠΎ всСму сам Ρ„Π°ΠΊΡ‚ пСрСполнСния памяти ΠΏΠΎΠ΄ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Ρ‹ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΠ» ΠΊ Ρ‚ΠΎΡ€ΠΌΠΎΠΆΠ΅Π½ΠΈΡŽ соСдинСний, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΠ»ΠΎ ΠΊ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Ρ‹ Π½Π°Π΄ΠΎΠ»Π³ΠΎ Π·Π°Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π»ΠΈΡΡŒ Π² ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ. Π’ΠΎ Π΅ΡΡ‚ΡŒ процСсс зацикливался.
Π Π΅Π±ΡƒΡ‚ обнулял ΠΏΠ°ΠΌΡΡ‚ΡŒ ΠΈ всё ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΠ»ΠΎ Π² порядок.

МоТно Π»ΠΈ Π±Ρ‹Π»ΠΎ ΠΎΠ±ΠΎΠΉΡ‚ΠΈΡΡŒ Π±Π΅Π· Workaround? Π”Π°, Π½ΠΎ Π²Π΅Π»ΠΈΠΊ риск ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ Π±Π΅Π· обслуТивания Π² случаС Π°Ρ‚Π°ΠΊΠΈ. ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Workaround Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ ΠΏΡ€ΠΈΠ²Π΅Π»ΠΎ ΠΊ возникновСнию Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ Ρ‚ΠΎΡ€ΠΌΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· сСрвисов Ρƒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ, Π½ΠΎ Ρ‚Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ ΠΌΡ‹ считаСм, Ρ‡Ρ‚ΠΎ дСйствия Π±Ρ‹Π»ΠΈ ΠΎΠΏΡ€Π°Π²Π΄Π°Π½Ρ‹.

Π‘ΠΎΠ»ΡŒΡˆΠΎΠ΅ спасибо ΠΠ½Π΄Ρ€Π΅ΡŽ Π’ΠΈΠΌΠΎΡ„Π΅Π΅Π²Ρƒ (atimofeyev) Π·Π° ΠΏΠΎΠΌΠΎΡ‰ΡŒ Π² ΠΏΡ€ΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠΈ расслСдования, Π° Ρ‚Π°ΠΊΠΆΠ΅ АлСксСю ΠšΡ€Π΅Π½Ρ‘Π²Ρƒ (devicex) β€” Π·Π° титаничСский Ρ‚Ρ€ΡƒΠ΄ ΠΏΠΎ обновлСнию Centos ΠΈ ядСр Π½Π° сСрвСрах. ΠŸΡ€ΠΎΡ†Π΅ΡΡ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π² Π΄Π°Π½Π½ΠΎΠΌ случаС нСсколько Ρ€Π°Π· ΠΏΡ€ΠΈΡˆΠ»ΠΎΡΡŒ Π½Π°Ρ‡ΠΈΠ½Π°Ρ‚ΡŒ с Π½Π°Ρ‡Π°Π»Π°, ΠΈΠ·-Π·Π° Ρ‡Π΅Π³ΠΎ ΠΎΠ½ затянулся Π½Π° ΠΌΠ½ΠΎΠ³ΠΎ мСсяцСв.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: habr.com