Π Π°Π·Π±ΠΈΡ€Π°ΡšΠ΅ Π½Π° ΠΎΠΏΡ†ΠΈΠΈΡ‚Π΅ Π·Π° ΡΠΏΡ€ΠΎΠ²Π΅Π΄ΡƒΠ²Π°ΡšΠ΅ Π½Π° ΠΌΡ€Π΅ΠΆΠ½ΠΈ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ со Calico

Π Π°Π·Π±ΠΈΡ€Π°ΡšΠ΅ Π½Π° ΠΎΠΏΡ†ΠΈΠΈΡ‚Π΅ Π·Π° ΡΠΏΡ€ΠΎΠ²Π΅Π΄ΡƒΠ²Π°ΡšΠ΅ Π½Π° ΠΌΡ€Π΅ΠΆΠ½ΠΈ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ со Calico

ΠœΡ€Π΅ΠΆΠ½ΠΈΠΎΡ‚ ΠΏΡ€ΠΈΠΊΠ»ΡƒΡ‡ΠΎΠΊ Calico ΠΎΠ±Π΅Π·Π±Π΅Π΄ΡƒΠ²Π° ΡˆΠΈΡ€ΠΎΠΊ опсСг Π½Π° ΠΌΡ€Π΅ΠΆΠ½ΠΈ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ со ΡƒΠ½ΠΈΡ„ΠΈΡ†ΠΈΡ€Π°Π½Π° синтакса Π·Π° Π·Π°ΡˆΡ‚ΠΈΡ‚Π° Π½Π° хардвСрски хостови, Π²ΠΈΡ€Ρ‚ΡƒΠ΅Π»Π½ΠΈ машини ΠΈ ΠΏΠΎΠ΄Π»ΠΎΠ³ΠΈ. ОвиС ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΠΏΡ€ΠΈΠΌΠ΅Π½Π°Ρ‚ Π²ΠΎ имСнски простор ΠΈΠ»ΠΈ Π΄Π° Π±ΠΈΠ΄Π°Ρ‚ Π³Π»ΠΎΠ±Π°Π»Π½ΠΈ ΠΌΡ€Π΅ΠΆΠ½ΠΈ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ ΡˆΡ‚ΠΎ сС однСсуваат Π½Π° ΠΊΡ€Π°Ρ˜Π½Π° Ρ‚ΠΎΡ‡ΠΊΠ° Π½Π° Π΄ΠΎΠΌΠ°ΡœΠΈΠ½ΠΎΡ‚ (Π·Π° Π·Π°ΡˆΡ‚ΠΈΡ‚Π° Π½Π° Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΠΈΡ‚Π΅ ΡˆΡ‚ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ Π΄ΠΈΡ€Π΅ΠΊΡ‚Π½ΠΎ Π½Π° Π΄ΠΎΠΌΠ°ΡœΠΈΠ½ΠΎΡ‚ - Π΄ΠΎΠΌΠ°ΡœΠΈΠ½ΠΎΡ‚ ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΠΈΠ΄Π΅ сСрвСр ΠΈΠ»ΠΈ Π²ΠΈΡ€Ρ‚ΡƒΠ΅Π»Π½Π° машина) ΠΈΠ»ΠΈ ΠΊΡ€Π°Ρ˜Π½Π° Ρ‚ΠΎΡ‡ΠΊΠ° Π½Π° ΠΎΠ±Π΅ΠΌΠΎΡ‚ Π½Π° Ρ€Π°Π±ΠΎΡ‚Π° (Π·Π° Π·Π°ΡˆΡ‚ΠΈΡ‚Π° Π½Π° Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΠΈΡ‚Π΅ ΡˆΡ‚ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ Π²ΠΎ ΠΊΠΎΠ½Ρ‚Π΅Ρ˜Π½Π΅Ρ€ΠΈ ΠΈΠ»ΠΈ хостирани Π²ΠΈΡ€Ρ‚ΡƒΠ΅Π»Π½ΠΈ машини). ΠŸΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈΡ‚Π΅ Π½Π° Calico Π²ΠΈ Π΄ΠΎΠ·Π²ΠΎΠ»ΡƒΠ²Π°Π°Ρ‚ Π΄Π° ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚Π΅ бСзбСдносни ΠΌΠ΅Ρ€ΠΊΠΈ Π½Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ Ρ‚ΠΎΡ‡ΠΊΠΈ Π½Π° ΠΏΠ°Ρ‚Π΅ΠΊΠ°Ρ‚Π° Π½Π° ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΡ‚ ΠΊΠΎΡ€ΠΈΡΡ‚Π΅Ρ˜ΡœΠΈ ΠΎΠΏΡ†ΠΈΠΈ ΠΊΠ°ΠΊΠΎ ΡˆΡ‚ΠΎ сС preDNAT, unraracked ΠΈ applyOnForward. Π Π°Π·Π±ΠΈΡ€Π°ΡšΠ΅Ρ‚ΠΎ ΠΊΠ°ΠΊΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½ΠΈΡ€Π°Π°Ρ‚ ΠΎΠ²ΠΈΠ΅ ΠΎΠΏΡ†ΠΈΠΈ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΏΠΎΠΌΠΎΠ³Π½Π΅ Π΄Π° сС ΠΏΠΎΠ΄ΠΎΠ±Ρ€Π°Ρ‚ бСзбСдноста ΠΈ пСрформанситС Π½Π° Π²Π°ΡˆΠΈΠΎΡ‚ Ρ†Π΅Π»ΠΎΠΊΡƒΠΏΠ΅Π½ систСм. Оваа ΡΡ‚Π°Ρ‚ΠΈΡ˜Π° ја ΠΎΠ±Ρ˜Π°ΡΠ½ΡƒΠ²Π° ΡΡƒΡˆΡ‚ΠΈΠ½Π°Ρ‚Π° Π½Π° ΠΎΠ²ΠΈΠ΅ ΠΎΠΏΡ†ΠΈΠΈ Π·Π° ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ° Π½Π° Calico (preDNAT, unraracked ΠΈ applyOnForward) ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Ρ‚ΠΈ Π½Π° ΠΊΡ€Π°Ρ˜Π½ΠΈΡ‚Π΅ Ρ‚ΠΎΡ‡ΠΊΠΈ Π½Π° Π΄ΠΎΠΌΠ°ΡœΠΈΠ½ΠΎΡ‚, со Π°ΠΊΡ†Π΅Π½Ρ‚ Π½Π° ΠΎΠ½Π° ΡˆΡ‚ΠΎ сС случува Π²ΠΎ ΠΏΠ°Ρ‚Π΅ΠΊΠΈΡ‚Π΅ Π·Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ (иптабСлс ΡΠΈΠ½ΡŸΠΈΡ€ΠΈ).

Оваа ΡΡ‚Π°Ρ‚ΠΈΡ˜Π° прСтпоставува Π΄Π΅ΠΊΠ° ΠΈΠΌΠ°Ρ‚Π΅ основно Ρ€Π°Π·Π±ΠΈΡ€Π°ΡšΠ΅ Π·Π° Ρ‚ΠΎΠ° ΠΊΠ°ΠΊΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½ΠΈΡ€Π°Π°Ρ‚ ΠΌΡ€Π΅ΠΆΠ½ΠΈΡ‚Π΅ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ Π½Π° Kubernetes ΠΈ Calico. Ако Π½Π΅, ΠΏΡ€Π΅ΠΏΠΎΡ€Π°Ρ‡ΡƒΠ²Π°ΠΌΠ΅ Π΄Π° Π³ΠΎ ΠΏΡ€ΠΎΠ±Π°Ρ‚Π΅ основно упатство Π·Π° ΠΌΡ€Π΅ΠΆΠ½Π° ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ° ΠΈ упатство Π·Π° Π·Π°ΡˆΡ‚ΠΈΡ‚Π° Π½Π° Π΄ΠΎΠΌΠ°ΡœΠΈΠ½ΠΎΡ‚ ΠΊΠΎΡ€ΠΈΡΡ‚Π΅ΡšΠ΅ Π½Π° Calico ΠΏΡ€Π΅Π΄ Π΄Π° ја ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚Π΅ ΠΎΠ²Π°Π° ΡΡ‚Π°Ρ‚ΠΈΡ˜Π°. Π˜ΡΡ‚ΠΎ Ρ‚Π°ΠΊΠ°, ΠΎΡ‡Π΅ΠΊΡƒΠ²Π°ΠΌΠ΅ Π΄Π° ΠΈΠΌΠ°Ρ‚Π΅ основно Ρ€Π°Π·Π±ΠΈΡ€Π°ΡšΠ΅ Π·Π° Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚Π° iptables Π²ΠΎ Линукс.

