ΠšΠΎΠ³Π°Ρ‚ΠΎ Linux conntrack Π²Π΅Ρ‡Π΅ Π½Π΅ Π²ΠΈ Π΅ приятСл

ΠšΠΎΠ³Π°Ρ‚ΠΎ Linux conntrack Π²Π΅Ρ‡Π΅ Π½Π΅ Π²ΠΈ Π΅ приятСл

ΠŸΡ€ΠΎΡΠ»Π΅Π΄ΡΠ²Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΡΡŠΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡΡ‚Π° (β€œconntrack”) Π΅ основна функция Π½Π° мрСТовия стСк Π½Π° ядрото Π½Π° Linux. Вя позволява Π½Π° ядрото Π΄Π° слСди всички логичСски ΠΌΡ€Π΅ΠΆΠΎΠ²ΠΈ съСдинСния ΠΈΠ»ΠΈ ΠΏΠΎΡ‚ΠΎΡ†ΠΈ ΠΈ ΠΏΠΎ Ρ‚ΠΎΠ·ΠΈ Π½Π°Ρ‡ΠΈΠ½ Π΄Π° ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€Π° всички ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ ΡΡŠΡΡ‚Π°Π²ΡΡ‚ всСки ΠΏΠΎΡ‚ΠΎΠΊ, Π·Π° Π΄Π° ΠΌΠΎΠ³Π°Ρ‚ Ρ‚Π΅ Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ послСдоватСлно ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π²Π°Π½ΠΈ Π·Π°Π΅Π΄Π½ΠΎ.

Conntrack Π΅ Π²Π°ΠΆΠ½Π° функция Π½Π° ядрото, която сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π² някои основни случаи:

  • NAT Ρ€Π°Π·Ρ‡ΠΈΡ‚Π° Π½Π° информация ΠΎΡ‚ conntrack, Ρ‚Π°ΠΊΠ° Ρ‡Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π²Π° Π΅Π΄ΠΈΠ½ΠΊΡ€Π°Ρ‚Π½ΠΎ всички ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ ΠΎΡ‚ Π΅Π΄ΠΈΠ½ ΠΏΠΎΡ‚ΠΎΠΊ. НапримСр, ΠΊΠΎΠ³Π°Ρ‚ΠΎ pod сС ΡΠ²ΡŠΡ€Π·Π²Π° със service Kubernetes, Π±Π°Π»Π°Π½ΡΠΈΡ€ΠΎΠ²Ρ‡ΠΈΠΊΡŠΡ‚ Π½Π° Π½Π°Ρ‚ΠΎΠ²Π°Ρ€Π²Π°Π½Π΅ kube-proxy ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° NAT, Π·Π° Π΄Π° насочи Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ° към ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π΅Π½ pod Π² кластСра. Conntrack записва, Ρ‡Π΅ Π·Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΎ съСдинСниС всички ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ към IP адрСс Π½Π° service трябва Π΄Π° сС ΠΈΠ·ΠΏΡ€Π°Ρ‰Π°Ρ‚ Π² Π΅Π΄ΠΈΠ½ ΠΈ ΡΡŠΡ‰ pod, Π° ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈΡ‚Π΅, Π²Ρ€ΡŠΡ‰Π°Π½ΠΈ ΠΎΡ‚ pod-a Π½Π° backend, трябва Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ насочвани ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ към pod-Π°, ΠΎΡ‚ ΠΊΠΎΠΉΡ‚ΠΎ Π΅ дошъл Π·Π°ΠΏΠΈΡ‚Π²Π°Π½Π΅Ρ‚ΠΎ.
  • Firewall-ΠΎΠ²Π΅ с прослСдяванС Π½Π° ΡΡŠΡΡ‚ΠΎΡΠ½ΠΈΠ΅Ρ‚ΠΎ, ΠΊΠ°Ρ‚ΠΎ Calico, Ρ€Π°Π·Ρ‡ΠΈΡ‚Π°Ρ‚ Π½Π° информация ΠΎΡ‚ conntrack, Π·Π° Π΄Π° добавят β€žΠΎΡ‚Π³ΠΎΠ²ΠΎΡ€Π΅Π½β€œ Ρ‚Ρ€Π°Ρ„ΠΈΠΊ Π² бСлия списък. Π’ΠΎΠ²Π° Π²ΠΈ позволява Π΄Π° Π½Π°ΠΏΠΈΡˆΠ΅Ρ‚Π΅ ΠΌΡ€Π΅ΠΆΠΎΠ²Π° ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ°, която ΠΊΠ°Π·Π²Π°: β€žΠŸΠΎΠ·Π²ΠΎΠ»Π΅Ρ‚Π΅ Π½Π° моят pod Π΄Π° сС ΡΠ²ΡŠΡ€Π·Π²Π° с всСки ΠΎΡ‚Π΄Π°Π»Π΅Ρ‡Π΅Π½ IP Π°Π΄Ρ€Π΅Ρβ€œ Π±Π΅Π· Π΄Π° Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π° ΠΏΠΈΡˆΠ΅Ρ‚Π΅ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ° Π·Π° явно Ρ€Π°Π·Ρ€Π΅ΡˆΠ°Π²Π°Π½Π΅ Π½Π° отговорния Ρ‚Ρ€Π°Ρ„ΠΈΠΊ. (Π‘Π΅Π· Ρ‚ΠΎΠ²Π°, Π²ΠΈΠ΅ Ρ‰Π΅ трябва Π΄Π° Π΄ΠΎΠ±Π°Π²ΠΈΡ‚Π΅ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»Π½ΠΎ ΠΏΠΎ-ΠΌΠ°Π»ΠΊΠΎ бСзопасно ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ β€žΠ΄Π° Ρ€Π°Π·Ρ€Π΅ΡˆΠ°Π²Π°Ρ‚Π΅ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ Π² моя pod ΠΎΡ‚ всСки IPβ€œ.)

