Π Π°Π·Π±ΠΈΡ€Π°Π½Π΅ Π½Π° Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΈΡ‚Π΅ Π·Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° ΠΌΡ€Π΅ΠΆΠΎΠ²ΠΈ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ с Calico

Π Π°Π·Π±ΠΈΡ€Π°Π½Π΅ Π½Π° Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΈΡ‚Π΅ Π·Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° ΠΌΡ€Π΅ΠΆΠΎΠ²ΠΈ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ с Calico

ΠœΡ€Π΅ΠΆΠΎΠ²ΠΈΡΡ‚ плъгин Calico ΠΏΡ€Π΅Π΄Π»Π°Π³Π° ΡˆΠΈΡ€ΠΎΠΊ Π½Π°Π±ΠΎΡ€ ΠΎΡ‚ ΠΌΡ€Π΅ΠΆΠΎΠ²ΠΈ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ с ΡƒΠ½ΠΈΡ„ΠΈΡ†ΠΈΡ€Π°Π½Π° синтаксис Π·Π° Π·Π°Ρ‰ΠΈΡ‚Π° Π½Π° хостовС Π½Π° Ρ…Π°Ρ€Π΄ΡƒΠ΅Ρ€, Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»Π½ΠΈ машини ΠΈ pod’овС. Π’Π΅Π·ΠΈ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈ Π² Ρ€Π°ΠΌΠΊΠΈΡ‚Π΅ Π½Π° namespace ΠΈΠ»ΠΈ Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ Π³Π»ΠΎΠ±Π°Π»Π½ΠΈ ΠΌΡ€Π΅ΠΆΠΎΠ²ΠΈ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ, ΠΏΡ€ΠΈΠ»ΠΎΠΆΠΈΠΌΠΈ към host endpoint (Π·Π° Π·Π°Ρ‰ΠΈΡ‚Π° Π½Π° прилоТСния, Ρ€Π°Π±ΠΎΡ‚Π΅Ρ‰ΠΈ Π΄ΠΈΡ€Π΅ΠΊΡ‚Π½ΠΎ Π½Π° хоста β€” Ρ…ΠΎΡΡ‚ΡŠΡ‚ ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС Π΄ΠΈΡ€Π΅ΠΊΡ‚Π½ΠΎ ΡΡŠΡ€Π²ΡŠΡ€ ΠΈΠ»ΠΈ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»Π½Π° машина) ΠΈΠ»ΠΈ към workload endpoint (Π·Π° Π·Π°Ρ‰ΠΈΡ‚Π° Π½Π° прилоТСния, Ρ€Π°Π±ΠΎΡ‚Π΅Ρ‰ΠΈ Π² ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈ ΠΈΠ»ΠΈ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»Π½ΠΈ машини, Ρ€Π°Π·ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈ Π½Π° хоста). ΠŸΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈΡ‚Π΅ Calico позволяват ΠΏΡ€ΠΈΠ»Π°Π³Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΠΌΠ΅Ρ€ΠΊΠΈ Π·Π° сигурност Π·Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ Ρ‚ΠΎΡ‡ΠΊΠΈ Π½Π° мрСТовия Ρ‚Ρ€Π°Ρ„ΠΈΠΊ Ρ‡Ρ€Π΅Π· ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈ ΠΊΠ°Ρ‚ΠΎ preDNAT, unraracked ΠΈ applyOnForward. Π Π°Π·Π±ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ Π½Π° Π½Π°Ρ‡ΠΈΠ½Π°, ΠΏΠΎ ΠΊΠΎΠΉΡ‚ΠΎ Ρ‚Π΅Π·ΠΈ ΠΎΠΏΡ†ΠΈΠΈ работят, ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΏΠΎΠΌΠΎΠ³Π½Π΅ Π·Π° повишаванС Π½Π° сигурността ΠΈ производитСлността Π½Π° систСмата ΠΊΠ°Ρ‚ΠΎ цяло. Π’ Ρ‚Π°Π·ΠΈ статия сС обясняват основитС Π½Π° Ρ‚Π΅Π·ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈ Π½Π° ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈΡ‚Π΅ Calico (preDNAT, unraracked ΠΈ applyOnForward), ΠΏΡ€ΠΈΠ»ΠΎΠΆΠΈΠΌΠΈ към host endpoints, с Π°ΠΊΡ†Π΅Π½Ρ‚ Π²ΡŠΡ€Ρ…Ρƒ Ρ‚ΠΎΠ²Π°, ΠΊΠ°ΠΊΠ²ΠΎ сС случва Π² ΠΏΡŠΡ‚ΠΈΡ‰Π°Ρ‚Π° Π·Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ (Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠΈ iptables).

Π’Π°Π·ΠΈ статия ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°, Ρ‡Π΅ ΠΈΠΌΠ°Ρ‚Π΅ Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅ Π·Π° основнитС ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΈ Π½Π° Ρ€Π°Π±ΠΎΡ‚Π° Π½Π° ΠΌΡ€Π΅ΠΆΠΎΠ²ΠΈΡ‚Π΅ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ Π² Kubernetes ΠΈ Calico. Ако Π½Π΅, ΠΏΡ€Π΅ΠΏΠΎΡ€ΡŠΡ‡Π²Π°ΠΌΠ΅ Π΄Π° ΠΎΠΏΠΈΡ‚Π°Ρ‚Π΅ basic network policy tutorial ΠΈ host protection tutorial с Calico ΠΏΡ€Π΅Π΄ΠΈ Π΄Π° ΠΏΡ€ΠΎΡ‡Π΅Ρ‚Π΅Ρ‚Π΅ Ρ‚Π°Π·ΠΈ статия. Π‘ΡŠΡ‰ΠΎ Ρ‚Π°ΠΊΠ° Ρ€Π°Π·Ρ‡ΠΈΡ‚Π°ΠΌΠ΅, Ρ‡Π΅ ΠΈΠΌΠ°Ρ‚Π΅ основно Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅ Π·Π° Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚Π° Π½Π° iptables Π² Linux.