АмСрикан Π³Π»ΠΎΠ±Π°Π»Π½Π° ΠΌΡ€Π΅ΠΆΠ½Π° ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ° Π²ΠΈ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡƒΠ²Π° Π΄Π° ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚Π΅ Π·Π±ΠΈΡ€ Π½Π° ΠΏΡ€Π°Π²ΠΈΠ»Π° Π·Π° пристап ΠΏΠΎ Π΅Ρ‚ΠΈΠΊΠ΅Ρ‚ΠΈ (Π½Π° Π³Ρ€ΡƒΠΏΠΈ Π½Π° домаќини ΠΈ ΠΎΠΏΡ‚ΠΎΠ²Π°Ρ€ΡƒΠ²Π°ΡšΠ°/ΠΏΠΎΠ΄ΠΎΠ²ΠΈ). Ова Π΅ ΠΌΠ½ΠΎΠ³Ρƒ корисно Π°ΠΊΠΎ користитС Ρ…Π΅Ρ‚Π΅Ρ€ΠΎΠ³Π΅Π½ΠΈ систСми Π·Π°Π΅Π΄Π½ΠΎ - Π²ΠΈΡ€Ρ‚ΡƒΠ΅Π»Π½ΠΈ машини, систСм Π΄ΠΈΡ€Π΅ΠΊΡ‚Π½ΠΎ Π½Π° Ρ…Π°Ρ€Π΄Π²Π΅Ρ€ ΠΈΠ»ΠΈ инфраструктура kubernetes. Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»Π½ΠΎ, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π³ΠΎ Π·Π°ΡˆΡ‚ΠΈΡ‚ΠΈΡ‚Π΅ Π²Π°ΡˆΠΈΠΎΡ‚ кластСр (јазли) ΠΊΠΎΡ€ΠΈΡΡ‚Π΅Ρ˜ΡœΠΈ Π·Π±ΠΈΡ€ Π½Π° Π΄Π΅ΠΊΠ»Π°Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΈ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ ΠΈ Π΄Π° ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚Π΅ ΠΌΡ€Π΅ΠΆΠ½ΠΈ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ Π·Π° Π΄ΠΎΡ˜Π΄ΠΎΠ²Π½ΠΈΠΎΡ‚ ΡΠΎΠΎΠ±Ρ€Π°ΡœΠ°Ρ˜ (Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΡ€Π΅ΠΊΡƒ услугата NodePorts ΠΈΠ»ΠΈ Π½Π°Π΄Π²ΠΎΡ€Π΅ΡˆΠ½ΠΈ IP-адрСси).

На Ρ„ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚Π°Π»Π½ΠΎ Π½ΠΈΠ²ΠΎ, ΠΊΠΎΠ³Π° Calico ΠΏΠΎΠ²Ρ€Π·ΡƒΠ²Π° pod со ΠΌΡ€Π΅ΠΆΠ°Ρ‚Π° (Π²ΠΈΠ΄ΠΈ Π΄ΠΈΡ˜Π°Π³Ρ€Π°ΠΌ ΠΏΠΎΠ΄ΠΎΠ»Ρƒ), Π³ΠΎ ΠΏΠΎΠ²Ρ€Π·ΡƒΠ²Π° со Π΄ΠΎΠΌΠ°ΡœΠΈΠ½ΠΎΡ‚ ΠΊΠΎΡ€ΠΈΡΡ‚Π΅Ρ˜ΡœΠΈ Π²ΠΈΡ€Ρ‚ΡƒΠ΅Π»Π΅Π½ Π΅Ρ‚Π΅Ρ€Π½Π΅Ρ‚ ΠΈΠ½Ρ‚Π΅Ρ€Ρ„Π΅Ρ˜Ρ (veth). Π‘ΠΎΠΎΠ±Ρ€Π°ΡœΠ°Ρ˜ΠΎΡ‚ испратСн ΠΎΠ΄ ΠΏΠΎΠ΄Π»ΠΎΠ³Π°Ρ‚Π° Π΄ΠΎΠ°Ρ“Π° Π΄ΠΎ Π΄ΠΎΠΌΠ°ΡœΠΈΠ½ΠΎΡ‚ ΠΎΠ΄ овој Π²ΠΈΡ€Ρ‚ΡƒΠ΅Π»Π΅Π½ ΠΈΠ½Ρ‚Π΅Ρ€Ρ„Π΅Ρ˜Ρ ΠΈ сС ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΡƒΠ²Π° Π½Π° ист Π½Π°Ρ‡ΠΈΠ½ ΠΊΠ°ΠΊΠΎ Π΄Π° Π΄ΠΎΠ°Ρ“Π° ΠΎΠ΄ Ρ„ΠΈΠ·ΠΈΡ‡ΠΊΠΈ ΠΌΡ€Π΅ΠΆΠ΅Π½ ΠΈΠ½Ρ‚Π΅Ρ€Ρ„Π΅Ρ˜Ρ. Π‘Ρ‚Π°Π½Π΄Π°Ρ€Π΄Π½ΠΎ, Calico Π³ΠΈ ΠΈΠΌΠ΅Π½ΡƒΠ²Π° ΠΎΠ²ΠΈΠ΅ ΠΈΠ½Ρ‚Π΅Ρ€Ρ„Π΅Ρ˜ΡΠΈ caliXXX. Π‘ΠΈΠ΄Π΅Ρ˜ΡœΠΈ ΡΠΎΠΎΠ±Ρ€Π°ΡœΠ°Ρ˜ΠΎΡ‚ Π΄ΠΎΠ°Ρ“Π° ΠΏΡ€Π΅ΠΊΡƒ Π²ΠΈΡ€Ρ‚ΡƒΠ΅Π»Π½ΠΈΠΎΡ‚ ΠΈΠ½Ρ‚Π΅Ρ€Ρ„Π΅Ρ˜Ρ, Ρ‚ΠΎΡ˜ ΠΌΠΈΠ½ΡƒΠ²Π° Π½ΠΈΠ· iptables ΠΊΠ°ΠΊΠΎ ΠΏΠΎΠ΄ΠΎΡ‚ Π΄Π° Π΅ Π΅Π΄Π΅Π½ скок ΠΏΠΎΠ΄Π°Π»Π΅ΠΊΡƒ. Π—Π°Ρ‚ΠΎΠ°, ΠΊΠΎΠ³Π° ΡΠΎΠΎΠ±Ρ€Π°ΡœΠ°Ρ˜ΠΎΡ‚ Π΄ΠΎΠ°Ρ“Π° Π΄ΠΎ/ΠΎΠ΄ pod, Ρ‚ΠΎΡ˜ сС ΠΏΡ€Π΅ΠΏΡ€Π°ΡœΠ° ΠΎΠ΄ Π³Π»Π΅Π΄Π½Π° Ρ‚ΠΎΡ‡ΠΊΠ° Π½Π° Π΄ΠΎΠΌΠ°ΡœΠΈΠ½ΠΎΡ‚.

На јазол Kubernetes кој Ρ€Π°Π±ΠΎΡ‚ΠΈ Calico, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΌΠ°ΠΏΠΈΡ€Π°Ρ‚Π΅ Π²ΠΈΡ€Ρ‚ΡƒΠ΅Π»Π΅Π½ ΠΈΠ½Ρ‚Π΅Ρ€Ρ„Π΅Ρ˜Ρ (veth) Π½Π° ΠΎΠ±Π΅ΠΌΠΎΡ‚ Π½Π° Ρ€Π°Π±ΠΎΡ‚Π° Π½Π° слСдниов Π½Π°Ρ‡ΠΈΠ½. Π’ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΡ‚ ΠΏΠΎΠ΄ΠΎΠ»Ρƒ, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π²ΠΈΠ΄ΠΈΡ‚Π΅ Π΄Π΅ΠΊΠ° veth#10 (calic1cbf1ca0f8) Π΅ ΠΏΠΎΠ²Ρ€Π·Π°Π½ со cnx-manager-* Π²ΠΎ имСнскиот простор Π·Π° слСдСњС Π½Π° ΠΊΠ°Π»ΠΈΠΊΠΎ.

[centos@ip-172-31-31-46 K8S]$ sudo ip a
...
10: calic1cbf1ca0f8@if4: <BROADCAST,MULTICAST,UP,LOWER_UP> 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 ΠΈΠ½Ρ‚Π΅Ρ€Ρ„Π΅Ρ˜Ρ Π·Π° сСкој ΠΎΠ±Π΅ΠΌ Π½Π° Ρ€Π°Π±ΠΎΡ‚Π°, ΠΊΠ°ΠΊΠΎ Π³ΠΈ спровСдува ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈΡ‚Π΅? Π—Π° Π΄Π° Π³ΠΎ Π½Π°ΠΏΡ€Π°Π²ΠΈΡ‚Π΅ ΠΎΠ²Π°, Calico создава ΠΊΡƒΠΊΠΈ Π²ΠΎ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ ΡΠΈΠ½ΡŸΠΈΡ€ΠΈ Π½Π° ΠΏΠ°Ρ‚Π΅ΠΊΠ°Ρ‚Π° Π·Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ ΠΊΠΎΡ€ΠΈΡΡ‚Π΅Ρ˜ΡœΠΈ iptables.