ОсвСн Ρ‚ΠΎΠ²Π°, conntrack ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ повишава производитСлността Π½Π° систСмата (намалява консумацията Π½Π° процСсорно Π²Ρ€Π΅ΠΌΠ΅ ΠΈ Π²Ρ€Π΅ΠΌΠ΅Ρ‚ΠΎ Π·Π° забавянС Π½Π° ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈΡ‚Π΅), Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ само ΠΏΡŠΡ€Π²ΠΈΡΡ‚ ΠΏΠ°ΠΊΠ΅Ρ‚ Π² ΠΏΠΎΡ‚ΠΎΠΊΠ°
трябва Π΄Π° ΠΏΡ€Π΅ΠΌΠΈΠ½Π΅ ΠΏΡ€Π΅Π· ΠΏΡŠΠ»Π½Π°Ρ‚Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° мрСТовия стСк, Π·Π° Π΄Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈ ΠΊΠ°ΠΊΠ²ΠΎ Π΄Π° ΠΏΡ€Π°Π²ΠΈ с Π½Π΅Π³ΠΎ. Π’ΠΈΠΆΡ‚Π΅ поста β€žΠ‘Ρ€Π°Π²Π½Π΅Π½ΠΈΠ΅ Π½Π° Ρ€Π΅ΠΆΠΈΠΌΠΈΡ‚Π΅ kube-proxyβ€œ Π·Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚ΠΈ Ρ‚ΠΎΠ²Π°.

Π’ΡŠΠΏΡ€Π΅ΠΊΠΈ Ρ‚ΠΎΠ²Π°, conntrack ΠΈΠΌΠ° своитС ограничСния...

И Ρ‚Π°ΠΊΠ°, къдС всичко Ρ‚Ρ€ΡŠΠ³Π½Π° Π½Π΅ Ρ‚Π°ΠΊΠ°?

