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

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

ΠœΡ€Π΅ΠΆΠΎΠ²ΠΈΡΡ‚ плъгин Calico ΠΏΡ€Π΅Π΄Π»Π°Π³Π° ΡˆΠΈΡ€ΠΎΠΊ Π½Π°Π±ΠΎΡ€ ΠΎΡ‚ ΠΌΡ€Π΅ΠΆΠΎΠ²ΠΈ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ с ΡƒΠ½ΠΈΡ„ΠΈΡ†ΠΈΡ€Π°Π½ синтаксис Π·Π° Π·Π°Ρ‰ΠΈΡ‚Π° Π½Π° хостовС Π½Π° Ρ…Π°Ρ€Π΄ΡƒΠ΅Ρ€, Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»Π½ΠΈ машини ΠΈ ΠΏΠΎΠ΄ΠΎΠ²Π΅. Π’Π΅Π·ΠΈ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° сС ΠΏΡ€ΠΈΠ»Π°Π³Π°Ρ‚ Π² Ρ€Π°ΠΌΠΊΠΈΡ‚Π΅ Π½Π° пространство ΠΎΡ‚ ΠΈΠΌΠ΅Π½Π° ΠΈΠ»ΠΈ Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ Π³Π»ΠΎΠ±Π°Π»Π½ΠΈ ΠΌΡ€Π΅ΠΆΠΎΠ²ΠΈ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ, ΠΏΡ€ΠΈΠ»ΠΎΠΆΠΈΠΌΠΈ към 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-* Π² namespace calico-monitoring.

[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, Π·Π° Π΄Π° прСдостави Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ Π·Π° ΠΏΡ€ΠΈΠ»Π°Π³Π°Π½Π΅ Π½Π° ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ към цСлия Ρ‚Ρ€Π°Ρ„ΠΈΠΊ, ΠΏΡ€Π΅ΠΌΠΈΠ½Π°Π²Π°Ρ‰ ΠΏΡ€Π΅Π· хост Ρ‚ΠΎΡ‡ΠΊΠ°Ρ‚Π°, Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»Π½ΠΎ Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ°, ΠΊΠΎΠΉΡ‚ΠΎ Ρ‰Π΅ бъдС ΠΏΡ€Π΅ΠΏΡ€Π°Ρ‚Π΅Π½ ΠΎΡ‚ хоста (forwarded). Π’ΠΎΠ·ΠΈ Ρ‚Ρ€Π°Ρ„ΠΈΠΊ Π²ΠΊΠ»ΡŽΡ‡Π²Π° Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ°, ΠΈΠ·ΠΏΡ€Π°Ρ‚Π΅Π½ Π΄ΠΎ Π»ΠΎΠΊΠ°Π»Π΅Π½ 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 globalNetworkPolicy, тя става **нСотслСТиваСма** ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ° ΠΈ сС ΠΏΡ€ΠΈΠ»Π°Π³Π° Π½Π° Π½Π°ΠΉ-ранния Π΅Ρ‚Π°ΠΏ ΠΎΡ‚ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°Ρ‚Π° Π½Π° ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈΡ‚Π΅ Π² Linux. Ако ΠΏΠΎΠ³Π»Π΅Π΄Π½Π΅ΠΌ Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠ°Ρ‚Π° ΠΏΠΎ-Π³ΠΎΡ€Π΅, ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈΡ‚Π΅ untracked сС ΠΏΡ€ΠΈΠ»Π°Π³Π°Ρ‚ Π² Π²Π΅Ρ€ΠΈΠ³ΠΈΡ‚Π΅ PREROUTING ΠΈ OUTPUT Π² Ρ‚Π°Π±Π»ΠΈΡ†Π°Ρ‚Π° raw, ΠΏΡ€Π΅Π΄ΠΈ Π΄Π° сС стартира отслСТванСто Π½Π° Π²Ρ€ΡŠΠ·ΠΊΠΈΡ‚Π΅ (conntrack). ΠšΠΎΠ³Π°Ρ‚ΠΎ Π΅Π΄ΠΈΠ½ ΠΏΠ°ΠΊΠ΅Ρ‚ бъдС Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ ΠΎΡ‚ untracked ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ°Ρ‚Π°, Ρ‚ΠΎΠΉ сС ΠΌΠ°Ρ€ΠΊΠΈΡ€Π°, Π·Π° Π΄Π° сС Π΄Π΅Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π° отслСТванСто Π½Π° Π²Ρ€ΡŠΠ·ΠΊΠ°Ρ‚Π° Π·Π° Ρ‚ΠΎΠ·ΠΈ ΠΏΠ°ΠΊΠ΅Ρ‚. Π’ΠΎΠ²Π° ΠΎΠ·Π½Π°Ρ‡Π°Π²Π°:

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

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

Π˜Ρ‚ΠΎΠ³

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

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

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

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