Π”ΠΈΡ˜Π°Π³Ρ€Π°ΠΌΠΎΡ‚ ΠΏΠΎΠ΄ΠΎΠ»Ρƒ Π³ΠΈ ΠΏΡ€ΠΈΠΊΠ°ΠΆΡƒΠ²Π° ΡΠΈΠ½ΡŸΠΈΡ€ΠΈΡ‚Π΅ Π²ΠΊΠ»ΡƒΡ‡Π΅Π½ΠΈ Π²ΠΎ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°Ρ‚Π° Π½Π° ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ Π²ΠΎ iptables (ΠΈΠ»ΠΈ потсистСмот netfilter). Кога ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΡ‚ пристигнува ΠΏΡ€Π΅ΠΊΡƒ ΠΌΡ€Π΅ΠΆΠ΅Π½ ΠΈΠ½Ρ‚Π΅Ρ€Ρ„Π΅Ρ˜Ρ, Ρ‚ΠΎΡ˜ ΠΏΡ€Π²ΠΎ ΠΏΠΎΠΌΠΈΠ½ΡƒΠ²Π° Π½ΠΈΠ· ΡΠΈΠ½ΡŸΠΈΡ€ΠΎΡ‚ PREROUTING. ΠŸΠΎΡ‚ΠΎΠ° сС донСсува ΠΎΠ΄Π»ΡƒΠΊΠ° Π·Π° Ρ€ΡƒΡ‚ΠΈΡ€Π°ΡšΠ΅, ΠΈ Π²Ρ€Π· основа Π½Π° Ρ‚ΠΎΠ°, ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΡ‚ ΠΏΠΎΠΌΠΈΠ½ΡƒΠ²Π° ΠΈΠ»ΠΈ ΠΏΡ€Π΅ΠΊΡƒ INPUT (насочСн ΠΊΠΎΠ½ процСситС Π½Π° Π΄ΠΎΠΌΠ°ΡœΠΈΠ½ΠΎΡ‚) ΠΈΠ»ΠΈ FORWARD (насочСн ΠΊΠΎΠ½ pod ΠΈΠ»ΠΈ Π΄Ρ€ΡƒΠ³ јазол Π½Π° ΠΌΡ€Π΅ΠΆΠ°Ρ‚Π°). Од Π»ΠΎΠΊΠ°Π»Π½ΠΈΠΎΡ‚ процСс, ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΡ‚ ΠΌΠΈΠ½ΡƒΠ²Π° Π½ΠΈΠ· ΡΠΈΠ½ΡŸΠΈΡ€ΠΎΡ‚ OUTPUT, Π° ΠΏΠΎΡ‚ΠΎΠ° ΠŸΠžΠ‘Π’Π ΠžΠ£Π’Π˜Π ΠΠŠΠ• ΠΏΡ€Π΅Π΄ Π΄Π° Π±ΠΈΠ΄Π΅ испратСн Π½ΠΈΠ· ΠΊΠ°Π±Π΅Π»ΠΎΡ‚.

Π—Π°Π±Π΅Π»Π΅ΠΆΠ΅Ρ‚Π΅ Π΄Π΅ΠΊΠ° pod Π΅ исто Ρ‚Π°ΠΊΠ° Π½Π°Π΄Π²ΠΎΡ€Π΅ΡˆΠ΅Π½ Π΅Π½Ρ‚ΠΈΡ‚Π΅Ρ‚ (ΠΏΠΎΠ²Ρ€Π·Π°Π½ со veth) Π²ΠΎ однос Π½Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°Ρ‚Π° Π½Π° iptables. Π”Π° Ρ€Π΅Π·ΠΈΠΌΠΈΡ€Π°ΠΌΠ΅:

  • ΠŸΡ€Π΅ΠΏΡ€Π°Ρ‚Π΅Π½ΠΈΠΎΡ‚ ΡΠΎΠΎΠ±Ρ€Π°ΡœΠ°Ρ˜ (Π½Π°Ρ‚, насочуван ΠΈΠ»ΠΈ Π΄ΠΎ/ΠΎΠ΄ ΠΏΠΎΠ΄Π»ΠΎΠ³Π°) ΠΏΠΎΠΌΠΈΠ½ΡƒΠ²Π° Π½ΠΈΠ· ΡΠΈΠ½ΡŸΠΈΡ€ΠΈΡ‚Π΅ ΠŸΠ Π•ΠŸΠ ΠžΠ£Π’Π˜ΠΠ“ - ΠΠΠŸΠ Π•Π” - ΠŸΠžΠ‘Π’ΠžΠ Π£Π’Π˜Π ΠΠŠΠ•.
  • Π‘ΠΎΠΎΠ±Ρ€Π°ΡœΠ°Ρ˜ΠΎΡ‚ Π΄ΠΎ Π»ΠΎΠΊΠ°Π»Π½ΠΈΠΎΡ‚ процСс Π½Π° домаќин ΠΏΠΎΠΌΠΈΠ½ΡƒΠ²Π° Π½ΠΈΠ· ΡΠΈΠ½ΡŸΠΈΡ€ΠΎΡ‚ PREROUTING - Π’Π›Π•Π—.
  • Π‘ΠΎΠΎΠ±Ρ€Π°ΡœΠ°Ρ˜ΠΎΡ‚ ΠΎΠ΄ Π»ΠΎΠΊΠ°Π»Π½ΠΈΠΎΡ‚ процСс Π½Π° домаќин ΠΎΠ΄ΠΈ ΠΏΡ€Π΅ΠΊΡƒ ΡΠΈΠ½ΡŸΠΈΡ€ΠΎΡ‚ OUTPUT - POSTROUTING.

Π Π°Π·Π±ΠΈΡ€Π°ΡšΠ΅ Π½Π° ΠΎΠΏΡ†ΠΈΠΈΡ‚Π΅ Π·Π° ΡΠΏΡ€ΠΎΠ²Π΅Π΄ΡƒΠ²Π°ΡšΠ΅ Π½Π° ΠΌΡ€Π΅ΠΆΠ½ΠΈ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ со Calico

Calico ΠΎΠ±Π΅Π·Π±Π΅Π΄ΡƒΠ²Π° ΠΎΠΏΡ†ΠΈΠΈ Π·Π° ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ ΡˆΡ‚ΠΎ Π²ΠΈ Π΄ΠΎΠ·Π²ΠΎΠ»ΡƒΠ²Π°Π°Ρ‚ Π΄Π° ΠΏΡ€ΠΈΠΌΠ΅Π½ΡƒΠ²Π°Ρ‚Π΅ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ Π½ΠΈΠ· ситС ΡΠΈΠ½ΡŸΠΈΡ€ΠΈ. Имајќи Π³ΠΎ Ρ‚ΠΎΠ° Π½Π° ΡƒΠΌ, ајдС Π΄Π° Π³ΠΈ ΠΏΠΎΠ³Π»Π΅Π΄Π½Π΅ΠΌΠ΅ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈΡ‚Π΅ ΠΎΠΏΡ†ΠΈΠΈ Π·Π° ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ˜Π° Π½Π° ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ°Ρ‚Π° достапни Π²ΠΎ Calico. Π‘Ρ€ΠΎΠ΅Π²ΠΈΡ‚Π΅ Π²ΠΎ списокот со ΠΎΠΏΡ†ΠΈΠΈ ΠΏΠΎΠ΄ΠΎΠ»Ρƒ ΠΎΠ΄Π³ΠΎΠ²Π°Ρ€Π°Π°Ρ‚ Π½Π° Π±Ρ€ΠΎΠ΅Π²ΠΈΡ‚Π΅ ΠΎΠ΄ Π΄ΠΈΡ˜Π°Π³Ρ€Π°ΠΌΠΎΡ‚ ΠΏΠΎΠ³ΠΎΡ€Π΅.

  1. ΠŸΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ° Π·Π° ΠΊΡ€Π°Ρ˜Π½Π° Ρ‚ΠΎΡ‡ΠΊΠ° Π½Π° ΠΎΠΏΡ‚ΠΎΠ²Π°Ρ€ΡƒΠ²Π°ΡšΠ΅ Π½Π° Ρ€Π°Π±ΠΎΡ‚Π° (ΠΏΠΎΠ΄).
  2. ΠŸΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ° Π½Π° ΠΊΡ€Π°Ρ˜Π½Π°Ρ‚Π° Ρ‚ΠΎΡ‡ΠΊΠ° Π½Π° Π΄ΠΎΠΌΠ°ΡœΠΈΠ½ΠΎΡ‚
  3. ΠžΠΏΡ†ΠΈΡ˜Π° ApplyOnForward
  4. ΠŸΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ° Π½Π° PreDNAT
  5. НСслСдСна ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ°

Π”Π° ΠΏΠΎΡ‡Π½Π΅ΠΌΠ΅ со Ρ€Π°Π·Π³Π»Π΅Π΄ΡƒΠ²Π°ΡšΠ΅ Π½Π° Ρ‚ΠΎΠ° ΠΊΠ°ΠΊΠΎ сС ΠΏΡ€ΠΈΠΌΠ΅Π½ΡƒΠ²Π°Π°Ρ‚ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈΡ‚Π΅ Π½Π° ΠΊΡ€Π°Ρ˜Π½ΠΈΡ‚Π΅ Ρ‚ΠΎΡ‡ΠΊΠΈ Π½Π° ΠΎΠΏΡ‚ΠΎΠ²Π°Ρ€ΡƒΠ²Π°ΡšΠ΅ (Kubernetes pods ΠΈΠ»ΠΈ OpenStack VMs), Π° ΠΏΠΎΡ‚ΠΎΠ° ΠΏΠΎΠ³Π»Π΅Π΄Π½Π΅Ρ‚Π΅ Π³ΠΈ ΠΎΠΏΡ†ΠΈΠΈΡ‚Π΅ Π·Π° ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ Π·Π° ΠΊΡ€Π°Ρ˜Π½ΠΈΡ‚Π΅ Ρ‚ΠΎΡ‡ΠΊΠΈ Π½Π° Π΄ΠΎΠΌΠ°ΡœΠΈΠ½ΠΎΡ‚.