Π’Π°Π±Π»ΠΈΡ†Π°Ρ‚Π° conntrack ΠΈΠΌΠ° настраиваСм максималСн Ρ€Π°Π·ΠΌΠ΅Ρ€, ΠΈ Π°ΠΊΠΎ сС запълни, ΡΡŠΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡΡ‚Π° ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ Π·Π°ΠΏΠΎΡ‡Π²Π°Ρ‚ Π΄Π° сС ΠΎΡ‚ΠΊΠ°Π·Π²Π°Ρ‚ ΠΈΠ»ΠΈ ΠΏΡ€Π΅ΠΊΡŠΡΠ²Π°Ρ‚. Π—Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ° Π½Π° ΠΏΠΎΠ²Π΅Ρ‡Π΅Ρ‚ΠΎ прилоТСния Π² Ρ‚Π°Π±Π»ΠΈΡ†Π°Ρ‚Π° ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ ΠΈΠΌΠ° Π΄ΠΎΡΡ‚Π°Ρ‚ΡŠΡ‡Π½ΠΎ свободно пространство, ΠΈ Ρ‚ΠΎΠ²Π° Π½ΠΈΠΊΠΎΠ³Π° няма Π΄Π° сС ΠΏΡ€Π΅Π²ΡŠΡ€Π½Π΅ Π² ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ. Π’ΡŠΠΏΡ€Π΅ΠΊΠΈ Ρ‚ΠΎΠ²Π°, ΠΈΠΌΠ° няколко сцСнария, ΠΏΡ€ΠΈ ΠΊΠΎΠΈΡ‚ΠΎ си струва Π΄Π° обмислитС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° Ρ‚Π°Π±Π»ΠΈΡ†Π°Ρ‚Π° conntrack:

  • Най-очСвидният случай Π΅, Π°ΠΊΠΎ Π²Π°ΡˆΠΈΡΡ‚ ΡΡŠΡ€Π²ΡŠΡ€ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π²Π° ΠΈΠ·ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»Π½ΠΎ голямо количСство Π°ΠΊΡ‚ΠΈΠ²Π½ΠΈ Π²Ρ€ΡŠΠ·ΠΊΠΈ Π΅Π΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ. НапримСр, Π°ΠΊΠΎ Π²Π°ΡˆΠ°Ρ‚Π° Ρ‚Π°Π±Π»ΠΈΡ†Π° conntrack Π΅ настроСна Π½Π° 128k записа, Π½ΠΎ ΠΈΠΌΠ°Ρ‚Π΅ > 128k Π°ΠΊΡ‚ΠΈΠ²Π½ΠΈ Π²Ρ€ΡŠΠ·ΠΊΠΈ, със сигурност Ρ‰Π΅ срСщнСтС ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ!
  • Няколко ΠΏΠΎ-ΠΌΠ°Π»ΠΊΠΎ ΠΎΡ‡Π΅Π²ΠΈΠ΄Π΅Π½ случай: Π°ΠΊΠΎ Π²Π°ΡˆΠΈΡΡ‚ ΡΡŠΡ€Π²ΡŠΡ€ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π²Π° ΠΌΠ½ΠΎΠ³ΠΎ голямо количСство Π²Ρ€ΡŠΠ·ΠΊΠΈ Π² сСкунда. Π”ΠΎΡ€ΠΈ Π°ΠΊΠΎ Π²Ρ€ΡŠΠ·ΠΊΠΈΡ‚Π΅ са ΠΊΡ€Π°Ρ‚ΠΊΠΎΡ‚Ρ€Π°ΠΉΠ½ΠΈ, Linux всС ΠΎΡ‰Π΅ Π³ΠΈ слСди Π·Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ ΠΏΠ΅Ρ€ΠΈΠΎΠ΄ ΠΎΡ‚ Π²Ρ€Π΅ΠΌΠ΅ (ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅ 120 сСк). НапримСр, Π°ΠΊΠΎ Π²Π°ΡˆΠ°Ρ‚Π° Ρ‚Π°Π±Π»ΠΈΡ†Π° conntrack Π΅ настроСна Π½Π° 128 хиляди записа ΠΈ сС ΠΎΠΏΠΈΡ‚Π°Ρ‚Π΅ Π΄Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΈΡ‚Π΅ 1100 Π²Ρ€ΡŠΠ·ΠΊΠΈ Π² сСкунда, Ρ‚Π΅ Ρ‰Π΅ Π½Π°Π΄Ρ…Π²ΡŠΡ€Π»ΡΡ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° Π½Π° Ρ‚Π°Π±Π»ΠΈΡ†Π°Ρ‚Π° conntrack, Π΄ΠΎΡ€ΠΈ Π°ΠΊΠΎ Π²Ρ€ΡŠΠ·ΠΊΠΈΡ‚Π΅ са ΠΌΠ½ΠΎΠ³ΠΎ ΠΊΡ€Π°Ρ‚ΠΊΠΎΡ‚Ρ€Π°ΠΉΠ½ΠΈ (128k / 120 сСк = 1092 Π²Ρ€ΡŠΠ·ΠΊΠΈ / сСк).