Calico global network policy Π²ΠΈ позволява Π΄Π° ΠΏΡ€ΠΈΠ»Π°Π³Π°Ρ‚Π΅ Π½Π°Π±ΠΎΡ€ ΠΎΡ‚ ΠΏΡ€Π°Π²ΠΈΠ»Π° Π·Π° Π΄ΠΎΡΡ‚ΡŠΠΏ ΠΏΠΎ Π΅Ρ‚ΠΈΠΊΠ΅Ρ‚ΠΈ (към Π³Ρ€ΡƒΠΏΠΈ хостовС ΠΈ workloads/pods). Π’ΠΎΠ²Π° Π΅ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ, Π°ΠΊΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ систСми β€” Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»Π½ΠΈ машини, систСма Π½Π° Ρ…Π°Ρ€Π΄ΡƒΠ΅Ρ€ ΠΈΠ»ΠΈ инфраструктура Kubernetes. ОсвСн Ρ‚ΠΎΠ²Π°, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π·Π°Ρ‰ΠΈΡ‚ΠΈΡ‚Π΅ вашия ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€ (Π½ΠΎΠ΄ΠΎΠ²Π΅) с Π½Π°Π±ΠΎΡ€ ΠΎΡ‚ Π΄Π΅ΠΊΠ»Π°Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΈ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ ΠΈ Π΄Π° ΠΏΡ€ΠΈΠ»Π°Π³Π°Ρ‚Π΅ ΠΌΡ€Π΅ΠΆΠΎΠ²ΠΈ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ към входящия Ρ‚Ρ€Π°Ρ„ΠΈΠΊ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΡ€Π΅Π· NodePorts ΠΈΠ»ΠΈ външни IP адрСси).

На Ρ„ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚Π°Π»Π½ΠΎ Π½ΠΈΠ²ΠΎ, ΠΊΠΎΠ³Π°Ρ‚ΠΎ Calico ΡΠ²ΡŠΡ€Π·Π²Π° pod с ΠΌΡ€Π΅ΠΆΠ°Ρ‚Π° (Π²ΠΆ. Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠ°Ρ‚Π° ΠΏΠΎ-Π΄ΠΎΠ»Ρƒ), Ρ‚ΠΎΠΉ Π³ΠΎ ΡΠ²ΡŠΡ€Π·Π²Π° с хоста Ρ‡Ρ€Π΅Π· Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»Π΅Π½ Ethernet интСрфСйс (veth). Π’Ρ€Π°Ρ„ΠΈΠΊΡŠΡ‚, ΠΈΠ·ΠΏΡ€Π°Ρ‚Π΅Π½ ΠΎΡ‚ pod-Π°, достига Π΄ΠΎ хоста ΠΏΡ€Π΅Π· Ρ‚ΠΎΠ·ΠΈ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»Π΅Π½ интСрфСйс ΠΈ сС ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π²Π° Ρ‚Π°ΠΊΠ°, сякаш ΠΈΠ΄Π²Π° ΠΎΡ‚ физичСски ΠΌΡ€Π΅ΠΆΠΎΠ² интСрфСйс. По ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅ Calico Π½Π°Ρ€ΠΈΡ‡Π° Ρ‚Π΅Π·ΠΈ интСрфСйси caliXXX. Въй ΠΊΠ°Ρ‚ΠΎ Ρ‚Ρ€Π°Ρ„ΠΈΠΊΡŠΡ‚ ΠΏΡ€Π΅ΠΌΠΈΠ½Π°Π²Π° ΠΏΡ€Π΅Π· виртуалния интСрфСйс, Ρ‚ΠΎΠΉ ΠΏΡ€Π΅ΠΌΠΈΠ½Π°Π²Π° ΠΏΡ€Π΅Π· iptables, всС Π΅Π΄Π½ΠΎ Ρ‡Π΅ pod-ΡŠΡ‚ Π΅ Π½Π° разстояниС ΠΎΡ‚ Π΅Π΄ΠΈΠ½ hop. Π—Π°Ρ‚ΠΎΠ²Π°, ΠΊΠΎΠ³Π°Ρ‚ΠΎ Ρ‚Ρ€Π°Ρ„ΠΈΠΊΡŠΡ‚ достига/ΠΈΠ·Π»ΠΈΠ·Π° ΠΎΡ‚ pod-Π°, Ρ‚ΠΎΠΉ сС прСнасочва (forwarded) ΠΎΡ‚ Π³Π»Π΅Π΄Π½Π° Ρ‚ΠΎΡ‡ΠΊΠ° Π½Π° хоста.

На Kubernetes възСл, Π½Π° ΠΊΠΎΠΉΡ‚ΠΎ Π΅ стартиран Calico, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΡΠ²ΡŠΡ€ΠΆΠ΅Ρ‚Π΅ виртуалния интСрфСйс (veth) с workload ΠΏΠΎ слСдния Π½Π°Ρ‡ΠΈΠ½. Π’ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° ΠΏΠΎ-Π΄ΠΎΠ»Ρƒ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π²ΠΈΠ΄ΠΈΡ‚Π΅, Ρ‡Π΅ veth#10 (calic1cbf1ca0f8) Π΅ ΡΠ²ΡŠΡ€Π·Π°Π½ с cnx-manager-* Π² calico-monitoring namespace.

[centos@ip-172-31-31-46 K8S]$ sudo ip a
...
10: calic1cbf1ca0f8@if4:  mtu 1440 qdisc noqueue state UP group default
    link/ether ee:ee:ee:ee:ee:ee brd ff:ff:ff:ff:ff:ff link-netnsid 5
    inet6 fe80::ecee:eeff:feee:eeee/64 scope link
       valid_lft forever preferred_lft forever
...

[centos@ip-172-31-31-46 K8S]$ calicoctl get wep --all-namespaces
...
calico-monitoring cnx-manager-8f778bd66-lz45m                            ip-172-31-31-46.ec2.internal 192.168.103.134/32
calic1cbf1ca0f8
...

Π Π°Π·Π±ΠΈΡ€Π°Π½Π΅ Π½Π° Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΈΡ‚Π΅ Π·Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° ΠΌΡ€Π΅ΠΆΠΎΠ²ΠΈ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ с Calico

ΠšΠ°Ρ‚ΠΎ сС ΠΈΠΌΠ° ΠΏΡ€Π΅Π΄Π²ΠΈΠ΄, Ρ‡Π΅ Calico създава veth интСрфСйс Π·Π° всяко workload, ΠΊΠ°ΠΊ ΠΏΡ€ΠΈΠ»Π°Π³Π° ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈΡ‚Π΅? Π—Π° Ρ‚ΠΎΠ²Π° Calico създава Ρ…ΡƒΠΊΠΎΠ²Π΅ Π² Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ Π²Π΅Ρ€ΠΈΠ³ΠΈ Π·Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ iptables.

На Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠ°Ρ‚Π° ΠΏΠΎ-Π΄ΠΎΠ»Ρƒ са ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΈ Π²Π΅Ρ€ΠΈΠ³ΠΈΡ‚Π΅, участващи Π² ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°Ρ‚Π° Π½Π° ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ Π² iptables (ΠΈΠ»ΠΈ подсистСмата netfilter). ΠšΠΎΠ³Π°Ρ‚ΠΎ ΠΏΠ°ΠΊΠ΅Ρ‚ΡŠΡ‚ ΠΏΡ€Π΅ΠΌΠΈΠ½Π°Π²Π° ΠΏΡ€Π΅Π· мрСТовия интСрфСйс, Ρ‚ΠΎΠΉ ΠΏΡŠΡ€Π²ΠΎ ΠΏΡ€Π΅ΠΌΠΈΠ½Π°Π²Π° ΠΏΡ€Π΅Π· Π²Π΅Ρ€ΠΈΠ³Π°Ρ‚Π° PREROUTING. Π‘Π»Π΅Π΄ Ρ‚ΠΎΠ²Π° сС Π²Π·Π΅ΠΌΠ° Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ Π·Π° ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·Π°Ρ†ΠΈΡ ΠΈ Π½Π° Π±Π°Π·Π°Ρ‚Π° Π½Π° Ρ‚ΠΎΠ²Π° ΠΏΠ°ΠΊΠ΅Ρ‚ΡŠΡ‚ ΠΏΡ€Π΅ΠΌΠΈΠ½Π°Π²Π° ΠΏΡ€Π΅Π· INPUT (насочСн към процСситС Π½Π° хоста) ΠΈΠ»ΠΈ ΠΏΡ€Π΅Π· FORWARD (насочСн към pod ΠΈΠ»ΠΈ Π½Π° Π΄Ρ€ΡƒΠ³ възСл Π² ΠΌΡ€Π΅ΠΆΠ°Ρ‚Π°). ΠžΡ‚ локалния процСс ΠΏΠ°ΠΊΠ΅Ρ‚ΡŠΡ‚ ΠΏΡ€Π΅ΠΌΠΈΠ½Π°Π²Π° ΠΏΡ€Π΅Π· Π²Π΅Ρ€ΠΈΠ³Π°Ρ‚Π° OUTPUT ΠΈ слСд Ρ‚ΠΎΠ²Π° POSTROUTING ΠΏΡ€Π΅Π΄ΠΈ Π΄Π° бъдС ΠΈΠ·ΠΏΡ€Π°Ρ‚Π΅Π½.

ΠžΠ±ΡŠΡ€Π½Π΅Ρ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Π΅ pod-ΡŠΡ‚ ΡΡŠΡ‰ΠΎ Π΅ външСн ΠΎΠ±Π΅ΠΊΡ‚ (ΡΠ²ΡŠΡ€Π·Π°Π½ с veth) ΠΎΡ‚ Π³Π»Π΅Π΄Π½Π° Ρ‚ΠΎΡ‡ΠΊΠ° Π½Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°Ρ‚Π° Π½Π° iptables. Π”Π° ΠΎΠ±ΠΎΠ±Ρ‰ΠΈΠΌ:

  • ΠŸΡ€Π΅Π½Π°ΡΠΎΡ‡Π΅Π½ΠΈΡΡ‚ (forwarded) Ρ‚Ρ€Π°Ρ„ΠΈΠΊ (nat, ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·ΠΈΡ€Π°Π½ ΠΈΠ»ΠΈ ΠΎΡ‚/Π΄ΠΎ pod) ΠΏΡ€Π΅ΠΌΠΈΠ½Π°Π²Π° ΠΏΡ€Π΅Π· Π²Π΅Ρ€ΠΈΠ³ΠΈΡ‚Π΅ PREROUTING - FORWARD - POSTROUTING.
  • Π’Ρ€Π°Ρ„ΠΈΠΊΡŠΡ‚ към локалния хост-процСс ΠΏΡ€Π΅ΠΌΠΈΠ½Π°Π²Π° ΠΏΡ€Π΅Π· Π²Π΅Ρ€ΠΈΠ³Π°Ρ‚Π° PREROUTING - INPUT.
  • Π’Ρ€Π°Ρ„ΠΈΠΊΡŠΡ‚ ΠΎΡ‚ локалния хост-процСс ΠΏΡ€Π΅ΠΌΠΈΠ½Π°Π²Π° ΠΏΡ€Π΅Π· Π²Π΅Ρ€ΠΈΠ³Π°Ρ‚Π° OUTPUT - POSTROUTING.

Π Π°Π·Π±ΠΈΡ€Π°Π½Π΅ Π½Π° Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΈΡ‚Π΅ Π·Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° ΠΌΡ€Π΅ΠΆΠΎΠ²ΠΈ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ с Calico

Calico прСдоставя ΠΎΠΏΡ†ΠΈΠΈ Π·Π° ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ, Ρ‡Ρ€Π΅Π· ΠΊΠΎΠΈΡ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΏΡ€ΠΈΠ»Π°Π³Π°Ρ‚Π΅ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ Π·Π° всички Π²Π΅Ρ€ΠΈΠ³ΠΈ. Π‘ ΠΎΠ³Π»Π΅Π΄ Π½Π° Ρ‚ΠΎΠ²Π°, Π½Π΅ΠΊΠ° Ρ€Π°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈΡ‚Π΅ Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΠΈ Π·Π° настройка Π½Π° ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈΡ‚Π΅, Π½Π°Π»ΠΈΡ‡Π½ΠΈ Π² Calico. Π¦ΠΈΡ„Ρ€ΠΈΡ‚Π΅ Π² списъка с ΠΎΠΏΡ†ΠΈΠΈ ΠΏΠΎ-Π΄ΠΎΠ»Ρƒ ΡΡŠΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²Π°Ρ‚ Π½Π° Ρ†ΠΈΡ„Ρ€ΠΈΡ‚Π΅ Π½Π° Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠ°Ρ‚Π° ΠΏΠΎ-Π³ΠΎΡ€Π΅.

  1. ΠŸΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ° Π½Π° ΠΊΡ€Π°ΠΉΠ½Π° Ρ‚ΠΎΡ‡ΠΊΠ° Π½Π° Ρ€Π°Π±ΠΎΡ‚Π΅Π½ Ρ‚ΠΎΠ²Π°Ρ€ (pod)
  2. ΠŸΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ° Π½Π° ΠΊΡ€Π°ΠΉΠ½Π° Ρ‚ΠΎΡ‡ΠΊΠ° Π½Π° хост
  3. ΠžΠΏΡ†ΠΈΡ ApplyOnForward
  4. ΠŸΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ° PreDNAT
  5. ΠŸΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ° Untracked