ΠšΡ€Π°Ρ˜Π½ΠΈ Ρ‚ΠΎΡ‡ΠΊΠΈ Π½Π° ΠΎΠΏΡ‚ΠΎΠ²Π°Ρ€ΡƒΠ²Π°ΡšΠ΅

ΠŸΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ° Π·Π° ΠΊΡ€Π°Ρ˜Π½Π° Ρ‚ΠΎΡ‡ΠΊΠ° Π½Π° ΠΎΠΏΡ‚ΠΎΠ²Π°Ρ€ΡƒΠ²Π°ΡšΠ΅ Π½Π° Ρ€Π°Π±ΠΎΡ‚Π° (1)

Ова Π΅ ΠΎΠΏΡ†ΠΈΡ˜Π° Π·Π° Π·Π°ΡˆΡ‚ΠΈΡ‚Π° Π½Π° Π²Π°ΡˆΠΈΡ‚Π΅ kubernetes pods. Calico ΠΏΠΎΠ΄Π΄Ρ€ΠΆΡƒΠ²Π° Ρ€Π°Π±ΠΎΡ‚Π° со Kubernetes NetworkPolicy, Π½ΠΎ ΠΎΠ±Π΅Π·Π±Π΅Π΄ΡƒΠ²Π° ΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»Π½ΠΈ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ - Calico NetworkPolicy ΠΈ GlobalNetworkPolicy. Calico создава ΡΠΈΠ½ΡŸΠΈΡ€ Π·Π° сСкоја ΠΏΠΎΠ΄Π»ΠΎΠ³Π° (ΠΎΠ±Π΅ΠΌ Π½Π° Ρ€Π°Π±ΠΎΡ‚Π°) ΠΈ Π³ΠΈ Π·Π°ΠΊΠ°Ρ‡ΡƒΠ²Π° ΡΠΈΠ½ΡŸΠΈΡ€ΠΈΡ‚Π΅ Π’Π›Π•Π— ΠΈ Π˜Π—Π›Π•Π— Π·Π° ΠΎΠ±Π΅ΠΌΠΎΡ‚ Π½Π° Ρ€Π°Π±ΠΎΡ‚Π° Π½Π° Ρ‚Π°Π±Π΅Π»Π°Ρ‚Π° Π·Π° Ρ„ΠΈΠ»Ρ‚Ρ€ΠΈΡ€Π°ΡšΠ΅ Π½Π° ΡΠΈΠ½ΡŸΠΈΡ€ΠΎΡ‚ ΠΠΠŸΠ Π•Π”.

ΠšΡ€Π°Ρ˜Π½ΠΈ Ρ‚ΠΎΡ‡ΠΊΠΈ Π½Π° Π΄ΠΎΠΌΠ°ΡœΠΈΠ½ΠΎΡ‚

ΠŸΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ° Π½Π° ΠΊΡ€Π°Ρ˜Π½Π°Ρ‚Π° Ρ‚ΠΎΡ‡ΠΊΠ° Π½Π° Π΄ΠΎΠΌΠ°ΡœΠΈΠ½ΠΎΡ‚ (2)

ΠŸΠΎΠΊΡ€Π°Ρ˜ CNI (ΠΌΡ€Π΅ΠΆΠ΅Π½ ΠΈΠ½Ρ‚Π΅Ρ€Ρ„Π΅Ρ˜Ρ Π·Π° ΠΊΠΎΠ½Ρ‚Π΅Ρ˜Π½Π΅Ρ€ΠΈ), ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈΡ‚Π΅ Π½Π° Calico ΠΎΠ±Π΅Π·Π±Π΅Π΄ΡƒΠ²Π°Π°Ρ‚ моТност Π·Π° Π·Π°ΡˆΡ‚ΠΈΡ‚Π° Π½Π° самиот домаќин. Π’ΠΎ Calico, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΊΡ€Π΅ΠΈΡ€Π°Ρ‚Π΅ ΠΊΡ€Π°Ρ˜Π½Π° Ρ‚ΠΎΡ‡ΠΊΠ° Π½Π° Π΄ΠΎΠΌΠ°ΡœΠΈΠ½ΠΎΡ‚ со Π½Π°Π²Π΅Π΄ΡƒΠ²Π°ΡšΠ΅ Π½Π° ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΡ˜Π° ΠΎΠ΄ ΠΈΠ½Ρ‚Π΅Ρ€Ρ„Π΅Ρ˜ΡΠΎΡ‚ Π½Π° Π΄ΠΎΠΌΠ°ΡœΠΈΠ½ΠΎΡ‚ ΠΈ, Π΄ΠΎΠΊΠΎΠ»ΠΊΡƒ Π΅ ΠΏΠΎΡ‚Ρ€Π΅Π±Π½ΠΎ, Π±Ρ€ΠΎΠ΅Π²ΠΈ Π½Π° ΠΏΠΎΡ€Ρ‚ΠΈ. Π‘ΠΏΡ€ΠΎΠ²Π΅Π΄ΡƒΠ²Π°ΡšΠ΅Ρ‚ΠΎ Π½Π° ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ°Ρ‚Π° Π·Π° овој Π΅Π½Ρ‚ΠΈΡ‚Π΅Ρ‚ сС постигнува со помош Π½Π° Ρ‚Π°Π±Π΅Π»Π° Π·Π° Ρ„ΠΈΠ»Ρ‚Ρ€ΠΈ Π²ΠΎ ΡΠΈΠ½ΡŸΠΈΡ€ΠΈΡ‚Π΅ Π’Π›Π•Π— ΠΈ Π˜Π—Π›Π•Π—. Како ΡˆΡ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π²ΠΈΠ΄ΠΈΡ‚Π΅ ΠΎΠ΄ Π΄ΠΈΡ˜Π°Π³Ρ€Π°ΠΌΠΎΡ‚, (2) Ρ‚ΠΈΠ΅ сС ΠΏΡ€ΠΈΠΌΠ΅Π½ΡƒΠ²Π°Π°Ρ‚ Π½Π° Π»ΠΎΠΊΠ°Π»Π½ΠΈ процСси Π½Π° Ρ˜Π°Π·ΠΎΠ»ΠΎΡ‚/Π΄ΠΎΠΌΠ°ΡœΠΈΠ½ΠΎΡ‚. Односно, Π°ΠΊΠΎ ΠΊΡ€Π΅ΠΈΡ€Π°Ρ‚Π΅ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ° ΡˆΡ‚ΠΎ сС однСсува Π½Π° ΠΊΡ€Π°Ρ˜Π½Π°Ρ‚Π° Ρ‚ΠΎΡ‡ΠΊΠ° Π½Π° Π΄ΠΎΠΌΠ°ΡœΠΈΠ½ΠΎΡ‚, Ρ‚ΠΎΠ° Π½Π΅ΠΌΠ° Π΄Π° влијаС Π½Π° ΡΠΎΠΎΠ±Ρ€Π°ΡœΠ°Ρ˜ΠΎΡ‚ ΡˆΡ‚ΠΎ ΠΎΠ΄ΠΈ Π΄ΠΎ/ΠΎΠ΄ Π²Π°ΡˆΠΈΡ‚Π΅ ΠΏΠΎΠ΄Π»ΠΎΠ³ΠΈ. Но, Ρ‚ΠΎΡ˜ ΠΎΠ±Π΅Π·Π±Π΅Π΄ΡƒΠ²Π° СдинствСн ΠΈΠ½Ρ‚Π΅Ρ€Ρ„Π΅Ρ˜Ρ/синтакса Π·Π° Π±Π»ΠΎΠΊΠΈΡ€Π°ΡšΠ΅ Π½Π° ΡΠΎΠΎΠ±Ρ€Π°ΡœΠ°Ρ˜ΠΎΡ‚ Π·Π° Π²Π°ΡˆΠΈΠΎΡ‚ домаќин ΠΈ ΠΏΠΎΠ΄Π»ΠΎΠ³ΠΈΡ‚Π΅ ΠΊΠΎΡ€ΠΈΡΡ‚Π΅Ρ˜ΡœΠΈ Π³ΠΈ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈΡ‚Π΅ Π½Π° Calico. Ова Π²ΠΎ Π³ΠΎΠ»Π΅ΠΌΠ° ΠΌΠ΅Ρ€Π° Π³ΠΎ поСдноставува процСсот Π½Π° ΡƒΠΏΡ€Π°Π²ΡƒΠ²Π°ΡšΠ΅ со ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ Π·Π° Ρ…Π΅Ρ‚Π΅Ρ€ΠΎΠ³Π΅Π½Π° ΠΌΡ€Π΅ΠΆΠ°. ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°ΡšΠ΅Ρ‚ΠΎ Π½Π° ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈΡ‚Π΅ Π·Π° ΠΊΡ€Π°Ρ˜Π½Π° Ρ‚ΠΎΡ‡ΠΊΠ° Π½Π° Π΄ΠΎΠΌΠ°ΡœΠΈΠ½ΠΎΡ‚ Π·Π° ΠΏΠΎΠ΄ΠΎΠ±Ρ€ΡƒΠ²Π°ΡšΠ΅ Π½Π° бСзбСдноста Π½Π° кластСрот Π΅ ΡƒΡˆΡ‚Π΅ Π΅Π΄Π΅Π½ Π²Π°ΠΆΠ΅Π½ ΡΠ»ΡƒΡ‡Π°Ρ˜ Π½Π° ΡƒΠΏΠΎΡ‚Ρ€Π΅Π±Π°.

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