Има няколко нишови Ρ‚ΠΈΠΏΠ° прилоТСния, ΠΊΠΎΠΈΡ‚ΠΎ ΠΏΠΎΠΏΠ°Π΄Π°Ρ‚ Π² Ρ‚Π΅Π·ΠΈ ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ. ОсвСн Ρ‚ΠΎΠ²Π°, Π°ΠΊΠΎ ΠΈΠΌΠ°Ρ‚Π΅ ΠΌΠ½ΠΎΠ³ΠΎ Π·Π»ΠΎΠ½Π°ΠΌΠ΅Ρ€Π΅Π½ΠΈ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΠΈ, Π·Π°ΠΏΡŠΠ»Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° Ρ‚Π°Π±Π»ΠΈΡ†Π°Ρ‚Π° conntrack Π½Π° вашия ΡΡŠΡ€Π²ΡŠΡ€ с мноТСство ΠΏΠΎΠ»ΡƒΠ·Π°Ρ‚Π²ΠΎΡ€Π΅Π½ΠΈ Π²Ρ€ΡŠΠ·ΠΊΠΈ ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π·Π° Π°Ρ‚Π°ΠΊΠ° Ρ‚ΠΈΠΏ "ΠΎΡ‚ΠΊΠ°Π· Π½Π° услуга" (DOS). Π’ Π΄Π²Π°Ρ‚Π° случая conntrack ΠΌΠΎΠΆΠ΅ Π΄Π° станС ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΡ‚Π΅Π»Π½ΠΎ тясно място Π² систСмата Π²ΠΈ. Π’ някои случаи настройкитС Π½Π° ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈΡ‚Π΅ Π½Π° Ρ‚Π°Π±Π»ΠΈΡ†Π°Ρ‚Π° conntrack ΠΌΠΎΠΆΠ΅ Π΄Π° са Π΄ΠΎΡΡ‚Π°Ρ‚ΡŠΡ‡Π½ΠΈ, Π·Π° Π΄Π° задоволят Π½ΡƒΠΆΠ΄ΠΈΡ‚Π΅ Π²ΠΈ β€” Ρ‡Ρ€Π΅Π· ΡƒΠ²Π΅Π»ΠΈΡ‡Π°Π²Π°Π½Π΅ Π½Π° Ρ€Π°Π·ΠΌΠ΅Ρ€Π° ΠΈΠ»ΠΈ намаляванС Π½Π° Π²Ρ€Π΅ΠΌΠ΅Ρ‚ΠΎ Π·Π° ΠΈΠ·Ρ‡Π°ΠΊΠ²Π°Π½Π΅ Π½Π° conntrack (Π½ΠΎ Π°ΠΊΠΎ Π½Π°ΠΏΡ€Π°Π²ΠΈΡ‚Π΅ Ρ‚ΠΎΠ²Π° Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»Π½ΠΎ, Ρ‰Π΅ срСщнСтС сСриозни ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ). Π—Π° Π΄Ρ€ΡƒΠ³ΠΈ случаи Ρ‰Π΅ Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π° Π·Π°ΠΎΠ±ΠΈΠΊΠΎΠ»ΠΈΡ‚Π΅ conntrack Π·Π° агрСсивСн Ρ‚Ρ€Π°Ρ„ΠΈΠΊ.

Π Π΅Π°Π»Π΅Π½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€

НСка Π΄Π°ΠΌ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π΅Π½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€: Π΅Π΄ΠΈΠ½ голям SaaS доставчик, с ΠΊΠΎΠΉΡ‚ΠΎ Ρ€Π°Π±ΠΎΡ‚ΠΈΡ…ΠΌΠ΅, имашС Ρ€Π΅Π΄ΠΈΡ†Π° memcached ΡΡŠΡ€Π²ΡŠΡ€ΠΈ Π½Π° хостовС (Π½Π΅ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»Π½ΠΈ машини), всСки ΠΎΡ‚ ΠΊΠΎΠΈΡ‚ΠΎ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π²Π°ΡˆΠ΅ 50К+ ΠΊΡ€Π°Ρ‚ΠΊΠΎΡ‚Ρ€Π°ΠΉΠ½ΠΈ Π²Ρ€ΡŠΠ·ΠΊΠΈ Π² сСкунда.