НСка Π·Π°ΠΏΠΎΡ‡Π½Π΅ΠΌ с Ρ€Π°Π·Π³Π»Π΅ΠΆΠ΄Π°Π½Π΅ Π½Π° Ρ‚ΠΎΠ²Π° ΠΊΠ°ΠΊ сС ΠΏΡ€ΠΈΠ»Π°Π³Π°Ρ‚ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈΡ‚Π΅ към ΠΊΡ€Π°ΠΉΠ½ΠΈ Ρ‚ΠΎΡ‡ΠΊΠΈ Π½Π° Ρ€Π°Π±ΠΎΡ‚Π΅Π½ Ρ‚ΠΎΠ²Π°Ρ€ (pod'ΠΎΠ²Π΅ Π½Π° Kubernetes ΠΈΠ»ΠΈ OpenStack VMs), Π° слСд Ρ‚ΠΎΠ²Π° Ρ‰Π΅ Ρ€Π°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ ΠΎΠΏΡ†ΠΈΠΈ Π·Π° ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ Π·Π° ΠΊΡ€Π°ΠΉΠ½ΠΈ Ρ‚ΠΎΡ‡ΠΊΠΈ Π½Π° хост.

ΠšΡ€Π°ΠΉΠ½ΠΈ Ρ‚ΠΎΡ‡ΠΊΠΈ Π½Π° Ρ€Π°Π±ΠΎΡ‚Π΅Π½ Ρ‚ΠΎΠ²Π°Ρ€

ΠŸΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ° Π½Π° ΠΊΡ€Π°ΠΉΠ½Π° Ρ‚ΠΎΡ‡ΠΊΠ° Π½Π° Ρ€Π°Π±ΠΎΡ‚Π΅Π½ Ρ‚ΠΎΠ²Π°Ρ€ (1)

Π’ΠΎΠ²Π° Π΅ опция Π·Π° Π·Π°Ρ‰ΠΈΡ‚Π° Π½Π° Π²Π°ΡˆΠΈΡ‚Π΅ kubernetes pod'ΠΎΠ²Π΅. Π’ Calico сС ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ° Ρ€Π°Π±ΠΎΡ‚Π° с Kubernetes NetworkPolicy, Π½ΠΎ ΡΡŠΡ‰ΠΎ Ρ‚Π°ΠΊΠ° ΠΏΡ€Π΅Π΄Π»Π°Π³Π° Π΄ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π½ΠΈ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ β€” Calico NetworkPolicy ΠΈ GlobalNetworkPolicy. Calico създава Π²Π΅Ρ€ΠΈΠ³Π° Π·Π° всСки pod (Ρ€Π°Π±ΠΎΡ‚Π΅Π½ Ρ‚ΠΎΠ²Π°Ρ€) ΠΈ Π½Π°ΠΊΠ°Ρ‡Π° Π² Π²Π΅Ρ€ΠΈΠ³ΠΈ INPUT ΠΈ OUTPUT Π·Π° работния Ρ‚ΠΎΠ²Π°Ρ€ към Ρ‚Π°Π±Π»ΠΈΡ†Π°Ρ‚Π° с Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΠΈ Π½Π° Π²Π΅Ρ€ΠΈΠ³Π°Ρ‚Π° FORWARD.

ΠšΡ€Π°ΠΉΠ½ΠΈ Ρ‚ΠΎΡ‡ΠΊΠΈ Π½Π° хост

ΠŸΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ° Π½Π° ΠΊΡ€Π°ΠΉΠ½Π° Ρ‚ΠΎΡ‡ΠΊΠ° Π½Π° хост (2)

ОсвСн CNI (интСрфСйс Π½Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π½Π° ΠΌΡ€Π΅ΠΆΠ°), ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈΡ‚Π΅ Π½Π° Calico прСдоставят Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ Π·Π° Π·Π°Ρ‰ΠΈΡ‚Π° Π΄ΠΈΡ€Π΅ΠΊΡ‚Π½ΠΎ Π½Π° хоста. Π’ Calico ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΡΡŠΠ·Π΄Π°Π΄Π΅Ρ‚Π΅ ΠΊΡ€Π°ΠΉΠ½Π° Ρ‚ΠΎΡ‡ΠΊΠ° Π½Π° хост, Π·Π°Π΄Π°Π²Π°ΠΉΠΊΠΈ комбинация ΠΎΡ‚ интСрфСйса Π½Π° хоста ΠΈ, Π°ΠΊΠΎ Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ, Π½ΠΎΠΌΠ΅Ρ€Π° Π½Π° ΠΏΠΎΡ€Ρ‚ΠΎΠ²Π΅Ρ‚Π΅. ΠŸΡ€ΠΈΠ»Π°Π³Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈΡ‚Π΅ Π·Π° Ρ‚ΠΎΠ·ΠΈ ΠΎΠ±Π΅ΠΊΡ‚ сС постига Ρ‡Ρ€Π΅Π· Ρ‚Π°Π±Π»ΠΈΡ†Π°Ρ‚Π° с Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΠΈ Π² Π²Π΅Ρ€ΠΈΠ³ΠΈΡ‚Π΅ INPUT ΠΈ OUTPUT. ΠšΠ°ΠΊΡ‚ΠΎ сС Π²ΠΈΠΆΠ΄Π° ΠΎΡ‚ Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠ°Ρ‚Π°, (2) Ρ‚Π΅ сС ΠΏΡ€ΠΈΠ»Π°Π³Π°Ρ‚ към Π»ΠΎΠΊΠ°Π»Π½ΠΈΡ‚Π΅ процСси Π½Π° Π½ΠΎΠ΄Π°Ρ‚Π°/хоста. ВоСст, Π°ΠΊΠΎ стС създали ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ°, която сС ΠΏΡ€ΠΈΠ»Π°Π³Π° към ΠΊΡ€Π°ΠΉΠ½Π° Ρ‚ΠΎΡ‡ΠΊΠ° Π½Π° хост, тя няма Π΄Π° повлияС Π½Π° Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ°, ΠΈΠ΄Π²Π°Ρ‰ към/ΠΎΡ‚ Π²Π°ΡˆΠΈΡ‚Π΅ pod'ΠΎΠ²Π΅. Но Π±Π»Π°Π³ΠΎΠ΄Π°Ρ€Π΅Π½ΠΈΠ΅ Π½Π° Ρ‚ΠΎΠ²Π° сС осигурява Π΅Π΄ΠΈΠ½Π΅Π½ интСрфСйс/синтаксис Π·Π° Π±Π»ΠΎΠΊΠΈΡ€Π°Π½Π΅ Π½Π° Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ° Π·Π° вашия хост ΠΈ pod'ΠΎΠ²Π΅ с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈΡ‚Π΅ Π½Π° Calico. Π’ΠΎΠ²Π° Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»Π½ΠΎ опростява ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈΡ‚Π΅ Π·Π° Ρ…Π΅Ρ‚Π΅Ρ€ΠΎΠ³Π΅Π½Π½Π° ΠΌΡ€Π΅ΠΆΠ°. Настройката Π½Π° ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ Π·Π° ΠΊΡ€Π°ΠΉΠ½ΠΈ Ρ‚ΠΎΡ‡ΠΊΠΈ Π½Π° хост Π·Π° засилванС Π½Π° Π·Π°Ρ‰ΠΈΡ‚Π°Ρ‚Π° Π½Π° ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π° Π΅ ΠΎΡ‰Π΅ Π΅Π΄ΠΈΠ½ Π²Π°ΠΆΠ΅Π½ случай Π½Π° тяхното ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅.

ΠŸΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ° ApplyOnForward (3)

ΠžΠΏΡ†ΠΈΡΡ‚Π° ApplyOnForward Π΅ Π΄ΠΎΡΡ‚ΡŠΠΏΠ½Π° Π² Π³Π»ΠΎΠ±Π°Π»Π½Π°Ρ‚Π° ΠΌΡ€Π΅ΠΆΠΎΠ²Π° ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ° Π½Π° Calico, Π·Π° Π΄Π° прСдостави Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ Π·Π° ΠΏΡ€ΠΈΠ»Π°Π³Π°Π½Π΅ Π½Π° ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ към цСлия Ρ‚Ρ€Π°Ρ„ΠΈΠΊ, ΠΏΡ€Π΅ΠΌΠΈΠ½Π°Π²Π°Ρ‰ ΠΏΡ€Π΅Π· ΠΊΡ€Π°ΠΉΠ½Π° Ρ‚ΠΎΡ‡ΠΊΠ° Π½Π° хост, Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»Π½ΠΎ Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ°, ΠΊΠΎΠΉΡ‚ΠΎ Ρ‰Π΅ бъдС прСнасочСн ΠΎΡ‚ хоста. Π’ΠΎΠ·ΠΈ Ρ‚Ρ€Π°Ρ„ΠΈΠΊ Π²ΠΊΠ»ΡŽΡ‡Π²Π° Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ°, ΠΈΠ·ΠΏΡ€Π°Ρ‚Π΅Π½ Π΄ΠΎ Π»ΠΎΠΊΠ°Π»Π΅Π½ pod ΠΈΠ»ΠΈ някъдС Π΄Ρ€ΡƒΠ³Π°Π΄Π΅ Π² ΠΌΡ€Π΅ΠΆΠ°Ρ‚Π°. Calico изисква Ρ‚ΠΎΠ·ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚ΡŠΡ€ Π΄Π° бъдС Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°Π½ Π·Π° ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‰ΠΈ PreDNAT ΠΈ untracked, Π²ΠΈΠΆΡ‚Π΅ слСдващитС Ρ€Π°Π·Π΄Π΅Π»ΠΈ. ОсвСн Ρ‚ΠΎΠ²Π°, ApplyOnForward ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π·Π° прослСдяванС Π½Π° Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ° Π½Π° хоста Π² случай Π½Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»Π΅Π½ Ρ€ΡƒΡ‚Π΅Ρ€ ΠΈΠ»ΠΈ софтуСрни NAT.

ΠžΠ±ΡŠΡ€Π½Π΅Ρ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Π΅ Π°ΠΊΠΎ трябва Π΄Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠΈΡ‚Π΅ Π΅Π΄Π½Π° ΠΈ ΡΡŠΡ‰Π° ΠΌΡ€Π΅ΠΆΠΎΠ²Π° ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ° ΠΊΠ°ΠΊΡ‚ΠΎ Π·Π° хост-процСси, Ρ‚Π°ΠΊΠ° ΠΈ Π·Π° pod-ΠΎΠ²Π΅, Π½Π΅ Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ опцията ApplyOnForward. Π”ΠΎΡΡ‚Π°Ρ‚ΡŠΡ‡Π½ΠΎ Π΅ Π΄Π° ΡΡŠΠ·Π΄Π°Π΄Π΅Ρ‚Π΅ Π΅Ρ‚ΠΈΠΊΠ΅Ρ‚ Π·Π° Π½ΡƒΠΆΠ½ΠΈΡ‚Π΅ hostendpoint ΠΈ workload endpoint (pod). Calico Π΅ Π΄ΠΎΡΡ‚Π°Ρ‚ΡŠΡ‡Π½ΠΎ ΡƒΠΌΠ΅Π½, Π·Π° Π΄Π° ΠΏΡ€ΠΈΠ»Π°Π³Π° ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ°Ρ‚Π° Π½Π° Π±Π°Π·Π°Ρ‚Π° Π½Π° Π΅Ρ‚ΠΈΠΊΠ΅Ρ‚ΠΈ, нСзависимо ΠΎΡ‚ Ρ‚ΠΈΠΏΠ° endpoint (hostendpoint ΠΈΠ»ΠΈ workload).

PreDNAT ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ° (4)

Π’ Kubernetes ΠΏΠΎΡ€Ρ‚ΠΎΠ²Π΅Ρ‚Π΅ Π½Π° ΠΎΠ±Π΅ΠΊΡ‚Π° service ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ ΠΏΡ€ΠΎΠ±ΠΈΡ‚ΠΈ навън с опцията NodePorts ΠΈΠ»ΠΈ, ΠΎΠΏΡ†ΠΈΠΎΠ½Π°Π»Π½ΠΎ (ΠΏΡ€ΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° Calico), Ρ‡Ρ€Π΅Π· тяхното Π΄Π΅ΠΊΠ»Π°Ρ€ΠΈΡ€Π°Π½Π΅ ΠΏΡ€Π΅Π· ΠΎΠΏΡ†ΠΈΠΈ Cluster IPs ΠΈΠ»ΠΈ External IPs. Kube-proxy балансира входящия Ρ‚Ρ€Π°Ρ„ΠΈΠΊ, ΡΠ²ΡŠΡ€Π·Π°Π½ с service, към pod-ΠΎΠ²Π΅Ρ‚Π΅ Π½Π° ΡΡŠΠΎΡ‚Π²Π΅Ρ‚Π½ΠΈΡ service, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ DNAT. Π‘ΡŠΠΎΠ±Ρ€Π°Π·ΡΠ²Π°ΠΉΠΊΠΈ сС с Ρ‚ΠΎΠ²Π°, ΠΊΠ°ΠΊ Π΄Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠΈΡ‚Π΅ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈΡ‚Π΅ Π·Π° Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ°, ΠΏΠΎΡΡ‚ΡŠΠΏΠ²Π°Ρ‰ ΠΏΡ€Π΅Π· NodePorts? Π—Π° Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ Ρ‚Π΅Π·ΠΈ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈ ΠΏΡ€Π΅Π΄ΠΈ Ρ‚Ρ€Π°Ρ„ΠΈΠΊΡŠΡ‚ Π΄Π° бъдС ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π΅Π½ ΠΎΡ‚ DNAT (прСдставляващ ΡΡŠΠΏΠΎΡΡ‚Π°Π²ΡΠ½Π΅ Π½Π° хост:ΠΏΠΎΡ€Ρ‚ ΠΈ ΡΡŠΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²Π°Ρ‰ΠΈΡ service), Calico прСдоставя ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚ΡŠΡ€ Π·Π° globalNetworkPolicy, Π½Π°Ρ€Π΅Ρ‡Π΅Π½ β€žpreDNAT: trueβ€œ.

ΠšΠΎΠ³Π°Ρ‚ΠΎ pre-DNAT Π΅ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½, Ρ‚Π΅Π·ΠΈ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ сС Ρ€Π΅Π°Π»ΠΈΠ·ΠΈΡ€Π°Ρ‚ Π² (4) Π½Π° Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠ°Ρ‚Π° β€” Π² Ρ‚Π°Π±Π»ΠΈΡ†Π°Ρ‚Π° mangle Π½Π° Π²Π΅Ρ€ΠΈΠ³Π°Ρ‚Π° PREROUTING β€” нСпосрСдствСно ΠΏΡ€Π΅Π΄ΠΈ DNAT. ΠžΠ±Ρ‹ΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΡΡ‚ Ρ€Π΅Π΄ Π½Π° ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈΡ‚Π΅ (order) Ρ‚ΡƒΠΊ Π½Π΅ сС спазва, Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ ΠΏΡ€ΠΈΠ»Π°Π³Π°Π½Π΅Ρ‚ΠΎ Π½Π° Ρ‚Π΅Π·ΠΈ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ сС случва ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎ-Ρ€Π°Π½ΠΎ ΠΏΠΎ ΠΏΡŠΡ‚Ρ Π½Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ°. Π’ΡŠΠΏΡ€Π΅ΠΊΠΈ Ρ‚ΠΎΠ²Π°, ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈΡ‚Π΅ preDNAT спазват Ρ€Π΅Π΄Π° Π½Π° ΠΏΡ€ΠΈΠ»Π°Π³Π°Π½Π΅ (order) ΠΏΠΎΠΌΠ΅ΠΆΠ΄Ρƒ си.

ΠŸΡ€ΠΈ създаванС Π½Π° ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ с pre-DNAT Π΅ Π²Π°ΠΆΠ½ΠΎ Π΄Π° Π²Π½ΠΈΠΌΠ°Π²Π°Ρ‚Π΅ с Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ°, ΠΊΠΎΠΉΡ‚ΠΎ искатС Π΄Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΈΡ‚Π΅, ΠΈ Π΄Π° ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚Π΅ Π½Π° ΠΏΠΎΠ²Π΅Ρ‡Π΅Ρ‚ΠΎ Π΄Π° бъдС ΠΎΡ‚Ρ…Π²ΡŠΡ€Π»Π΅Π½. Π’Ρ€Π°Ρ„ΠΈΠΊΡŠΡ‚, ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π΅Π½ ΠΊΠ°Ρ‚ΠΎ β€žallowβ€œ Π² ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ°Ρ‚Π° pre-DNAT, ΠΏΠΎΠ²Π΅Ρ‡Π΅ няма Π΄Π° бъдС провСряван ΠΎΡ‚ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ°Ρ‚Π° Π½Π° hostendpoint, Π΄ΠΎΠΊΠ°Ρ‚ΠΎ Ρ‚Ρ€Π°Ρ„ΠΈΠΊΡŠΡ‚, ΠΏΡ€ΠΈ ΠΏΡ€ΠΎΠ²Π°Π» Π½Π° ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ°Ρ‚Π° pre-DNAT, Ρ‰Π΅ ΠΏΡ€ΠΎΠ΄ΡŠΠ»ΠΆΠΈ ΠΏΡŠΡ‚Ρ си ΠΏΡ€Π΅Π· останалитС Π²Π΅Ρ€ΠΈΠ³ΠΈ.
Calico Π½Π°ΠΏΡ€Π°Π²ΠΈ Π·Π°Π΄ΡŠΠ»ΠΆΠΈΡ‚Π΅Π»Π½ΠΎ Π²ΠΊΠ»ΡŽΡ‡Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° опцията applyOnForward ΠΏΡ€ΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° preDNAT, Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ ΠΏΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ мСстоназначСниСто Π½Π° Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ° всС ΠΎΡ‰Π΅ Π½Π΅ Π΅ ΠΈΠ·Π±Ρ€Π°Π½ΠΎ. Π’Ρ€Π°Ρ„ΠΈΠΊΡŠΡ‚ ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС насочСн към хост-процСс ΠΈΠ»ΠΈ Π΄Π° бъдС прСнасочСн към pod ΠΈΠ»ΠΈ Π΄Ρ€ΡƒΠ³Π° Π½ΠΎΠ΄Π°.

Untracked ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ° (5)

ΠœΡ€Π΅ΠΆΠΈΡ‚Π΅ ΠΈ прилоТСнията ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° ΠΈΠΌΠ°Ρ‚ Π³ΠΎΠ»Π΅ΠΌΠΈ различия Π² ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅Ρ‚ΠΎ си. Π’ някои ΠΊΡ€Π°ΠΉΠ½ΠΈ случаи прилоТСнията ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π°Ρ‚ мноТСство ΠΊΡ€Π°Ρ‚ΠΊΠΎΡ‚Ρ€Π°ΠΉΠ½ΠΈ ΡΠ²ΡŠΡ€Π·Π²Π°Π½ΠΈΡ. Π’ΠΎΠ²Π° ΠΌΠΎΠΆΠ΅ Π΄Π° Π΄ΠΎΠ²Π΅Π΄Π΅ Π΄ΠΎ нСдостиг Π½Π° ΠΏΠ°ΠΌΠ΅Ρ‚ Π² conntrack (основния ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ Π½Π° мрСТовия стСк Π½Π° Linux). Π’Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½ΠΎ Π·Π° стартиранС Π½Π° прилоТСния ΠΎΡ‚ Ρ‚ΠΎΠ·ΠΈ Ρ‚ΠΈΠΏ Π² Linux Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Ρ€ΡŠΡ‡Π½ΠΎ Π΄Π° сС ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π° ΠΈΠ»ΠΈ Π΄Π΅Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π° conntrack, ΠΈΠ»ΠΈ Π΄Π° сС Π½Π°ΠΏΠΈΡˆΠ°Ρ‚ ΠΏΡ€Π°Π²ΠΈΠ»Π° Π·Π° iptables, Π·Π° Π΄Π° сС Π·Π°ΠΎΠ±ΠΈΠΊΠΎΠ»ΠΈ conntrack. ΠŸΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ°Ρ‚Π° Untracked Π² Calico прСдставлява ΠΏΠΎ-прост ΠΈ Π΅Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π΅Π½ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚, Π°ΠΊΠΎ искатС Π΄Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π²Π°Ρ‚Π΅ ΡΠ²ΡŠΡ€Π·Π²Π°Π½ΠΈΡΡ‚Π° максимално Π±ΡŠΡ€Π·ΠΎ. НапримСр, Π°ΠΊΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ масивСн memcache ΠΈΠ»ΠΈ ΠΊΠ°Ρ‚ΠΎ Π΄ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π½Π° мярка Π·Π° Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDOS.

ΠŸΡ€ΠΎΡ‡Π΅Ρ‚Π΅Ρ‚Π΅ Ρ‚ΠΎΠ·ΠΈ Π±Π»ΠΎΠ³ пост (ΠΈΠ»ΠΈ Π½Π°ΡˆΠΈΡΡ‚ ΠΏΡ€Π΅Π²ΠΎΠ΄) Π·Π° Π΄ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π½Π° информация, Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»Π½ΠΎ тСстовС Π·Π° производитСлност ΠΏΡ€ΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° untracked policy.

ΠšΠΎΠ³Π°Ρ‚ΠΎ Π·Π°Π΄Π°Π΄Π΅Ρ‚Π΅ опцията "doNotTrack: true" Π² Π³Π»ΠΎΠ±Π°Π»Π½Π°Ρ‚Π° ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ° Π½Π° ΠΌΡ€Π΅ΠΆΠ°Ρ‚Π° Calico, тя става **нСотслСТиваСма** ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ° ΠΈ сС ΠΏΡ€ΠΈΠ»Π°Π³Π° Π½Π° Π½Π°ΠΉ-ранния Π΅Ρ‚Π°ΠΏ ΠΎΡ‚ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°Ρ‚Π° Π½Π° ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈΡ‚Π΅ Π² Linux. Ако ΠΏΠΎΠ³Π»Π΅Π΄Π½Π΅Ρ‚Π΅ схСмата ΠΏΠΎ-Π³ΠΎΡ€Π΅, ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈΡ‚Π΅ untracked сС ΠΏΡ€ΠΈΠ»Π°Π³Π°Ρ‚ Π² Π²Π΅Ρ€ΠΈΠ³ΠΈΡ‚Π΅ PREROUTING ΠΈ OUTPUT Π² Ρ‚Π°Π±Π»ΠΈΡ†Π°Ρ‚Π° raw, ΠΏΡ€Π΅Π΄ΠΈ Π΄Π° бъдС стартирано прослСдяванСто Π½Π° ΡΠ²ΡŠΡ€Π·Π²Π°Π½ΠΈΡΡ‚Π° (conntrack). ΠšΠΎΠ³Π°Ρ‚ΠΎ ΠΏΠ°ΠΊΠ΅Ρ‚ΡŠΡ‚ бъдС ΠΏΠΎΠ·Π²ΠΎΠ»Π΅Π½ ΠΎΡ‚ untracked ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ°Ρ‚Π°, Ρ‚ΠΎΠΉ сС ΠΌΠ°Ρ€ΠΊΠΈΡ€Π°, Π·Π° Π΄Π° сС Π΄Π΅Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π° прослСдяванСто Π½Π° ΡΠ²ΡŠΡ€Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π·Π° Ρ‚ΠΎΠ·ΠΈ ΠΏΠ°ΠΊΠ΅Ρ‚. Π’ΠΎΠ²Π° ΠΎΠ·Π½Π°Ρ‡Π°Π²Π°:

  • ΠŸΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ°Ρ‚Π° untracked сС ΠΏΡ€ΠΈΠ»Π°Π³Π° Π·Π° всСки ΠΏΠ°ΠΊΠ΅Ρ‚. Няма понятиС Π·Π° ΡΠ²ΡŠΡ€Π·Π²Π°Π½Π΅ (ΠΈΠ»ΠΈ ΠΏΠΎΡ‚ΠΎΠΊ). Липсата Π½Π° ΡΠ²ΡŠΡ€Π·Π²Π°Π½ΠΈΡ (connection) Π²ΠΎΠ΄ΠΈ Π΄ΠΎ няколко Π²Π°ΠΆΠ½ΠΈ послСдствия:
  • Ако искатС Π΄Π° Ρ€Π°Π·Ρ€Π΅ΡˆΠΈΡ‚Π΅ ΠΊΠ°ΠΊΡ‚ΠΎ Ρ‚Ρ€Π°Ρ„ΠΈΠΊ Π½Π° заявки, Ρ‚Π°ΠΊΠ° ΠΈ Ρ‚Ρ€Π°Ρ„ΠΈΠΊ Π½Π° ΠΎΡ‚Π³ΠΎΠ²ΠΎΡ€ΠΈ, трябва Π΄Π° ΠΈΠΌΠ°Ρ‚Π΅ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ ΠΊΠ°ΠΊΡ‚ΠΎ Π·Π° входящия, Ρ‚Π°ΠΊΠ° ΠΈ Π·Π° изходящия (Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ Calico ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° conntrack, Π·Π° Π΄Π° ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡ΠΈ отговорния Ρ‚Ρ€Π°Ρ„ΠΈΠΊ ΠΊΠ°Ρ‚ΠΎ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½).
  • ΠŸΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ°Ρ‚Π° untracked Π½Π΅ Ρ€Π°Π±ΠΎΡ‚ΠΈ Π·Π° Kubernetes workloads (pod’овС), Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ Π² Ρ‚ΠΎΠ·ΠΈ случай няма Π½Π°Ρ‡ΠΈΠ½ Π΄Π° сС прослСди изходящото ΡΠ²ΡŠΡ€Π·Π²Π°Π½Π΅ ΠΎΡ‚ pod’а.
  • NAT Π½Π΅ Ρ€Π°Π±ΠΎΡ‚ΠΈ ΠΏΡ€Π°Π²ΠΈΠ»Π½ΠΎ с нСотслСТиваСми ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ (Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ ядрото ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π° ΡΡŠΠ²ΠΏΠ°Π΄Π΅Π½ΠΈΠ΅Ρ‚ΠΎ NAT Π² conntrack).
  • ΠšΠΎΠ³Π°Ρ‚ΠΎ ΠΏΡ€Π΅ΠΌΠΈΠ½Π΅Ρ‚Π΅ ΠΏΡ€Π΅Π· ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ "Ρ€Π°Π·Ρ€Π΅ΡˆΠΈ всичко" Π² untracked-ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ°Ρ‚Π°, всички ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ Ρ‰Π΅ Π±ΡŠΠ΄Π°Ρ‚ ΠΌΠ°Ρ€ΠΊΠΈΡ€Π°Π½ΠΈ ΠΊΠ°Ρ‚ΠΎ нСотслСТиваСми. Π’ΠΎΠ²Π° ΠΏΠΎΡ‡Ρ‚ΠΈ Π²ΠΈΠ½Π°Π³ΠΈ Π½Π΅ Π΅ Ρ‚ΠΎΠ²Π°, ΠΎΡ‚ ΠΊΠΎΠ΅Ρ‚ΠΎ сС Π½ΡƒΠΆΠ΄Π°Π΅Ρ‚Π΅, Π·Π°Ρ‚ΠΎΠ²Π° Π΅ Π²Π°ΠΆΠ½ΠΎ Π΄Π° Π±ΡŠΠ΄Π΅Ρ‚Π΅ ΠΌΠ½ΠΎΠ³ΠΎ ΠΈΠ·Π±ΠΈΡ€Π°Ρ‚Π΅Π»Π½ΠΈ към ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈΡ‚Π΅, Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈ ΠΎΡ‚ untracked-ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ (ΠΈ Π΄Π° ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚Π΅ Π½Π° ΠΏΠΎ-голямата част ΠΎΡ‚ Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ° Π΄Π° ΠΏΡ€Π΅ΠΌΠΈΠ½Π°Π²Π° ΠΏΡ€Π΅Π· ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΡ‚Π΅ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ с прослСдяванС).
  • Untracked-ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈΡ‚Π΅ сС ΠΏΡ€ΠΈΠ»Π°Π³Π°Ρ‚ Π² самото Π½Π°Ρ‡Π°Π»ΠΎ Π½Π° ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€Π° Π·Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ. Π’Π°ΠΆΠ½ΠΎ Π΅ Π΄Π° Ρ€Π°Π·Π±Π΅Ρ€Π΅Ρ‚Π΅ Ρ‚ΠΎΠ²Π° ΠΏΡ€ΠΈ ΡΡŠΠ·Π΄Π°Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈΡ‚Π΅ Π½Π° Calico. ΠœΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΈΠΌΠ°Ρ‚Π΅ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ° Π·Π° pod с order:1 ΠΈ untracked-ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ° с order:1000. Π’ΠΎΠ²Π° няма Π΄Π° ΠΈΠΌΠ° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Untracked-ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ°Ρ‚Π° Ρ‰Π΅ бъдС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½Π° ΠΏΡ€Π΅Π΄ΠΈ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ°Ρ‚Π° Π·Π° pod. Untracked-ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈΡ‚Π΅ спазват Ρ€Π΅Π΄Π° Π½Π° изпълнСниС само ΠΏΠΎΠΌΠ΅ΠΆΠ΄Ρƒ си.

Въй ΠΊΠ°Ρ‚ΠΎ Π΅Π΄Π½Π° ΠΎΡ‚ Ρ†Π΅Π»ΠΈΡ‚Π΅ Π½Π° ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ°Ρ‚Π° doNotTrack Π΅ Π΄Π° Π½Π°Π»ΠΎΠΆΠΈ ΠΏΡ€ΠΈΠ»Π°Π³Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ°Ρ‚Π° Π½Π° Π½Π°ΠΉ-ранния Π΅Ρ‚Π°ΠΏ ΠΎΡ‚ ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€Π° Π·Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ Π² Linux, Calico задълТава посочванСто Π½Π° опцията applyOnForward ΠΏΡ€ΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° doNotTrack. ΠžΠ±ΡŠΡ€Π½Π΅Ρ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠ°Ρ‚Π° Π·Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ, ΠΊΡŠΠ΄Π΅Ρ‚ΠΎ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ°Ρ‚Π° untracked (5) сС ΠΏΡ€ΠΈΠ»Π°Π³Π° ΠΏΡ€Π΅Π΄ΠΈ всякакви Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π·Π° ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·ΠΈΡ€Π°Π½Π΅. Π’Ρ€Π°Ρ„ΠΈΠΊΡŠΡ‚ ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС насочСн към хост процСс ΠΈΠ»ΠΈ ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС прСнасочСн към pod ΠΈΠ»ΠΈ Π½Π° Π΄Ρ€ΡƒΠ³Π° Π½ΠΎΠ΄Π°.

РСзюмС

Π Π°Π·Π³Π»Π΅Π΄Π°Ρ…ΠΌΠ΅ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ ΠΎΠΏΡ†ΠΈΠΈ Π·Π° ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ (Host endpoint, ApplyOnForward, preDNAT ΠΈ Untracked) Π² Calico ΠΈ ΠΊΠ°ΠΊ Ρ‚Π΅ сС ΠΏΡ€ΠΈΠ»Π°Π³Π°Ρ‚ ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π½Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°Ρ‚Π° Π½Π° ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ. Π Π°Π·Π±ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΡΡŠΡ‰Π½ΠΎΡΡ‚Ρ‚Π° Π½Π° тяхната Ρ€Π°Π±ΠΎΡ‚Π° ΠΏΠΎΠΌΠ°Π³Π° Π·Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° Π΅Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΈ ΠΈ бСзопасни ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ. Π‘ ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° Calico ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ Π³Π»ΠΎΠ±Π°Π»Π½Π° ΠΌΡ€Π΅ΠΆΠΎΠ²Π° ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ°, която сС ΠΏΡ€ΠΈΠ»Π°Π³Π° към Π΅Ρ‚ΠΈΠΊΠ΅Ρ‚ (Π³Ρ€ΡƒΠΏΠ° Π½ΠΎΠ΄ΠΈ ΠΈ pod-ΠΎΠ²Π΅) ΠΈ Π΄Π° ΠΏΡ€ΠΈΠ»Π°Π³Π°Ρ‚Π΅ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ с Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈ. Π’ΠΎΠ²Π° позволява Π½Π° спСциалиститС ΠΏΠΎ сигурност ΠΈ ΠΌΡ€Π΅ΠΆΠΎΠ² Π΄ΠΈΠ·Π°ΠΉΠ½ Π΄Π° Π·Π°Ρ‰ΠΈΡ‚Π°Π²Π°Ρ‚ ΡƒΠ΄ΠΎΠ±Π½ΠΎ β€žΠ²ΡΠΈΡ‡ΠΊΠΎβ€œ (Ρ‚ΠΈΠΏΠΎΠ²Π΅ ΠΊΡ€Π°ΠΉΠ½ΠΈ Ρ‚ΠΎΡ‡ΠΊΠΈ), ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ Π΅Π΄ΠΈΠ½Π΅Π½ Π΅Π·ΠΈΠΊ Π·Π° ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ с ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈΡ‚Π΅ Π½Π° Calico.

Благодарност: Искам Π΄Π° благодаря Π¨ΠΎΠ½ ΠšΡ€Π°ΠΌΠΏΡ‚ΡŠΠ½ ΠΈ АлСкс ΠŸΠΎΠ»Π»ΠΈΡ‚ Π·Π° тСхния ΠΏΡ€Π΅Π³Π»Π΅Π΄ ΠΈ Π·Π° Ρ†Π΅Π½Π½Π°Ρ‚Π° информация.

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

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