ΠžΠΏΡ†ΠΈΡ˜Π°Ρ‚Π° ApplyOnForward Π΅ достапна Π²ΠΎ Π³Π»ΠΎΠ±Π°Π»Π½Π°Ρ‚Π° ΠΌΡ€Π΅ΠΆΠ½Π° ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ° Π½Π° Calico Π·Π° Π΄Π° сС ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½Π° Π½Π° ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ Π·Π° Ρ†Π΅Π»ΠΈΠΎΡ‚ ΡΠΎΠΎΠ±Ρ€Π°ΡœΠ°Ρ˜ ΡˆΡ‚ΠΎ ΠΌΠΈΠ½ΡƒΠ²Π° Π½ΠΈΠ· ΠΊΡ€Π°Ρ˜Π½Π°Ρ‚Π° Ρ‚ΠΎΡ‡ΠΊΠ° Π½Π° Π΄ΠΎΠΌΠ°ΡœΠΈΠ½ΠΎΡ‚, Π²ΠΊΠ»ΡƒΡ‡ΡƒΠ²Π°Ρ˜ΡœΠΈ Π³ΠΎ ΠΈ ΡΠΎΠΎΠ±Ρ€Π°ΡœΠ°Ρ˜ΠΎΡ‚ ΡˆΡ‚ΠΎ ќС Π±ΠΈΠ΄Π΅ прослСдСн ΠΎΠ΄ Π΄ΠΎΠΌΠ°ΡœΠΈΠ½ΠΎΡ‚. Ова Π³ΠΎ Π²ΠΊΠ»ΡƒΡ‡ΡƒΠ²Π° ΡΠΎΠΎΠ±Ρ€Π°ΡœΠ°Ρ˜ΠΎΡ‚ прослСдСн Π΄ΠΎ Π»ΠΎΠΊΠ°Π»Π½Π°Ρ‚Π° ΠΏΠΎΠ΄Π»ΠΎΠ³Π° ΠΈΠ»ΠΈ Π½Π° ΠΊΠΎΠ΅ Π±ΠΈΠ»ΠΎ Π΄Ρ€ΡƒΠ³ΠΎ мСсто Π½Π° ΠΌΡ€Π΅ΠΆΠ°Ρ‚Π°. Calico Π±Π°Ρ€Π° ΠΎΠ²Π°Π° поставка Π΄Π° Π±ΠΈΠ΄Π΅ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΠ΅Π½Π° Π·Π° ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ ΠΊΠΎΠΈ користат PreDNAT ΠΈ Π½Π΅ сС слСдат, Π²ΠΈΠ΄Π΅Ρ‚Π΅ Π³ΠΈ слСднитС Π΄Π΅Π»ΠΎΠ²ΠΈ. Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»Π½ΠΎ, ApplyOnForward ΠΌΠΎΠΆΠ΅ Π΄Π° сС користи Π·Π° слСдСњС Π½Π° ΡΠΎΠΎΠ±Ρ€Π°ΡœΠ°Ρ˜ΠΎΡ‚ Π½Π° Π΄ΠΎΠΌΠ°ΡœΠΈΠ½ΠΎΡ‚ Π²ΠΎ случаи ΠΊΠΎΠ³Π° сС користи Π²ΠΈΡ€Ρ‚ΡƒΠ΅Π»Π΅Π½ Ρ€ΡƒΡ‚Π΅Ρ€ ΠΈΠ»ΠΈ софтвСр NAT.

Π—Π°Π±Π΅Π»Π΅ΠΆΠ΅Ρ‚Π΅ Π΄Π΅ΠΊΠ° Π°ΠΊΠΎ Ρ‚Ρ€Π΅Π±Π° Π΄Π° ја ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚Π΅ истата ΠΌΡ€Π΅ΠΆΠ½Π° ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ° ΠΈ Π·Π° процСситС Π½Π° Π΄ΠΎΠΌΠ°ΡœΠΈΠ½ΠΎΡ‚ ΠΈ Π·Π° ΠΏΠΎΠ΄Π»ΠΎΠ³ΠΈΡ‚Π΅, Ρ‚ΠΎΠ³Π°Ρˆ Π½Π΅ Ρ‚Ρ€Π΅Π±Π° Π΄Π° ја користитС ΠΎΠΏΡ†ΠΈΡ˜Π°Ρ‚Π° ApplyOnForward. Π‘Γ¨ ΡˆΡ‚ΠΎ Ρ‚Ρ€Π΅Π±Π° Π΄Π° Π½Π°ΠΏΡ€Π°Π²ΠΈΡ‚Π΅ Π΅ Π΄Π° ΠΊΡ€Π΅ΠΈΡ€Π°Ρ‚Π΅ ΠΎΠ·Π½Π°ΠΊΠ° Π·Π° ΠΏΠΎΡ‚Ρ€Π΅Π±Π½Π°Ρ‚Π° Ρ‚ΠΎΡ‡ΠΊΠ° Π½Π° Π΄ΠΎΠΌΠ°ΡœΠΈΠ½ΠΎΡ‚ ΠΈ ΠΊΡ€Π°Ρ˜Π½Π°Ρ‚Π° Ρ‚ΠΎΡ‡ΠΊΠ° Π½Π° ΠΎΠ±Π΅ΠΌΠΎΡ‚ Π½Π° Ρ€Π°Π±ΠΎΡ‚Π° (ΠΏΠΎΠ΄). Calico Π΅ Π΄ΠΎΠ²ΠΎΠ»Π½ΠΎ ΠΏΠ°ΠΌΠ΅Ρ‚Π΅Π½ Π·Π° Π΄Π° спровСдС ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ° заснована Π½Π° Π΅Ρ‚ΠΈΠΊΠ΅Ρ‚ΠΈ, Π±Π΅Π· ΠΎΠ³Π»Π΅Π΄ Π½Π° Ρ‚ΠΈΠΏΠΎΡ‚ Π½Π° ΠΊΡ€Π°Ρ˜Π½Π°Ρ‚Π° Ρ‚ΠΎΡ‡ΠΊΠ° (домаќинска Ρ‚ΠΎΡ‡ΠΊΠ° ΠΈΠ»ΠΈ ΠΎΠ±Π΅ΠΌ Π½Π° Ρ€Π°Π±ΠΎΡ‚Π°).

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