Π’Π΅ СкспСримСнтираха с конфигурацията Π½Π° conntrack, ΡƒΠ²Π΅Π»ΠΈΡ‡Π°Π²Π°Ρ…Π° Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΈΡ‚Π΅ Π½Π° Ρ‚Π°Π±Π»ΠΈΡ†ΠΈΡ‚Π΅ ΠΈ намаляваха Π²Ρ€Π΅ΠΌΠ΅Ρ‚ΠΎ Π·Π° прослСдяванС, Π½ΠΎ конфигурацията бСшС Π½Π΅Π½Π°Π΄Π΅ΠΆΠ΄Π½Π°, ΠΏΠΎΡ‚Ρ€Π΅Π±Π»Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° RAM Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»Π½ΠΎ нарасна, ΠΊΠΎΠ΅Ρ‚ΠΎ бСшС ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ (Π² ΠΏΠΎΡ€ΡΠ΄ΡŠΠΊΠ° Π½Π° Π“Π‘!), Π° Π²Ρ€ΡŠΠ·ΠΊΠΈΡ‚Π΅ бяха Ρ‚ΠΎΠ»ΠΊΠΎΠ²Π° ΠΊΡ€Π°Ρ‚ΠΊΠΈ, Ρ‡Π΅ conntrack Π½Π΅ ΠΎΡΠΈΠ³ΡƒΡ€ΡΠ²Π°ΡˆΠ΅ ΠΎΠ±ΠΈΡ‡Π°ΠΉΠ½ΠΎΡ‚ΠΎ си прСдимство Π² производитСлността (Π½Π°ΠΌΠ°Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΏΠΎΡ‚Ρ€Π΅Π±Π»Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° CPU ΠΈΠ»ΠΈ закъснСния Π½Π° ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈΡ‚Π΅).

ΠšΠ°Ρ‚ΠΎ Π°Π»Ρ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π° Ρ‚Π΅ сС ΠΎΠ±ΡŠΡ€Π½Π°Ρ…Π° към Calico. ΠœΡ€Π΅ΠΆΠΎΠ²ΠΈΡ‚Π΅ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ Π½Π° Calico позволяват Π΄Π° Π½Π΅ сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° conntrack Π·Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ Π²ΠΈΠ΄ Ρ‚Ρ€Π°Ρ„ΠΈΠΊ (Ρ‡Ρ€Π΅Π· опцията doNotTrack Π² ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈΡ‚Π΅). Π’ΠΎΠ²Π° ΠΈΠΌ осигури Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡ‚ΠΎ Π½ΠΈΠ²ΠΎ Π½Π° производитСлност плюс Π΄ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π΅Π½ слой сигурност, прСдоставСн ΠΎΡ‚ Calico.