Π’ΠΎ Kubernetes, ΠΏΠΎΡ€Ρ‚ΠΈΡ‚Π΅ Π½Π° Π΅Π½Ρ‚ΠΈΡ‚Π΅Ρ‚ΠΈΡ‚Π΅ Π½Π° услугата ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΠΈΠ·Π»ΠΎΠΆΠ°Ρ‚ Π½Π°Π΄Π²ΠΎΡ€Π΅ΡˆΠ½ΠΎ со ΠΊΠΎΡ€ΠΈΡΡ‚Π΅ΡšΠ΅ Π½Π° ΠΎΠΏΡ†ΠΈΡ˜Π°Ρ‚Π° NodePorts ΠΈΠ»ΠΈ, ΠΎΠΏΡ†ΠΈΠΎΠ½Π°Π»Π½ΠΎ (ΠΊΠΎΠ³Π° сС користи Calico), со Ρ€Π΅ΠΊΠ»Π°ΠΌΠΈΡ€Π°ΡšΠ΅ со ΠΊΠΎΡ€ΠΈΡΡ‚Π΅ΡšΠ΅ Π½Π° ΠΎΠΏΡ†ΠΈΠΈΡ‚Π΅ Cluster IP ΠΈΠ»ΠΈ Π½Π°Π΄Π²ΠΎΡ€Π΅ΡˆΠ½ΠΈ IP. Kube-прокси Π³ΠΎ балансира Π΄ΠΎΡ˜Π΄ΠΎΠ²Π½ΠΈΠΎΡ‚ ΡΠΎΠΎΠ±Ρ€Π°ΡœΠ°Ρ˜ ΠΏΠΎΠ²Ρ€Π·Π°Π½ со услугата Π΄ΠΎ ΠΏΠΎΠ΄Π»ΠΎΠ³ΠΈΡ‚Π΅ Π½Π° соодвСтната услуга ΠΊΠΎΡ€ΠΈΡΡ‚Π΅Ρ˜ΡœΠΈ DNAT. Π‘ΠΎ ΠΎΠ³Π»Π΅Π΄ Π½Π° ΠΎΠ²Π°, ΠΊΠ°ΠΊΠΎ Π³ΠΈ спровСдуватС ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈΡ‚Π΅ Π·Π° ΡΠΎΠΎΠ±Ρ€Π°ΡœΠ°Ρ˜ ΡˆΡ‚ΠΎ Π΄ΠΎΠ°Ρ“Π° ΠΏΡ€Π΅ΠΊΡƒ NodePorts? Π—Π° Π΄Π° сС осигури Π΄Π΅ΠΊΠ° ΠΎΠ²ΠΈΠ΅ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ сС ΠΏΡ€ΠΈΠΌΠ΅Π½ΡƒΠ²Π°Π°Ρ‚ ΠΏΡ€Π΅Π΄ ΡΠΎΠΎΠ±Ρ€Π°ΡœΠ°Ρ˜ΠΎΡ‚ Π΄Π° Π±ΠΈΠ΄Π΅ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π΅Π½ ΠΎΠ΄ DNAT (ΡˆΡ‚ΠΎ Π΅ ΠΌΠ°ΠΏΠΈΡ€Π°ΡšΠ΅ ΠΏΠΎΠΌΠ΅Ρ“Ρƒ домаќин:ΠΏΠΎΡ€Ρ‚ ΠΈ соодвСтната услуга), Calico ΠΎΠ±Π΅Π·Π±Π΅Π΄ΡƒΠ²Π° ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Π°Ρ€ Π·Π° Π³Π»ΠΎΠ±Π°Π»Π½Π°Ρ‚Π°ΠœΡ€Π΅ΠΆΠ½Π°ΠŸΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ° Π½Π°Ρ€Π΅Ρ‡Π΅Π½ β€žpreDNAT: Ρ‚ΠΎΡ‡Π½ΠΎβ€œ.

Кога Π΅ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΠ΅Π½ΠΎ pre-DNAT, ΠΎΠ²ΠΈΠ΅ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ сС ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€Π°Π½ΠΈ Π²ΠΎ (4) Π½Π° Π΄ΠΈΡ˜Π°Π³Ρ€Π°ΠΌΠΎΡ‚ - Π²ΠΎ Ρ‚Π°Π±Π΅Π»Π°Ρ‚Π° Π·Π° ΠΌΠ°Π³Π»ΠΈ Π½Π° Π»Π°Π½Π΅Ρ†ΠΎΡ‚ PREROUTING - нСпосрСдно ΠΏΡ€Π΅Π΄ DNAT. ОвдС Π½Π΅ сС слСди Π²ΠΎΠΎΠ±ΠΈΡ‡Π°Π΅Π½ΠΈΠΎΡ‚ рСдослСд Π½Π° ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ, бидСјќи ΠΏΡ€ΠΈΠΌΠ΅Π½Π°Ρ‚Π° Π½Π° ΠΎΠ²ΠΈΠ΅ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ сС случува ΠΌΠ½ΠΎΠ³Ρƒ ΠΏΠΎΡ€Π°Π½ΠΎ Π²ΠΎ ΠΏΠ°Ρ‚Π΅ΠΊΠ°Ρ‚Π° Π·Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° ΡΠΎΠΎΠ±Ρ€Π°ΡœΠ°Ρ˜ΠΎΡ‚. Π‘Π΅ΠΏΠ°ΠΊ, ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈΡ‚Π΅ Π½Π° preDNAT Π³ΠΎ ΠΏΠΎΡ‡ΠΈΡ‚ΡƒΠ²Π°Π°Ρ‚ рСдослСдот Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Π½Π° ΠΌΠ΅Ρ“Ρƒ сСбС.

Кога ΠΊΡ€Π΅ΠΈΡ€Π°Ρ‚Π΅ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ со ΠΏΡ€Π΅Π΄-DNAT, Π²Π°ΠΆΠ½ΠΎ Π΅ Π΄Π° Π±ΠΈΠ΄Π΅Ρ‚Π΅ Π²Π½ΠΈΠΌΠ°Ρ‚Π΅Π»Π½ΠΈ Π·Π° ΡΠΎΠΎΠ±Ρ€Π°ΡœΠ°Ρ˜ΠΎΡ‚ ΡˆΡ‚ΠΎ сакатС Π΄Π° Π³ΠΎ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΈΡ‚Π΅ ΠΈ Π΄Π° Π΄ΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚Π΅ мнозинството Π΄Π° Π±ΠΈΠ΄Π΅ ΠΎΡ‚Ρ„Ρ€Π»Π΅Π½ΠΎ. Π‘ΠΎΠΎΠ±Ρ€Π°ΡœΠ°Ρ˜ΠΎΡ‚ ΠΎΠ·Π½Π°Ρ‡Π΅Π½ ΠΊΠ°ΠΊΠΎ β€žΠ΄ΠΎΠ·Π²ΠΎΠ»ΠΈβ€œ Π²ΠΎ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ°Ρ‚Π° Π·Π° ΠΏΡ€Π΅Π΄-DNAT вСќС Π½Π΅ΠΌΠ° Π΄Π° сС ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡƒΠ²Π° ΠΎΠ΄ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ°Ρ‚Π° Π½Π° хостСнтната Ρ‚ΠΎΡ‡ΠΊΠ°, Π΄ΠΎΠ΄Π΅ΠΊΠ° ΡΠΎΠΎΠ±Ρ€Π°ΡœΠ°Ρ˜ΠΎΡ‚ ΡˆΡ‚ΠΎ Π½Π΅ ја исполнува ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ°Ρ‚Π° ΠΏΡ€Π΅Π΄ ДНАВ ќС ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈ Π½ΠΈΠ· прСостанатитС ΡΠΈΠ½ΡŸΠΈΡ€ΠΈ.
Calico Π³ΠΎ Π½Π°ΠΏΡ€Π°Π²ΠΈ Π·Π°Π΄ΠΎΠ»ΠΆΠΈΡ‚Π΅Π»Π½ΠΎ Π΄Π° сС ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΠΈ ΠΎΠΏΡ†ΠΈΡ˜Π°Ρ‚Π° applyOnForward ΠΊΠΎΠ³Π° сС користи preDNAT, бидСјќи ΠΏΠΎ Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ†ΠΈΡ˜Π° сè ΡƒΡˆΡ‚Π΅ Π½Π΅ Π΅ ΠΈΠ·Π±Ρ€Π°Π½Π° Π΄Π΅ΡΡ‚ΠΈΠ½Π°Ρ†ΠΈΡ˜Π°Ρ‚Π° Π½Π° ΡΠΎΠΎΠ±Ρ€Π°ΡœΠ°Ρ˜ΠΎΡ‚. Π‘ΠΎΠΎΠ±Ρ€Π°ΡœΠ°Ρ˜ΠΎΡ‚ ΠΌΠΎΠΆΠ΅ Π΄Π° сС насочи ΠΊΠΎΠ½ процСсот Π½Π° Π΄ΠΎΠΌΠ°ΡœΠΈΠ½ΠΎΡ‚, ΠΈΠ»ΠΈ ΠΌΠΎΠΆΠ΅ Π΄Π° сС прСнасочи Π΄ΠΎ ΠΏΠΎΠ΄ ΠΈΠ»ΠΈ Π΄Ρ€ΡƒΠ³ јазол.

НСслСдСна ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ° (5)

ΠœΡ€Π΅ΠΆΠΈΡ‚Π΅ ΠΈ Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΠΈΡ‚Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΈΠΌΠ°Π°Ρ‚ Π³ΠΎΠ»Π΅ΠΌΠΈ Ρ€Π°Π·Π»ΠΈΠΊΠΈ Π²ΠΎ ΠΎΠ΄Π½Π΅ΡΡƒΠ²Π°ΡšΠ΅Ρ‚ΠΎ. Π’ΠΎ Π½Π΅ΠΊΠΎΠΈ СкстрСмни случаи, Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΠΈΡ‚Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π°Π°Ρ‚ ΠΌΠ½ΠΎΠ³Ρƒ ΠΊΡ€Π°Ρ‚ΠΊΠΎΡ‚Ρ€Π°Ρ˜Π½ΠΈ врски. Ова ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΏΡ€Π΅Π΄ΠΈΠ·Π²ΠΈΠΊΠ° conntrack (Π³Π»Π°Π²Π½Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° Π½Π° ΠΌΡ€Π΅ΠΆΠ½ΠΈΠΎΡ‚ оџак Linux) Π΄Π° останС Π±Π΅Π· ΠΌΠ΅ΠΌΠΎΡ€ΠΈΡ˜Π°. Π’Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π°Π»Π½ΠΎ, Π·Π° Π΄Π° Π³ΠΈ ΠΈΠ·Π²Ρ€ΡˆΠΈΡ‚Π΅ ΠΎΠ²ΠΈΠ΅ Ρ‚ΠΈΠΏΠΎΠ²ΠΈ Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π½Π° Linux, ќС Ρ‚Ρ€Π΅Π±Π° Ρ€Π°Ρ‡Π½ΠΎ Π΄Π° Π³ΠΎ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°Ρ‚Π΅ ΠΈΠ»ΠΈ ΠΎΠ½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠΈΡ‚Π΅ contrack, ΠΈΠ»ΠΈ Π΄Π° Π½Π°ΠΏΠΈΡˆΠ΅Ρ‚Π΅ ΠΏΡ€Π°Π²ΠΈΠ»Π° Π½Π° iptables Π·Π° Π΄Π° Π³ΠΎ Π·Π°ΠΎΠ±ΠΈΠΊΠΎΠ»ΠΈΡ‚Π΅ conntrack. НСслСдСната ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ° Π²ΠΎ Calico Π΅ поСдноставна ΠΈ поСфикасна ΠΎΠΏΡ†ΠΈΡ˜Π° Π΄ΠΎΠΊΠΎΠ»ΠΊΡƒ сакатС Π΄Π° Π³ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΡƒΠ²Π°Ρ‚Π΅ врскитС ΡˆΡ‚ΠΎ Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ±Ρ€Π·ΠΎ. На ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π°ΠΊΠΎ користитС масивни мСмкСш ΠΈΠ»ΠΈ ΠΊΠ°ΠΊΠΎ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»Π½Π° ΠΌΠ΅Ρ€ΠΊΠ° Π½Π° Π·Π°ΡˆΡ‚ΠΈΡ‚Π° ΠΎΠ΄ DDOS.

ΠŸΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ˜ Π³ΠΎ ΠΎΠ²Π° Π±Π»ΠΎΠ³ пост (Или Π½Π°ΡˆΠΈΠΎΡ‚ ΠΏΡ€Π΅Π²ΠΎΠ΄) Π·Π° повСќС ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ, Π²ΠΊΠ»ΡƒΡ‡ΠΈΡ‚Π΅Π»Π½ΠΎ ΠΈ тСстови Π·Π° ΠΈΠ·Π²Π΅Π΄Π±Π° со ΠΊΠΎΡ€ΠΈΡΡ‚Π΅ΡšΠ΅ Π½Π° ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ°Ρ‚Π° ΡˆΡ‚ΠΎ Π½Π΅ Π΅ слСдСна.

Кога ќС ја поставитС ΠΎΠΏΡ†ΠΈΡ˜Π°Ρ‚Π° β€ždoNotTrack: trueβ€œ Π²ΠΎ Calico globalNetworkPolicy, Ρ‚Π°Π° станува **нСслСдСна** ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ° ΠΈ сС ΠΏΡ€ΠΈΠΌΠ΅Π½ΡƒΠ²Π° ΠΌΠ½ΠΎΠ³Ρƒ Ρ€Π°Π½ΠΎ Π²ΠΎ Π»ΠΈΠ½ΠΈΡ˜Π°Ρ‚Π° Π·Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ Π½Π° Linux. Π“Π»Π΅Π΄Π°Ρ˜ΡœΠΈ Π³ΠΎ Π΄ΠΈΡ˜Π°Π³Ρ€Π°ΠΌΠΎΡ‚ ΠΏΠΎΠ³ΠΎΡ€Π΅, Π½Π΅ΠΏΡ€ΠΎΠ²Π΅Ρ€Π΅Π½ΠΈΡ‚Π΅ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ сС ΠΏΡ€ΠΈΠΌΠ΅Π½ΡƒΠ²Π°Π°Ρ‚ Π²ΠΎ ΡΠΈΠ½ΡŸΠΈΡ€ΠΈΡ‚Π΅ PREROUTING ΠΈ OUTPUT Π²ΠΎ Π½Π΅ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π΅Π½Π°Ρ‚Π° Ρ‚Π°Π±Π΅Π»Π° ΠΏΡ€Π΅Π΄ Π΄Π° Π·Π°ΠΏΠΎΡ‡Π½Π΅ ΡΠ»Π΅Π΄Π΅ΡšΠ΅Ρ‚ΠΎ Π½Π° ΠΊΠΎΠ½Π΅ΠΊΡ†ΠΈΡ˜Π°Ρ‚Π° (conntrack). Кога ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΡ‚ Π΅ Π΄ΠΎΠ·Π²ΠΎΠ»Π΅Π½ со ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ°Ρ‚Π° Π·Π° нСслСдСна, Ρ‚ΠΎΡ˜ Π΅ ΠΎΠ·Π½Π°Ρ‡Π΅Π½ Π΄Π° Π³ΠΎ ΠΎΠ½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠΈ ΡΠ»Π΅Π΄Π΅ΡšΠ΅Ρ‚ΠΎ Π½Π° врската Π·Π° Ρ‚ΠΎΡ˜ ΠΏΠ°ΠΊΠ΅Ρ‚. Π’ΠΎΠ° Π·Π½Π°Ρ‡ΠΈ:

  • НСслСдСната ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ° сС ΠΏΡ€ΠΈΠΌΠ΅Π½ΡƒΠ²Π° Π½Π° Π±Π°Π·Π° ΠΏΠΎ ΠΏΠ°ΠΊΠ΅Ρ‚. НС постои ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ‚ Π½Π° ΠΏΠΎΠ²Ρ€Π·ΡƒΠ²Π°ΡšΠ΅ (ΠΈΠ»ΠΈ ΠΏΡ€ΠΎΡ‚ΠΎΠΊ). НСдостатокот Π½Π° врски ΠΈΠΌΠ° Π½Π΅ΠΊΠΎΠ»ΠΊΡƒ Π²Π°ΠΆΠ½ΠΈ послСдици:
  • Ако сакатС Π΄Π° Π΄ΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚Π΅ ΡΠΎΠΎΠ±Ρ€Π°ΡœΠ°Ρ˜ со Π±Π°Ρ€Π°ΡšΠ° ΠΈ ΠΎΠ΄Π³ΠΎΠ²ΠΎΡ€, Π²ΠΈ Ρ‚Ρ€Π΅Π±Π° ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ ΠΈ Π·Π° Π²Π»Π΅Π·Π΅Π½ ΠΈ Π·Π° ΠΈΠ·Π»Π΅Π· (бидСјќи Calico ΠΎΠ±ΠΈΡ‡Π½ΠΎ користи conntrack Π·Π° Π΄Π° Π³ΠΎ ΠΎΠ·Π½Π°Ρ‡ΠΈ ΡΠΎΠΎΠ±Ρ€Π°ΡœΠ°Ρ˜ΠΎΡ‚ Π·Π° ΠΎΠ΄Π³ΠΎΠ²ΠΎΡ€ ΠΊΠ°ΠΊΠΎ Π΄ΠΎΠ·Π²ΠΎΠ»Π΅Π½).
  • НСслСдСната ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ° Π½Π΅ Ρ€Π°Π±ΠΎΡ‚ΠΈ Π·Π° Ρ€Π°Π±ΠΎΡ‚Π½ΠΈΡ‚Π΅ ΠΎΠΏΡ‚ΠΎΠ²Π°Ρ€ΡƒΠ²Π°ΡšΠ° Π½Π° Kubernetes (pods), бидСјќи Π²ΠΎ овој ΡΠ»ΡƒΡ‡Π°Ρ˜ Π½Π΅ постои Π½Π°Ρ‡ΠΈΠ½ Π΄Π° сС слСди ΠΏΠΎΡ˜Π΄ΠΎΠ²Π½Π°Ρ‚Π° врска ΠΎΠ΄ ΠΏΠΎΠ΄Π»ΠΎΠ³Π°Ρ‚Π°.
  • NAT Π½Π΅ Ρ€Π°Π±ΠΎΡ‚ΠΈ ΠΏΡ€Π°Π²ΠΈΠ»Π½ΠΎ со нСслСдСни ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ (бидСјќи ΠΊΠ΅Ρ€Π½Π΅Π»ΠΎΡ‚ Π³ΠΎ складира NAT ΠΌΠ°ΠΏΠΈΡ€Π°ΡšΠ΅Ρ‚ΠΎ Π²ΠΎ conntrack).
  • Кога ΠΏΠΎΠΌΠΈΠ½ΡƒΠ²Π°Ρ‚Π΅ Π½ΠΈΠ· ΠΏΡ€Π°Π²ΠΈΠ»ΠΎΡ‚ΠΎ β€žΠ΄ΠΎΠ·Π²ΠΎΠ»ΠΈ ΡΠΈΡ‚Π΅β€œ Π²ΠΎ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ°Ρ‚Π° Π·Π° нСслСдСно, ситС ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ ќС Π±ΠΈΠ΄Π°Ρ‚ ΠΎΠ·Π½Π°Ρ‡Π΅Π½ΠΈ ΠΊΠ°ΠΊΠΎ Π½Π΅ΠΏΡ€ΠΎΠ²Π΅Ρ€Π΅Π½ΠΈ. Ова рСчиси сСкогаш Π½Π΅ Π΅ ΠΎΠ½Π° ΡˆΡ‚ΠΎ Π³ΠΎ сакатС, ΠΏΠ° Π·Π°Ρ‚ΠΎΠ° Π΅ Π²Π°ΠΆΠ½ΠΎ Π΄Π° Π±ΠΈΠ΄Π΅Ρ‚Π΅ ΠΌΠ½ΠΎΠ³Ρƒ сСлСктивни Π·Π° ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈΡ‚Π΅ Π΄ΠΎΠ·Π²ΠΎΠ»Π΅Π½ΠΈ со нСслСдСнитС ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ (ΠΈ Π΄Π° Π΄ΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚Π΅ Π½Π°Ρ˜Π³ΠΎΠ»Π΅ΠΌΠΈΠΎΡ‚ Π΄Π΅Π» ΠΎΠ΄ ΡΠΎΠΎΠ±Ρ€Π°ΡœΠ°Ρ˜ΠΎΡ‚ Π΄Π° ΠΏΠΎΠΌΠΈΠ½ΡƒΠ²Π° Π½ΠΈΠ· Π½ΠΎΡ€ΠΌΠ°Π»Π½ΠΈ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ Π·Π° слСдСњС).
  • НСслСдСнитС ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ сС ΠΏΡ€ΠΈΠΌΠ΅Π½ΡƒΠ²Π°Π°Ρ‚ Π½Π° самиот ΠΏΠΎΡ‡Π΅Ρ‚ΠΎΠΊ Π½Π° Ρ†Π΅Π²ΠΊΠΎΠ²ΠΎΠ΄ΠΎΡ‚ Π·Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ. Ова Π΅ ΠΌΠ½ΠΎΠ³Ρƒ Π²Π°ΠΆΠ½ΠΎ Π΄Π° сС Ρ€Π°Π·Π±Π΅Ρ€Π΅ ΠΊΠΎΠ³Π° сС ΠΊΡ€Π΅ΠΈΡ€Π°Π°Ρ‚ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ Π½Π° Calico. МоТС Π΄Π° ΠΈΠΌΠ°Ρ‚Π΅ полиса Π·Π° pod со Ρ€Π΅Π΄:1 ΠΈ нСпрослСдСна ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ° со Ρ€Π΅Π΄:1000. НСма Π΄Π° Π±ΠΈΠ΄Π΅ Π²Π°ΠΆΠ½ΠΎ. ΠŸΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ°Ρ‚Π° Untracked ќС сС ΠΏΡ€ΠΈΠΌΠ΅Π½ΡƒΠ²Π° ΠΏΡ€Π΅Π΄ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎΡ‚ΠΎ Π·Π° ΠΏΠΎΠ΄Π»ΠΎΠ³Π°Ρ‚Π°. НСслСдСнитС ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ Π³ΠΎ ΠΏΠΎΡ‡ΠΈΡ‚ΡƒΠ²Π°Π°Ρ‚ Π½Π°Π»ΠΎΠ³ΠΎΡ‚ Π·Π° ΠΈΠ·Π²Ρ€ΡˆΡƒΠ²Π°ΡšΠ΅ само ΠΌΠ΅Ρ“Ρƒ сСбС.

Π‘ΠΈΠ΄Π΅Ρ˜ΡœΠΈ Π΅Π΄Π½Π° ΠΎΠ΄ Ρ†Π΅Π»ΠΈΡ‚Π΅ Π½Π° ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ°Ρ‚Π° doNotTrack Π΅ Π΄Π° ја спровСдС ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ°Ρ‚Π° ΠΌΠ½ΠΎΠ³Ρƒ Ρ€Π°Π½ΠΎ Π²ΠΎ Π»ΠΈΠ½ΠΈΡ˜Π°Ρ‚Π° Π·Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ Π½Π° Linux, Calico Π³ΠΎ ΠΏΡ€Π°Π²ΠΈ Π·Π°Π΄ΠΎΠ»ΠΆΠΈΡ‚Π΅Π»Π½ΠΎ Π½Π°Π·Π½Π°Ρ‡ΡƒΠ²Π°ΡšΠ΅Ρ‚ΠΎ Π½Π° ΠΎΠΏΡ†ΠΈΡ˜Π°Ρ‚Π° applyOnForward ΠΊΠΎΠ³Π° сС користи doNotTrack. ΠžΡΠ²Ρ€Π½ΡƒΠ²Π°Ρ˜ΡœΠΈ сС Π½Π° Π΄ΠΈΡ˜Π°Π³Ρ€Π°ΠΌΠΎΡ‚ Π·Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ, Π·Π°Π±Π΅Π»Π΅ΠΆΠ΅Ρ‚Π΅ Π΄Π΅ΠΊΠ° ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ°Ρ‚Π° Π·Π° untracked(5) сС ΠΏΡ€ΠΈΠΌΠ΅Π½ΡƒΠ²Π° ΠΏΡ€Π΅Π΄ ΠΊΠ°ΠΊΠ²ΠΈ Π±ΠΈΠ»ΠΎ ΠΎΠ΄Π»ΡƒΠΊΠΈ Π·Π° Ρ€ΡƒΡ‚ΠΈΡ€Π°ΡšΠ΅. Π‘ΠΎΠΎΠ±Ρ€Π°ΡœΠ°Ρ˜ΠΎΡ‚ ΠΌΠΎΠΆΠ΅ Π΄Π° сС насочи ΠΊΠΎΠ½ процСсот Π½Π° Π΄ΠΎΠΌΠ°ΡœΠΈΠ½ΠΎΡ‚, ΠΈΠ»ΠΈ ΠΌΠΎΠΆΠ΅ Π΄Π° сС прСнасочи Π΄ΠΎ ΠΏΠΎΠ΄ ΠΈΠ»ΠΈ Π΄Ρ€ΡƒΠ³ јазол.

Π Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ΠΈΡ‚Π΅ ΠΎΠ΄

Π“ΠΈ Ρ€Π°Π·Π³Π»Π΅Π΄Π°Π²ΠΌΠ΅ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈΡ‚Π΅ ΠΎΠΏΡ†ΠΈΠΈ Π·Π° ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ° (Host endpoint, ApplyOnForward, preDNAT ΠΈ Untracked) Π²ΠΎ Calico ΠΈ ΠΊΠ°ΠΊΠΎ Ρ‚ΠΈΠ΅ сС ΠΏΡ€ΠΈΠΌΠ΅Π½ΡƒΠ²Π°Π°Ρ‚ ΠΏΠΎ ΠΏΠ°Ρ‚Π΅ΠΊΠ°Ρ‚Π° Π·Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ. Π Π°Π·Π±ΠΈΡ€Π°ΡšΠ΅Ρ‚ΠΎ ΠΊΠ°ΠΊΠΎ Ρ‚ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½ΠΈΡ€Π°Π°Ρ‚ ΠΏΠΎΠΌΠ°Π³Π° Π²ΠΎ Ρ€Π°Π·Π²ΠΎΡ˜ΠΎΡ‚ Π½Π° Π΅Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΈ ΠΈ Π±Π΅Π·Π±Π΅Π΄Π½ΠΈ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ. Π‘ΠΎ Calico ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° користитС Π³Π»ΠΎΠ±Π°Π»Π½Π° ΠΌΡ€Π΅ΠΆΠ½Π° ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ° ΡˆΡ‚ΠΎ сС однСсува Π½Π° Π΅Ρ‚ΠΈΠΊΠ΅Ρ‚Π° (Π³Ρ€ΡƒΠΏΠ° јазли ΠΈ ΠΏΠΎΠ΄Π»ΠΎΠ³ΠΈ) ΠΈ Π΄Π° ΠΏΡ€ΠΈΠΌΠ΅Π½ΡƒΠ²Π°Ρ‚Π΅ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ со Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈ. Ова ΠΈΠΌ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡƒΠ²Π° Π½Π° профСсионалцитС Π·Π° бСзбСдност ΠΈ ΠΌΡ€Π΅ΠΆΠ΅Π½ дизајн лСсно Π΄Π° Π·Π°ΡˆΡ‚ΠΈΡ‚Π°Ρ‚ β€žΡΓ¨β€œ (Π²ΠΈΠ΄ΠΎΠ²ΠΈ Π½Π° ΠΊΡ€Π°Ρ˜Π½Π° Ρ‚ΠΎΡ‡ΠΊΠ°) одСднаш ΠΊΠΎΡ€ΠΈΡΡ‚Π΅Ρ˜ΡœΠΈ СдинствСн јазик Π½Π° ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ°Ρ‚Π° со ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈΡ‚Π΅ Π½Π° Calico.

ΠŸΡ€ΠΈΠ·Π½Π°Π½ΠΈΠ΅: Π‘ΠΈ сакал Π΄Π° сС Π·Π°Π±Π»Π°Π³ΠΎΠ΄Π°Ρ€Π°ΠΌ Π¨ΠΎΠ½ ΠšΡ€Π°ΠΌΠΏΡ‚ΠΎΠ½ ΠΈ АлСкса ΠŸΠΎΠ»ΠΈΡ‚Π° Π·Π° Π½ΠΈΠ²Π½ΠΈΠΎΡ‚ ΠΏΡ€Π΅Π³Π»Π΅Π΄ ΠΈ Π²Ρ€Π΅Π΄Π½ΠΈ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ.

Π˜Π·Π²ΠΎΡ€: www.habr.com

Π”ΠΎΠ΄Π°Π΄Π΅Ρ‚Π΅ ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€