На ΠΊΠ°ΠΊΠ²ΠΎ Ρ‰Π΅ сС Π½Π°Π»ΠΎΠΆΠΈ Π΄Π° сС ΠΏΡ€ΠΈΠ±Π΅Π³Π½Π΅, Π·Π° Π΄Π° сС Π·Π°ΠΎΠ±ΠΈΠΊΠΎΠ»ΠΈ conntrack?

  • ΠŸΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈΡ‚Π΅ do-not-track ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ трябва Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ симСтрични. Π’ случая Π½Π° SaaS доставчик: Ρ‚Π΅Ρ…Π½ΠΈΡ‚Π΅ прилоТСния Ρ€Π°Π±ΠΎΡ‚Π΅Ρ…Π° Π² Π·Π°Ρ‰ΠΈΡ‚Π΅Π½Π° Π·ΠΎΠ½Π° ΠΈ Π·Π°Ρ‚ΠΎΠ²Π° с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° ΠΌΡ€Π΅ΠΆΠΎΠ²Π°Ρ‚Π° ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ° Ρ‚Π΅ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° добавят Π² бял списък Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ° ΠΎΡ‚ Π΄Ρ€ΡƒΠ³ΠΈ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΈ прилоТСния, Π½Π° ΠΊΠΎΠΈΡ‚ΠΎ ΠΈΠΌ Π΅ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ Π΄ΠΎΡΡ‚ΡŠΠΏ Π΄ΠΎ memcached.
  • ΠŸΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ°Ρ‚Π° do-not-track Π½Π΅ ΠΎΡ‚Ρ‡ΠΈΡ‚Π° посоката Π½Π° ΡΠ²ΡŠΡ€Π·Π²Π°Π½Π΅. Π’Π°ΠΊΠ° Ρ‡Π΅, Π² случай Π½Π° хакСрство Π½Π° memcached ΡΡŠΡ€Π²ΡŠΡ€, Ρ‚Π΅ΠΎΡ€Π΅Ρ‚ΠΈΡ‡Π½ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΠΎΠΏΠΈΡ‚Π° ΡΠ²ΡŠΡ€Π·Π²Π°Π½Π΅ към всСки ΠΎΡ‚ memcached ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΈΡ‚Π΅, Π°ΠΊΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° правилния изходящ ΠΏΠΎΡ€Ρ‚. Π’ΡŠΠΏΡ€Π΅ΠΊΠΈ Ρ‚ΠΎΠ²Π°, Π°ΠΊΠΎ ΠΏΡ€Π°Π²ΠΈΠ»Π½ΠΎ стС ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠ»ΠΈ ΠΌΡ€Π΅ΠΆΠΎΠ²Π°Ρ‚Π° ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ° Π·Π° Π²Π°ΡˆΠΈΡ‚Π΅ memcached ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΈ, ΠΎΠΏΠΈΡ‚ΠΈΡ‚Π΅ Π·Π° ΡΠ²ΡŠΡ€Π·Π²Π°Π½Π΅ всС ΠΎΡ‰Π΅ Ρ‰Π΅ Π±ΡŠΠ΄Π°Ρ‚ ΠΎΡ‚Ρ…Π²ΡŠΡ€Π»Π΅Π½ΠΈ ΠΎΡ‚ страна Π½Π° ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°.
  • ΠŸΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ°Ρ‚Π° do-not-track сС ΠΏΡ€ΠΈΠ»Π°Π³Π° Π·Π° всСки ΠΏΠ°ΠΊΠ΅Ρ‚, Π·Π° Ρ€Π°Π·Π»ΠΈΠΊΠ° ΠΎΡ‚ ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΡ‚Π΅ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ сС ΠΏΡ€ΠΈΠ»Π°Π³Π°Ρ‚ само Π·Π° ΠΏΡŠΡ€Π²ΠΈΡ ΠΏΠ°ΠΊΠ΅Ρ‚ ΠΎΡ‚ ΠΏΠΎΡ‚ΠΎΠΊΠ°. Π’ΠΎΠ²Π° ΠΌΠΎΠΆΠ΅ Π΄Π° ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈ Ρ€Π°Π·Ρ…ΠΎΠ΄Π° Π½Π° CPU рСсурси Π½Π° ΠΏΠ°ΠΊΠ΅Ρ‚, Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ Π·Π° всСки ΠΏΠ°ΠΊΠ΅Ρ‚ сС Π½Π°Π»Π°Π³Π° Π΄Π° сС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠΈ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ°. Но Π·Π° ΠΊΡ€Π°Ρ‚ΠΊΠΎΡ‚Ρ€Π°ΠΉΠ½ΠΈ ΡΠ²ΡŠΡ€Π·Π²Π°Π½ΠΈΡ Ρ‚ΠΎΠ·ΠΈ Ρ€Π°Π·Ρ…ΠΎΠ΄ сС компСнсира ΠΎΡ‚ намаляванСто Π½Π° Ρ€Π°Π·Ρ…ΠΎΠ΄Π° Π½Π° рСсурси Π·Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° conntrack. НапримСр, Π² случая Π½Π° SaaS доставчик, броят Π½Π° ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈΡ‚Π΅ Π·Π° всяко ΡΠ²ΡŠΡ€Π·Π²Π°Π½Π΅ бСшС ΠΌΠ½ΠΎΠ³ΠΎ малък, Ρ‚Π°ΠΊΠ° Ρ‡Π΅ Π΄ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π½ΠΈΡΡ‚ Ρ€Π°Π·Ρ…ΠΎΠ΄ Π½Π° CPU рСсурси ΠΏΡ€ΠΈ ΠΏΡ€ΠΈΠ»Π°Π³Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈΡ‚Π΅ Π·Π° всСки ΠΏΠ°ΠΊΠ΅Ρ‚ бСшС ΠΎΠΏΡ€Π°Π²Π΄Π°Π½.

Π”Π° ΠΏΡ€Π΅ΠΌΠΈΠ½Π΅ΠΌ към тСстовСтС

ΠŸΡ€ΠΎΠ²Π΅Π΄ΠΎΡ…ΠΌΠ΅ тСст Π½Π° Π΅Π΄ΠΈΠ½ pod с memcached ΡΡŠΡ€Π²ΡŠΡ€ ΠΈ мноТСство pod-ΠΎΠ²Π΅ memcached ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΈ, стартирани Π½Π° ΠΎΡ‚Π΄Π°Π»Π΅Ρ‡Π΅Π½ΠΈ възли, Ρ‚Π°ΠΊΠ° Ρ‡Π΅ Π΄Π° ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΈΠ·Π²ΡŠΡ€ΡˆΠ²Π°ΠΌΠ΅ ΠΌΠ½ΠΎΠ³ΠΎ голямо количСство ΡΠ²ΡŠΡ€Π·Π²Π°Π½ΠΈΡ Π² сСкунда. Π‘ΡŠΡ€Π²ΡŠΡ€ΡŠΡ‚ с pod-a Π½Π° memcached ΡΡŠΡ€Π²ΡŠΡ€Π° имашС 8 ядра ΠΈ 512k записа Π² conntrack Ρ‚Π°Π±Π»ΠΈΡ†Π°Ρ‚Π° (стандартно настроСн Ρ€Π°Π·ΠΌΠ΅Ρ€ Π½Π° Ρ‚Π°Π±Π»ΠΈΡ†Π°Ρ‚Π° Π·Π° хоста).
Π˜Π·ΠΌΠ΅Ρ€Π²Π°Ρ…ΠΌΠ΅ Ρ€Π°Π·Π»ΠΈΠΊΠ°Ρ‚Π° Π² производитСлността ΠΌΠ΅ΠΆΠ΄Ρƒ: Π±Π΅Π· ΠΌΡ€Π΅ΠΆΠΎΠ²Π° ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ°; с ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½Π° Calico ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ°; ΠΈ Calico do-not-track ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ°.

Π—Π° ΠΏΡŠΡ€Π²ΠΈΡ тСст Π·Π°Π΄Π°Π΄ΠΎΡ…ΠΌΠ΅ Π±Ρ€ΠΎΠΉ Π½Π° ΡΠ²ΡŠΡ€Π·Π²Π°Π½ΠΈΡΡ‚Π° Π΄ΠΎ 4000 Π² сСкунда, Ρ‚Π°ΠΊΠ° Ρ‡Π΅ ΠΌΠΎΠΆΠ΅Ρ…ΠΌΠ΅ Π΄Π° сС фокусирамС Π²ΡŠΡ€Ρ…Ρƒ Ρ€Π°Π·Π»ΠΈΠΊΠ°Ρ‚Π° Π² ΠΏΠΎΡ‚Ρ€Π΅Π±Π»Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° CPU. НС Π½Π°ΠΌΠ΅Ρ€ΠΈΡ…ΠΌΠ΅ ΡΡŠΡ‰Π΅ΡΡ‚Π²Π΅Π½ΠΈ различия ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΎΡ‚ΡΡŠΡΡ‚Π²ΠΈΠ΅Ρ‚ΠΎ Π½Π° ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ° ΠΈ стандартната ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ°, Π½ΠΎ do-not-track ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈ ΠΏΠΎΡ‚Ρ€Π΅Π±Π»Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° CPU с ΠΎΠΊΠΎΠ»ΠΎ 20%.

ΠšΠΎΠ³Π°Ρ‚ΠΎ Linux conntrack Π²Π΅Ρ‡Π΅ Π½Π΅ Π²ΠΈ Π΅ приятСл

Π’ΡŠΠ² втория тСст стартирахмС Ρ‚ΠΎΠ»ΠΊΠΎΠ²Π° ΡΠ²ΡŠΡ€Π·Π²Π°Π½ΠΈΡ, ΠΊΠΎΠ»ΠΊΠΎΡ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ…Π° Π΄Π° Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π°Ρ‚ Π½Π°ΡˆΠΈΡ‚Π΅ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΈ, ΠΈ ΠΈΠ·ΠΌΠ΅Ρ€ΠΈΡ…ΠΌΠ΅ максималното количСство ΡΠ²ΡŠΡ€Π·Π²Π°Π½ΠΈΡ Π² сСкунда, ΠΊΠΎΠ΅Ρ‚ΠΎ Π½Π°ΡˆΠΈΡΡ‚ memcached-сСрвСр моТСшС Π΄Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΈ. ΠšΠ°ΠΊΡ‚ΠΎ ΠΎΡ‡Π°ΠΊΠ²Π°Ρ…ΠΌΠ΅, Π² случая Π½Π° "Π±Π΅Π· ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ" ΠΈ "стандартна ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ°" ΠΈ Π΄Π²Π°Ρ‚Π° достигнаха Π»ΠΈΠΌΠΈΡ‚Π° Π½Π° conntrack ΠΎΡ‚ Π½Π°Π΄ 4000 ΡΠ²ΡŠΡ€Π·Π²Π°Π½ΠΈΡ Π² сСкунда (512k / 120s = 4369 ΡΠ²ΡŠΡ€Π·Π²Π°Π½ΠΈΡ/с). Π‘ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ°Ρ‚Π° do-not-track Π½Π°ΡˆΠΈΡ‚Π΅ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΈ ΠΈΠ·ΠΏΡ€Π°Ρ‰Π°Ρ…Π° 60000 ΡΠ²ΡŠΡ€Π·Π²Π°Π½ΠΈΡ Π² сСкунда Π±Π΅Π· Π½ΠΈΠΊΠ°ΠΊΠ²ΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ. Π£Π±Π΅Π΄Π΅Π½ΠΈ смС, Ρ‡Π΅ ΠΌΠΎΠΆΠ΅Ρ…ΠΌΠ΅ Π΄Π° ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠΌ Ρ‚ΠΎΠ²Π° число, ΡΠ²ΡŠΡ€Π·Π²Π°ΠΉΠΊΠΈ ΠΏΠΎΠ²Π΅Ρ‡Π΅ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΈ, Π½ΠΎ смятамС, Ρ‡Π΅ Ρ‚Π΅Π·ΠΈ Ρ†ΠΈΡ„Ρ€ΠΈ са Π΄ΠΎΡΡ‚Π°Ρ‚ΡŠΡ‡Π½ΠΈ, Π·Π° Π΄Π° ΠΈΠ»ΡŽΡΡ‚Ρ€ΠΈΡ€Π°Ρ‚ посланиСто Π½Π° Ρ‚Π°Π·ΠΈ статия!

ΠšΠΎΠ³Π°Ρ‚ΠΎ Linux conntrack Π²Π΅Ρ‡Π΅ Π½Π΅ Π²ΠΈ Π΅ приятСл

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

Conntrack Π΅ Π²Π°ΠΆΠ½Π° функция Π½Π° ядрото. Π’ΠΎΠΉ изпълнява ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎ Π·Π°Π΄Π°Ρ‡Π°Ρ‚Π° си. ЧСсто сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΎΡ‚ ΠΊΠ»ΡŽΡ‡ΠΎΠ²ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΈ Π½Π° систСмата. Π’ΡŠΠΏΡ€Π΅ΠΊΠΈ Ρ‚ΠΎΠ²Π°, Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈ сцСнарии, Π½Π°Ρ‚ΠΎΠ²Π°Ρ€Π²Π°Π½Π΅Ρ‚ΠΎ ΠΎΡ‚ conntrack надвишава ΠΎΠ±ΠΈΡ‡Π°ΠΉΠ½ΠΈΡ‚Π΅ прСдимства, ΠΊΠΎΠΈΡ‚ΠΎ прСдоставя. Π’ Ρ‚ΠΎΠ·ΠΈ контСкст ΠΌΡ€Π΅ΠΆΠΎΠ²ΠΈΡ‚Π΅ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ Π½Π° Calico ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΈ, Π·Π° Π΄Π° сС ΠΈΠ·ΠΊΠ»ΡŽΡ‡ΠΈ selectively ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° conntrack, ΠΊΠ°Ρ‚ΠΎ ΡΡŠΡ‰Π΅Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ сС повиши Π½ΠΈΠ²ΠΎΡ‚ΠΎ Π½Π° ΠΌΡ€Π΅ΠΆΠΎΠ²Π°Ρ‚Π° сигурност. Π—Π° цСлия Π΄Ρ€ΡƒΠ³ Ρ‚Ρ€Π°Ρ„ΠΈΠΊ conntrack ΠΏΡ€ΠΎΠ΄ΡŠΠ»ΠΆΠ°Π²Π° Π΄Π° бъдС ваш приятСл!

Π‘ΡŠΡ‰ΠΎ Ρ‚Π°ΠΊΠ° ΠΏΡ€ΠΎΡ‡Π΅Ρ‚Π΅Ρ‚Π΅ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈ статии Π² нашия Π±Π»ΠΎΠ³:

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

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