рдХреНрдпрд╛рд▓рд┐рдХреЛрд╕рдБрдЧ рдиреЗрдЯрд╡рд░реНрдХ рдиреАрддрд┐ рдкреНрд░рд╡рд░реНрддрди рд╡рд┐рдХрд▓реНрдкрд╣рд░реВ рдмреБрдЭреНрджреИ

рдХреНрдпрд╛рд▓рд┐рдХреЛрд╕рдБрдЧ рдиреЗрдЯрд╡рд░реНрдХ рдиреАрддрд┐ рдкреНрд░рд╡рд░реНрддрди рд╡рд┐рдХрд▓реНрдкрд╣рд░реВ рдмреБрдЭреНрджреИ

рдХреНрдпрд╛рд▓рд┐рдХреЛ рдиреЗрдЯрд╡рд░реНрдХ рдкреНрд▓рдЧрдЗрдирд▓реЗ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рд╣реЛрд╕реНрдЯрд╣рд░реВ, рднрд░реНрдЪреБрдЕрд▓ рдореЗрд╕рд┐рдирд╣рд░реВ рд░ рдкреЛрдбрд╣рд░реВ рд╕реБрд░рдХреНрд╖рд┐рдд рдЧрд░реНрди рдПрдХреАрдХреГрдд рд╡рд╛рдХреНрдп рд░рдЪрдирд╛рдХреЛ рд╕рд╛рде рдиреЗрдЯрд╡рд░реНрдХ рдиреАрддрд┐рд╣рд░реВрдХреЛ рд╡рд┐рд╕реНрддреГрдд рджрд╛рдпрд░рд╛ рдкреНрд░рджрд╛рди рдЧрд░реНрджрдЫред рдпреА рдиреАрддрд┐рд╣рд░реВ рдирд╛рдо рд╕реНрдерд╛рди рднрд┐рддреНрд░ рд▓рд╛рдЧреВ рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫ рд╡рд╛ рд▓рд╛рдЧреВ рд╣реБрдиреЗ рд╡рд┐рд╢реНрд╡рд╡реНрдпрд╛рдкреА рдиреЗрдЯрд╡рд░реНрдХ рдиреАрддрд┐рд╣рд░реВ рд╣реБрди рд╕рдХреНрдЫрдиреН рд╣реЛрд╕реНрдЯ рдЕрдиреНрддреНрдп рдмрд┐рдиреНрджреБ (рд╣реЛрд╕реНрдЯрдорд╛ рд╕реАрдзреИ рдЪрд▓рд┐рд░рд╣реЗрдХреЛ рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╣рд░реВ рд╕реБрд░рдХреНрд╖рд┐рдд рдЧрд░реНрди - рд╣реЛрд╕реНрдЯ рд╕рд░реНрднрд░ рд╡рд╛ рднрд░реНрдЪреБрдЕрд▓ рдореЗрд╕рд┐рди рд╣реБрди рд╕рдХреНрдЫ) рд╡рд╛ рдХрд╛рд░реНрдпрднрд╛рд░ рдЕрдиреНрддреНрдп рдмрд┐рдиреНрджреБ (рдХрдиреНрдЯреЗрдирд░ рд╡рд╛ рд╣реЛрд╕реНрдЯ рдЧрд░рд┐рдПрдХреЛ рднрд░реНрдЪреБрдЕрд▓ рдореЗрд╕рд┐рдирд╣рд░реВрдорд╛ рдЪрд▓рд┐рд░рд╣реЗрдХреЛ рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╣рд░реВ рд╕реБрд░рдХреНрд╖рд┐рдд рдЧрд░реНрди)ред рдХреНрдпрд╛рд▓рд┐рдХреЛ рдиреАрддрд┐рд╣рд░реВрд▓реЗ рддрдкрд╛рдИрдВрд▓рд╛рдИ preDNAT, unracked, рд░ applyOnForward рдЬрд╕реНрддрд╛ рд╡рд┐рдХрд▓реНрдкрд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдкреНрдпрд╛рдХреЗрдЯрдХреЛ рдорд╛рд░реНрдЧрдорд╛ рд╡рд┐рднрд┐рдиреНрди рдмрд┐рдиреНрджреБрд╣рд░реВрдорд╛ рд╕реБрд░рдХреНрд╖рд╛ рдЙрдкрд╛рдпрд╣рд░реВ рд▓рд╛рдЧреВ рдЧрд░реНрди рдЕрдиреБрдорддрд┐ рджрд┐рдиреНрдЫред рдпреА рд╡рд┐рдХрд▓реНрдкрд╣рд░реВрд▓реЗ рдХрд╕рд░реА рдХрд╛рдо рдЧрд░реНрдЫ рднрдиреНрдиреЗ рдХреБрд░рд╛ рдмреБрдЭреНрджрд╛ рддрдкрд╛рдИрдВрдХреЛ рд╕рдордЧреНрд░ рдкреНрд░рдгрд╛рд▓реАрдХреЛ рд╕реБрд░рдХреНрд╖рд╛ рд░ рдХрд╛рд░реНрдпрд╕рдореНрдкрд╛рджрди рд╕реБрдзрд╛рд░ рдЧрд░реНрди рдорджреНрджрдд рдЧрд░реНрди рд╕рдХреНрдЫред рдпреЛ рд▓реЗрдЦрд▓реЗ рдкреНрдпрд╛рдХреЗрдЯ рдкреНрд░рд╢реЛрдзрди рдорд╛рд░реНрдЧрд╣рд░реВ (iptabels рдЪреЗрдирд╣рд░реВ) рдорд╛ рдХреЗ рд╣реБрдиреНрдЫ рднрдиреНрдиреЗ рдХреБрд░рд╛рдорд╛ рдЬреЛрдб рджрд┐рдПрд░ рд╣реЛрд╕реНрдЯ рдПрдиреНрдбрдкреЛрдЗрдиреНрдЯрд╣рд░реВрдорд╛ рд▓рд╛рдЧреВ рдЧрд░рд┐рдПрдХрд╛ рдпреА рдХреНрдпрд╛рд▓рд┐рдХреЛ рдиреАрддрд┐ рд╡рд┐рдХрд▓реНрдкрд╣рд░реВ (preDNAT, unraracked рд░ applyOnForward) рдХреЛ рд╕рд╛рд░ рдмрддрд╛рдЙрдБрдЫред

рдпрд╕ рд▓реЗрдЦрд▓реЗ рддрдкрд╛рдИрдВрд▓рд╛рдИ Kubernetes рд░ Calico рдиреЗрдЯрд╡рд░реНрдХ рдиреАрддрд┐рд╣рд░реВрд▓реЗ рдХрд╕рд░реА рдХрд╛рдо рдЧрд░реНрдЫ рднрдиреНрдиреЗ рдЖрдзрд╛рд░рднреВрдд рдмреБрдЭрд╛рдЗ рдЫ рднрдиреА рдорд╛рдиреЗрдХреЛ рдЫред рдпрджрд┐ рд╣реЛрдЗрди рднрдиреЗ, рд╣рд╛рдореА рдпрд╕рд▓рд╛рдИ рдкреНрд░рдпрд╛рд╕ рдЧрд░реНрди рд╕рд┐рдлрд╛рд░рд┐рд╕ рдЧрд░реНрджрдЫреМрдВ рдЖрдзрд╛рд░рднреВрдд рдиреЗрдЯрд╡рд░реНрдХ рдиреАрддрд┐ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ ╨╕ рд╣реЛрд╕реНрдЯ рд╕реБрд░рдХреНрд╖рд╛ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдпреЛ рд▓реЗрдЦ рдкрдвреНрдиреБ рдЕрдШрд┐ рдХреНрдпрд╛рд▓рд┐рдХреЛ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджреИред рд╣рд╛рдореА рддрдкрд╛рдИрдВрд▓рд╛рдИ рдХрд╛рдордХреЛ рдЖрдзрд╛рд░рднреВрдд рдмреБрдЭрд╛рдЗрдХреЛ рдЕрдкреЗрдХреНрд╖рд╛ рдкрдирд┐ рдЧрд░реНрдЫреМрдВ iptables рд▓рд┐рдирдХреНрд╕ рдорд╛ред

Calico рд╡рд┐рд╢реНрд╡рд╡реНрдпрд╛рдкреА рдиреЗрдЯрд╡рд░реНрдХ рдиреАрддрд┐ рддрдкрд╛рдИрдВрд▓рд╛рдИ рд▓реЗрдмрд▓рд╣рд░реВрджреНрд╡рд╛рд░рд╛ рдкрд╣реБрдБрдЪ рдирд┐рдпрдорд╣рд░реВрдХреЛ рд╕реЗрдЯ рд▓рд╛рдЧреВ рдЧрд░реНрди рдЕрдиреБрдорддрд┐ рджрд┐рдиреНрдЫ (рд╣реЛрд╕реНрдЯрд╣рд░реВ рд░ рд╡рд░реНрдХрд▓реЛрдбрд╣рд░реВ/рдкреЛрдбрд╣рд░реВрдХреЛ рд╕рдореВрд╣рд╣рд░реВрдорд╛)ред рдпрджрд┐ рддрдкрд╛рдЗрдБ рд╡рд┐рд╖рдо рдкреНрд░рдгрд╛рд▓реАрд╣рд░реВ рд╕рдБрдЧреИ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреБрд╣реБрдиреНрдЫ рднрдиреЗ рдпреЛ рдзреЗрд░реИ рдЙрдкрдпреЛрдЧреА рдЫ - рднрд░реНрдЪреБрдЕрд▓ рдореЗрд╕рд┐рдирд╣рд░реВ, рд╕реАрдзрд╛ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░рдорд╛ рдкреНрд░рдгрд╛рд▓реА, рд╡рд╛ рдХреБрдмрд░реНрдиреЗрдЯреНрд╕ рдкреВрд░реНрд╡рд╛рдзрд╛рд░ред рдердк рд░реВрдкрдорд╛, рддрдкрд╛рдИрдВрд▓реЗ рдШреЛрд╖рдгрд╛рддреНрдордХ рдиреАрддрд┐рд╣рд░реВрдХреЛ рд╕реЗрдЯ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдЖрдлреНрдиреЛ рдХреНрд▓рд╕реНрдЯрд░ (рдиреЛрдбрд╣рд░реВ) рд╕реБрд░рдХреНрд╖рд┐рдд рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ рд░ рдЖрдЧрдорди рдЯреНрд░рд╛рдлрд┐рдХрдорд╛ рдиреЗрдЯрд╡рд░реНрдХ рдиреАрддрд┐рд╣рд░реВ рд▓рд╛рдЧреВ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ (рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, NodePorts рд╡рд╛ рдмрд╛рд╣реНрдп IPs рд╕реЗрд╡рд╛ рдорд╛рд░реНрдлрдд)ред

рдЖрдзрд╛рд░рднреВрдд рд╕реНрддрд░рдорд╛, рдЬрдм рдХреНрдпрд╛рд▓рд┐рдХреЛрд▓реЗ рдкреЛрдбрд▓рд╛рдИ рдиреЗрдЯрд╡рд░реНрдХрдорд╛ рдЬрдбрд╛рди рдЧрд░реНрдЫ (рддрд▓рдХреЛ рд░реЗрдЦрд╛рдЪрд┐рддреНрд░ рд╣реЗрд░реНрдиреБрд╣реЛрд╕реН), рдпрд╕рд▓реЗ рднрд░реНрдЪреБрдЕрд▓ рдЗрдерд░рдиреЗрдЯ рдЗрдиреНрдЯрд░рдлреЗрд╕ (veth) рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рд╣реЛрд╕реНрдЯрдорд╛ рдЬрдбрд╛рди рдЧрд░реНрдЫред рдкреЛрдбрд▓реЗ рдкрдард╛рдПрдХреЛ рдЯреНрд░рд╛рдлрд┐рдХ рдпреЛ рднрд░реНрдЪреБрдЕрд▓ рдЗрдиреНрдЯрд░рдлреЗрд╕рдмрд╛рдЯ рд╣реЛрд╕реНрдЯрдорд╛ рдЖрдЙрдБрдЫ рд░ рднреМрддрд┐рдХ рдиреЗрдЯрд╡рд░реНрдХ рдЗрдиреНрдЯрд░рдлреЗрд╕рдмрд╛рдЯ рдЖрдПрдХреЛ рдЬрд╕реНрддреИ рдЧрд░реА рдкреНрд░рд╢реЛрдзрди рдЧрд░рд┐рдиреНрдЫред рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд░реВрдкрдорд╛, рдХреНрдпрд╛рд▓рд┐рдХреЛрд▓реЗ рдпреА рдЗрдиреНрдЯрд░рдлреЗрд╕рд╣рд░реВрд▓рд╛рдИ caliXXX рдирд╛рдо рджрд┐рдиреНрдЫред рдЯреНрд░рд╛рдлрд┐рдХ рднрд░реНрдЪреБрдЕрд▓ рдЗрдиреНрдЯрд░рдлреЗрд╕ рдорд╛рд░реНрдлрдд рдЖрдЙрдБрджрд╛, рдпреЛ iptables рдорд╛рд░реНрдлрдд рдЬрд╛рдиреНрдЫ рдорд╛рдиреМрдВ рдкреЛрдб рдПрдХ рд╣рдк рдЯрд╛рдврд╛ рдерд┐рдпреЛред рддреНрдпрд╕рдХрд╛рд░рдг, рдЬрдм рдЯреНрд░рд╛рдлрд┐рдХ рдкреЛрдбрдорд╛/рдмрд╛рдЯ рдЖрдЙрдБрдЫ, рдпрд╕рд▓рд╛рдИ рд╣реЛрд╕реНрдЯрдХреЛ рджреГрд╖реНрдЯрд┐рдХреЛрдгрдмрд╛рдЯ рдлрд░реНрд╡рд╛рд░реНрдб рдЧрд░рд┐рдиреНрдЫред

рдХреНрдпрд╛рд▓рд┐рдХреЛ рдЪрд▓рд┐рд░рд╣реЗрдХреЛ Kubernetes рдиреЛрдбрдорд╛, рддрдкрд╛рдИрдВрд▓реЗ рднрд░реНрдЪреБрдЕрд▓ рдЗрдиреНрдЯрд░рдлреЗрд╕ (veth) рд▓рд╛рдИ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рдХрд╛рд░реНрдпрднрд╛рд░рдорд╛ рдирдХреНрд╕рд╛ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред рддрд▓рдХреЛ рдЙрджрд╛рд╣рд░рдгрдорд╛, рддрдкрд╛рдИрдВрд▓реЗ рджреЗрдЦреНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ рдХрд┐ veth#10 (calic1cbf1ca0f8) cnx-manager-* рдорд╛ calico-monitering namespace рдорд╛ рдЬрдбрд╛рди рдЧрд░рд┐рдПрдХреЛ рдЫред

[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 рд▓реЗ рдкреНрд░рддреНрдпреЗрдХ рдХрд╛рд░реНрдпрднрд╛рд░рдХреЛ рд▓рд╛рдЧрд┐ рдПрдХ veth рдЗрдиреНрдЯрд░рдлреЗрд╕ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрджрдЫ, рдпрд╕рд▓реЗ рдХрд╕рд░реА рдиреАрддрд┐рд╣рд░реВ рд▓рд╛рдЧреВ рдЧрд░реНрдЫ? рдпреЛ рдЧрд░реНрдирдХрд╛ рд▓рд╛рдЧрд┐, рдХреНрдпрд╛рд▓рд┐рдХреЛрд▓реЗ iptables рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдкреНрдпрд╛рдХреЗрдЯ рдкреНрд░рд╢реЛрдзрди рдорд╛рд░реНрдЧрдХреЛ рд╡рд┐рднрд┐рдиреНрди рдЪреЗрдирд╣рд░реВрдорд╛ рд╣реБрдХрд╣рд░реВ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрджрдЫред

рддрд▓рдХреЛ рд░реЗрдЦрд╛рдЪрд┐рддреНрд░рд▓реЗ iptables (рд╡рд╛ рдиреЗрдЯрдлрд┐рд▓реНрдЯрд░ рд╕рдмрд╕рд┐рд╕реНрдЯрдо) рдорд╛ рдкреНрдпрд╛рдХреЗрдЯ рдкреНрд░рд╢реЛрдзрдирдорд╛ рд╕рдВрд▓рдЧреНрди рдЪреЗрдирд╣рд░реВ рджреЗрдЦрд╛рдЙрдБрдЫред рдЬрдм рдПрдХ рдкреНрдпрд╛рдХреЗрдЯ рдиреЗрдЯрд╡рд░реНрдХ рдЗрдиреНрдЯрд░рдлреЗрд╕ рдорд╛рд░реНрдлрдд рдЖрдЙрдБрдЫ, рдпреЛ рдкрд╣рд┐рд▓реЗ PREROUTING рдЪреЗрди рдорд╛рд░реНрдлрдд рдЬрд╛рдиреНрдЫред рддреНрдпрд╕рдкрдЫрд┐ рдПрдХ рдорд╛рд░реНрдЧ рдирд┐рд░реНрдгрдп рдЧрд░рд┐рдиреНрдЫ, рд░ рдпрд╕рдХреЛ рдЖрдзрд╛рд░рдорд╛, рдкреНрдпрд╛рдХреЗрдЯ рдХрд┐ рдд INPUT (рдкреНрд░рдХреНрд░рд┐рдпрд╛рд╣рд░реВ рд╣реЛрд╕реНрдЯ рдЧрд░реНрди рдирд┐рд░реНрджреЗрд╢рд┐рдд) рд╡рд╛ FORWARD (рдиреЗрдЯрд╡рд░реНрдХрдорд╛ рдкреЛрдб рд╡рд╛ рдЕрд░реНрдХреЛ рдиреЛрдбрдорд╛ рдирд┐рд░реНрджреЗрд╢рд┐рдд) рдорд╛рд░реНрдлрдд рдЬрд╛рдиреНрдЫред рд╕реНрдерд╛рдиреАрдп рдкреНрд░рдХреНрд░рд┐рдпрд╛рдмрд╛рдЯ, рдкреНрдпрд╛рдХреЗрдЯ рдХреЗрдмрд▓ рдкрдард╛рдЙрдиреБ рдЕрдШрд┐ OUTPUT рд░ рддреНрдпрд╕рдкрдЫрд┐ POSTROUTING рдЪреЗрди рдорд╛рд░реНрдлрдд рдЬрд╛рдиреНрдЫред

рдзреНрдпрд╛рди рджрд┐рдиреБрд╣реЛрд╕реН рдХрд┐ рдкреЛрдб рдкрдирд┐ iptables рдкреНрд░рд╢реЛрдзрди рдХреЛ рдорд╛рдорд▓рд╛ рдорд╛ рдПрдХ рдмрд╛рд╣реНрдп рдЗрдХрд╛рдИ (veth рдорд╛ рдЬреЛрдбрд┐рдПрдХреЛ) рд╣реЛред рд╕рдВрдХреНрд╖реЗрдк рдЧрд░реМрдВ:

  • рдлрд░реНрд╡рд╛рд░реНрдб рдЧрд░рд┐рдПрдХреЛ рдЯреНрд░рд╛рдлрд┐рдХ (Nat, рд░реВрдЯ рдЧрд░рд┐рдПрдХреЛ рд╡рд╛ рдкреЛрдбрдмрд╛рдЯ/рдмрд╛рдЯ) PREROUTING - FORWARD - POSTROUTING рдЪреЗрдирд╣рд░реВ рдорд╛рд░реНрдлрдд рдЬрд╛рдиреНрдЫред
  • рд╕реНрдерд╛рдиреАрдп рд╣реЛрд╕реНрдЯ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдорд╛ рдЯреНрд░рд╛рдлрд┐рдХ PREROUTING - INPUT рдЪреЗрди рдорд╛рд░реНрдлрдд рдЬрд╛рдиреНрдЫред
  • рд╕реНрдерд╛рдиреАрдп рд╣реЛрд╕реНрдЯ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдмрд╛рдЯ рдЯреНрд░рд╛рдлрд┐рдХ OUTPUT - POSTROUTING рд╢реНрд░реГрдВрдЦрд▓рд╛ рдорд╛рд░реНрдлрдд рдЬрд╛рдиреНрдЫред

рдХреНрдпрд╛рд▓рд┐рдХреЛрд╕рдБрдЧ рдиреЗрдЯрд╡рд░реНрдХ рдиреАрддрд┐ рдкреНрд░рд╡рд░реНрддрди рд╡рд┐рдХрд▓реНрдкрд╣рд░реВ рдмреБрдЭреНрджреИ

Calico рд▓реЗ рдиреАрддрд┐ рд╡рд┐рдХрд▓реНрдкрд╣рд░реВ рдкреНрд░рджрд╛рди рдЧрд░реНрджрдЫ рдЬрд╕рд▓реЗ рддрдкрд╛рдИрдВрд▓рд╛рдИ рд╕рдмреИ рдЪреЗрдирд╣рд░реВрдорд╛ рдиреАрддрд┐рд╣рд░реВ рд▓рд╛рдЧреВ рдЧрд░реНрди рдЕрдиреБрдорддрд┐ рджрд┐рдиреНрдЫред рддреНрдпреЛ рджрд┐рдорд╛рдЧрдорд╛, рдХреЗрд▓рд┐рдХреЛрдорд╛ рдЙрдкрд▓рдмреНрдз рд╡рд┐рднрд┐рдиреНрди рдиреАрддрд┐ рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди рд╡рд┐рдХрд▓реНрдкрд╣рд░реВ рд╣реЗрд░реМрдВред рддрд▓рдХрд╛ рд╡рд┐рдХрд▓реНрдкрд╣рд░реВрдХреЛ рд╕реВрдЪреАрдорд╛ рд░рд╣реЗрдХрд╛ рд╕рдВрдЦреНрдпрд╛рд╣рд░реВ рдорд╛рдерд┐рдХреЛ рд░реЗрдЦрд╛рдЪрд┐рддреНрд░рдорд╛ рд░рд╣реЗрдХрд╛ рд╕рдЩреНрдЦреНрдпрд╛рд╣рд░реВрд╕рдБрдЧ рдореЗрд▓ рдЦрд╛рдиреНрдЫред

  1. рдХрд╛рд░реНрдпрднрд╛рд░ рдЕрдиреНрддреНрдп рдмрд┐рдиреНрджреБ (рдкреЛрдб) рдиреАрддрд┐
  2. рд╣реЛрд╕реНрдЯ рдЕрдиреНрддреНрдп рдмрд┐рдиреНрджреБ рдиреАрддрд┐
  3. ApplyOnForward рд╡рд┐рдХрд▓реНрдк
  4. PreDNAT рдиреАрддрд┐
  5. рдЯреНрд░реНрдпрд╛рдХ рдирдЧрд░рд┐рдПрдХреЛ рдиреАрддрд┐

рд╡рд░реНрдХрд▓реЛрдб рдПрдиреНрдбрдкреЛрдЗрдиреНрдЯрд╣рд░реВ (Kubernetes pods рд╡рд╛ OpenStack VMs) рдорд╛ рдиреАрддрд┐рд╣рд░реВ рдХрд╕рд░реА рд▓рд╛рдЧреВ рд╣реБрдиреНрдЫрдиреН рднрдиреЗрд░ рд╣реЗрд░реЗрд░ рд╕реБрд░реБ рдЧрд░реМрдВ, рд░ рддреНрдпрд╕рдкрдЫрд┐ рд╣реЛрд╕реНрдЯ рдПрдиреНрдбрдкреЛрдЗрдиреНрдЯрд╣рд░реВрдХрд╛ рд▓рд╛рдЧрд┐ рдиреАрддрд┐ рд╡рд┐рдХрд▓реНрдкрд╣рд░реВ рд╣реЗрд░реНрдиреБрд╣реЛрд╕реНред

рдХрд╛рд░реНрдпрднрд╛рд░ рд╕рдорд╛рдкреНрддрд┐ рдмрд┐рдиреНрджреБрд╣рд░реВ

рдХрд╛рд░реНрдпрднрд╛рд░ рдЕрдиреНрддреНрдпрдмрд┐рдиреНрджреБ рдиреАрддрд┐ (рез)

рдпреЛ рддрдкрд╛рдЗрдБрдХреЛ kubernetes рдкреЛрдб рдХреЛ рд░рдХреНрд╖рд╛ рдЧрд░реНрди рдХреЛ рд▓рд╛рдЧреА рдПрдХ рд╡рд┐рдХрд▓реНрдк рд╣реЛред Calico рд▓реЗ Kubernetes NetworkPolicy рд╕рдБрдЧ рдХрд╛рдо рдЧрд░реНрди рд╕рдорд░реНрдерди рдЧрд░реНрджрдЫ, рддрд░ рдпрд╕рд▓реЗ рдЕрддрд┐рд░рд┐рдХреНрдд рдиреАрддрд┐рд╣рд░реВ рдкрдирд┐ рдкреНрд░рджрд╛рди рдЧрд░реНрджрдЫ - Calico NetworkPolicy рд░ GlobalNetworkPolicyред Calico рд▓реЗ рдкреНрд░рддреНрдпреЗрдХ рдкреЛрдб (рд╡рд░реНрдХрд▓реЛрдб) рдХреЛ рд▓рд╛рдЧрд┐ рдЪреЗрди рдмрдирд╛рдЙрдБрдЫ рд░ FORWARD рдЪреЗрдирдХреЛ рдлрд┐рд▓реНрдЯрд░ рддрд╛рд▓рд┐рдХрд╛рдорд╛ рдХрд╛рд░реНрдпрднрд╛рд░рдХреЛ рд▓рд╛рдЧрд┐ INPUT рд░ OUTPUT рдЪреЗрдирд╣рд░реВрдорд╛ рд╣реБрдХрд╣рд░реВ рдмрдирд╛рдЙрдБрдЫред

рд╣реЛрд╕реНрдЯ рд╕рдорд╛рдкрди рдмрд┐рдиреНрджреБрд╣рд░реВ

рд╣реЛрд╕реНрдЯ рдЕрдиреНрддрд┐рдо рдмрд┐рдиреНрджреБ рдиреАрддрд┐ (реи)

CNI (рдХрдиреНрдЯреЗрдирд░ рдиреЗрдЯрд╡рд░реНрдХ рдЗрдиреНрдЯрд░рдлреЗрд╕) рдХреЛ рдЕрддрд┐рд░рд┐рдХреНрдд, рдХреНрдпрд╛рд▓рд┐рдХреЛ рдиреАрддрд┐рд╣рд░реВрд▓реЗ рд╣реЛрд╕реНрдЯрд▓рд╛рдИ рд╕реБрд░рдХреНрд╖рд┐рдд рд░рд╛рдЦреНрдиреЗ рдХреНрд╖рдорддрд╛ рдкреНрд░рджрд╛рди рдЧрд░реНрджрдЫред рдХреНрдпрд╛рд▓рд┐рдХреЛрдорд╛, рддрдкрд╛рдЗрдБ рд╣реЛрд╕реНрдЯ рдЗрдиреНрдЯрд░рдлреЗрд╕рдХреЛ рд╕рдВрдпреЛрдЬрди рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЧрд░реЗрд░ рд░ рдЖрд╡рд╢реНрдпрдХ рднрдПрдорд╛, рдкреЛрд░реНрдЯ рдирдореНрдмрд░рд╣рд░реВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЧрд░реЗрд░ рд╣реЛрд╕реНрдЯ рдЕрдиреНрддреНрдп рдмрд┐рдиреНрджреБ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред рдпрд╕ рд╕рдВрд╕реНрдерд╛рдХреЛ рд▓рд╛рдЧрд┐ рдиреАрддрд┐ рдкреНрд░рд╡рд░реНрддрди INPUT рд░ OUTPUT рдЪреЗрдирд╣рд░реВрдорд╛ рдлрд┐рд▓реНрдЯрд░ рддрд╛рд▓рд┐рдХрд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдкреНрд░рд╛рдкреНрдд рдЧрд░рд┐рдиреНрдЫред рддрдкрд╛рдИрд▓реЗ рд░реЗрдЦрд╛рдЪрд┐рддреНрд░рдмрд╛рдЯ рджреЗрдЦреНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ, (реи) рддрд┐рдиреАрд╣рд░реВ рдиреЛрдб/рд╣реЛрд╕реНрдЯрдорд╛ рд╕реНрдерд╛рдиреАрдп рдкреНрд░рдХреНрд░рд┐рдпрд╛рд╣рд░реВрдорд╛ рд▓рд╛рдЧреВ рд╣реБрдиреНрдЫрдиреНред рддреНрдпреЛ рд╣реЛ, рдпрджрд┐ рддрдкрд╛рдИрдВрд▓реЗ рд╣реЛрд╕реНрдЯ рдПрдиреНрдбрдкреЛрдЗрдиреНрдЯрдорд╛ рд▓рд╛рдЧреВ рд╣реБрдиреЗ рдиреАрддрд┐ рдмрдирд╛рдЙрдиреБрднрдпреЛ рднрдиреЗ, рдпрд╕рд▓реЗ рддрдкрд╛рдИрдВрдХреЛ рдкреЛрдбрд╣рд░реВрдорд╛ рдЬрд╛рдиреЗ/рдЬрд╛рдиреЗ рдЯреНрд░рд╛рдлрд┐рдХрд▓рд╛рдИ рдЕрд╕рд░ рдЧрд░реНрджреИрдиред рддрд░ рдпрд╕рд▓реЗ рдХреНрдпрд╛рд▓рд┐рдХреЛ рдиреАрддрд┐рд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рддрдкрд╛рдИрдВрдХреЛ рд╣реЛрд╕реНрдЯ рд░ рдкреЛрдбрд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рдЯреНрд░рд╛рдлрд┐рдХ рд░реЛрдХреНрдирдХреЛ рд▓рд╛рдЧрд┐ рдПрдХрд▓ рдЗрдиреНрдЯрд░рдлреЗрд╕/рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдкреНрд░рджрд╛рди рдЧрд░реНрджрдЫред рдпрд╕рд▓реЗ рд╡рд┐рд╖рдо рдиреЗрдЯрд╡рд░реНрдХрдХреЛ рд▓рд╛рдЧрд┐ рдиреАрддрд┐рд╣рд░реВ рдкреНрд░рдмрдиреНрдз рдЧрд░реНрдиреЗ рдкреНрд░рдХреНрд░рд┐рдпрд╛рд▓рд╛рдИ рдзреЗрд░реИ рд╕рд░рд▓ рдмрдирд╛рдЙрдБрдЫред рдХреНрд▓рд╕реНрдЯрд░ рд╕реБрд░рдХреНрд╖рд╛ рдмреГрджреНрдзрд┐ рдЧрд░реНрди рд╣реЛрд╕реНрдЯ рдПрдиреНрдбрдкреЛрдЗрдиреНрдЯ рдиреАрддрд┐рд╣рд░реВ рдХрдиреНрдлрд┐рдЧрд░ рдЧрд░реНрдиреБ рдЕрд░реНрдХреЛ рдорд╣рддреНрддреНрд╡рдкреВрд░реНрдг рдкреНрд░рдпреЛрдЧ рдХреЗрд╕ рд╣реЛред

рдлрд░реНрд╡рд╛рд░реНрдб рдиреАрддрд┐ рд▓рд╛рдЧреВ рдЧрд░реНрдиреБрд╣реЛрд╕реН (рей)

ApplyOnForward рд╡рд┐рдХрд▓реНрдк рдХреНрдпрд╛рд▓рд┐рдХреЛ рдЧреНрд▓реЛрдмрд▓ рд╕рдЮреНрдЬрд╛рд▓ рдиреАрддрд┐рдорд╛ рдЙрдкрд▓рдмреНрдз рдЫ рдЬрд╕рд▓рд╛рдИ рд╣реЛрд╕реНрдЯрд▓реЗ рдлрд░реНрд╡рд╛рд░реНрдб рдЧрд░реНрдиреЗ рдЯреНрд░рд╛рдлрд┐рдХ рд╕рд╣рд┐рдд рд╣реЛрд╕реНрдЯ рдПрдиреНрдбрдкреЛрдЗрдиреНрдЯ рд╣реБрдБрджреИ рдЬрд╛рдиреЗ рд╕рдмреИ рдЯреНрд░рд╛рдлрд┐рдХрд╣рд░реВрдорд╛ рдиреАрддрд┐рд╣рд░реВ рд▓рд╛рдЧреВ рдЧрд░реНрди рдЕрдиреБрдорддрд┐ рджрд┐рдиреНрдЫред рдпрд╕рдорд╛ рд╕реНрдерд╛рдиреАрдп рдкреЛрдб рд╡рд╛ рдиреЗрдЯрд╡рд░реНрдХрдорд╛ рдЕрдиреНрдпрддреНрд░ рдлрд░реНрд╡рд╛рд░реНрдб рдЧрд░рд┐рдПрдХреЛ рдЯреНрд░рд╛рдлрд┐рдХ рд╕рдорд╛рд╡реЗрд╢ рдЫред рдХреНрдпрд╛рд▓рд┐рдХреЛрд▓рд╛рдИ PreDNAT рдкреНрд░рдпреЛрдЧ рдЧрд░реА рд░ рдЕрдирдЯреНрд░реНрдпрд╛рдХ рдирдЧрд░рд┐рдПрдХрд╛ рдиреАрддрд┐рд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рдпреЛ рд╕реЗрдЯрд┐рдЩ рд╕рдХреНрд╖рдо рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫ, рдирд┐рдореНрди рдЦрдгреНрдбрд╣рд░реВ рд╣реЗрд░реНрдиреБрд╣реЛрд╕реНред рдердк рд░реВрдкрдорд╛, рднрд░реНрдЪреБрдЕрд▓ рд░рд╛рдЙрдЯрд░ рд╡рд╛ рд╕рдлреНрдЯрд╡реЗрдпрд░ NAT рдкреНрд░рдпреЛрдЧ рднрдПрдХреЛ рдЕрд╡рд╕реНрдерд╛рдорд╛ рд╣реЛрд╕реНрдЯ рдЯреНрд░рд╛рдлрд┐рдХрдХреЛ рдирд┐рдЧрд░рд╛рдиреА рдЧрд░реНрди ApplyOnForward рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫред

рдиреЛрдЯ рдЧрд░реНрдиреБрд╣реЛрд╕реН рдХрд┐ рдпрджрд┐ рддрдкрд╛рдЗрдБ рджреБрдмреИ рд╣реЛрд╕реНрдЯ рдкреНрд░рдХреНрд░рд┐рдпрд╛рд╣рд░реВ рд░ рдкреЛрдбрд╣рд░реВрдорд╛ рд╕рдорд╛рди рдиреЗрдЯрд╡рд░реНрдХ рдиреАрддрд┐ рд▓рд╛рдЧреВ рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫ рднрдиреЗ, рддрдкрд╛рдЗрдБрд▓реЗ ApplyOnForward рд╡рд┐рдХрд▓реНрдк рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫреИрдиред рддрдкрд╛рдИрд▓реЗ рдЧрд░реНрдиреБрдкрд░реНрдиреЗ рднрдиреЗрдХреЛ рдЖрд╡рд╢реНрдпрдХ рд╣реЛрд╕реНрдЯреЗрдиреНрдбрдкреЛрдЗрдиреНрдЯ рд░ рд╡рд░реНрдХрд▓реЛрдб рдПрдиреНрдбрдкреЛрдЗрдиреНрдЯ (рдкреЛрдб) рдХреЛ рд▓рд╛рдЧреА рд▓реЗрдмрд▓ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдиреБ рд╣реЛред рдЕрдиреНрддрдмрд┐рдиреНрджреБ рдкреНрд░рдХрд╛рд░ (рд╣реЛрд╕реНрдЯрдиреНрдбрдкреЛрдЗрдиреНрдЯ рд╡рд╛ рд╡рд░реНрдХрд▓реЛрдб) рдХреЛ рдкрд░реНрд╡рд╛рд╣ рдирдЧрд░реА рд▓реЗрдмрд▓рд╣рд░реВрдорд╛ рдЖрдзрд╛рд░рд┐рдд рдиреАрддрд┐ рд▓рд╛рдЧреВ рдЧрд░реНрди Calico рдкрд░реНрдпрд╛рдкреНрдд рд╕реНрдорд╛рд░реНрдЯ рдЫред

PreDNAT рдиреАрддрд┐ (4)

Kubernetes рдорд╛, рд╕реЗрд╡рд╛ рдЗрдХрд╛рдИ рдкреЛрд░реНрдЯрд╣рд░реВ рдмрд╛рд╣рд┐рд░реА рд░реВрдкрдорд╛ NodePorts рд╡рд┐рдХрд▓реНрдк рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рд╡рд╛ рд╡реИрдХрд▓реНрдкрд┐рдХ рд░реВрдкрдорд╛ (рдХреНрдпрд╛рд▓рд┐рдХреЛ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджрд╛), рдХреНрд▓рд╕реНрдЯрд░ рдЖрдИрдкреА рд╡рд╛ рдмрд╛рд╣реНрдп рдЖрдИрдкреА рд╡рд┐рдХрд▓реНрдкрд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рд╡рд┐рдЬреНрдЮрд╛рдкрди рдЧрд░реЗрд░ рдЦреБрд▓рд╛рдЙрди рд╕рдХрд┐рдиреНрдЫред рдХреБрдмреЗ-рдкреНрд░реЛрдХреНрд╕реАрд▓реЗ DNAT рдкреНрд░рдпреЛрдЧ рдЧрд░реА рд╕рдореНрдмрдиреНрдзрд┐рдд рд╕реЗрд╡рд╛рдХреЛ рдкреЛрдбрд╣рд░реВрдорд╛ рд╕реЗрд╡рд╛рдорд╛ рдмрд╛рдБрдзрд┐рдПрдХреЛ рдЖрдЧрдорди рдЯреНрд░рд╛рдлрд┐рдХрд▓рд╛рдИ рд╕рдиреНрддреБрд▓рдирдорд╛ рд░рд╛рдЦреНрдЫред рдпреЛ рджрд┐рдИрдПрдХреЛ рдЫ, рддрдкрд╛рдИрдВ NodePorts рдорд╛рд░реНрдлрдд рдЖрдЙрдиреЗ рдЯреНрд░рд╛рдлрд┐рдХрдХреЛ рд▓рд╛рдЧрд┐ рдиреАрддрд┐рд╣рд░реВ рдХрд╕рд░реА рд▓рд╛рдЧреВ рдЧрд░реНрдиреБрд╣реБрдиреНрдЫ? DNAT рджреНрд╡рд╛рд░рд╛ рдЯреНрд░рд╛рдлрд┐рдХ рдкреНрд░рд╢реЛрдзрди рдЧрд░реНрдиреБ рдЕрдШрд┐ рдпреА рдиреАрддрд┐рд╣рд░реВ рд▓рд╛рдЧреВ рд╣реБрдиреНрдЫрдиреН рднрдиреЗрд░ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдЧрд░реНрди (рдЬрд╕рд▓реЗ host:port рд░ рд╕рдореНрдмрдиреНрдзрд┐рдд рд╕реЗрд╡рд╛рд╣рд░реВ рдмреАрдЪрдХреЛ рдореНрдпрд╛рдкрд┐рдЩ рд╣реЛ), Calico рд▓реЗ "preDNAT: true" рднрдирд┐рдиреЗ рд╡рд┐рд╢реНрд╡рд╡реНрдпрд╛рдкреА рдиреЗрдЯрд╡рд░реНрдХ рдиреАрддрд┐рдХреЛ рд▓рд╛рдЧрд┐ рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░ рдкреНрд░рджрд╛рди рдЧрд░реНрджрдЫред

рдЬрдм рдкреНрд░рд┐-DNAT рд╕рдХреНрд╖рдо рд╣реБрдиреНрдЫ, рдпреА рдиреАрддрд┐рд╣рд░реВ (4) рд░реЗрдЦрд╛рдЪрд┐рддреНрд░рдорд╛ - PREROUTING рд╢реНрд░реГрдВрдЦрд▓рд╛рдХреЛ mangle рддрд╛рд▓рд┐рдХрд╛рдорд╛ - DNAT рднрдиреНрджрд╛ рдкрд╣рд┐рд▓реЗ рд▓рд╛рдЧреВ рдЧрд░рд┐рдиреНрдЫред рдиреАрддрд┐рд╣рд░реВрдХреЛ рд╕рд╛рдорд╛рдиреНрдп рдХреНрд░рдо рдпрд╣рд╛рдБ рдкрдЫреНрдпрд╛рдЗрдПрдХреЛ рдЫреИрди, рдХрд┐рдирдХрд┐ рдпреА рдиреАрддрд┐рд╣рд░реВрдХреЛ рд▓рд╛рдЧреВ рдЯреНрд░рд╛рдлрд┐рдХ рдкреНрд░рд╢реЛрдзрди рдорд╛рд░реНрдЧрдорд╛ рдзреЗрд░реИ рдкрд╣рд┐рд▓реЗ рд╣реБрдиреНрдЫред рдпрджреНрдпрдкрд┐, preDNAT рдиреАрддрд┐рд╣рд░реВрд▓реЗ рдЖрдкрд╕рдорд╛ рдЖрд╡реЗрджрдирдХреЛ рдХреНрд░рдорд▓рд╛рдИ рд╕рдореНрдорд╛рди рдЧрд░реНрджрдЫред

рдкреНрд░рд┐-DNAT рдорд╛рд░реНрдлрдд рдиреАрддрд┐рд╣рд░реВ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрджрд╛, рддрдкрд╛рдИрдВрд▓реЗ рдкреНрд░рд╢реЛрдзрди рдЧрд░реНрди рдЪрд╛рд╣рдиреБрднрдПрдХреЛ рдЯреНрд░рд╛рдлрд┐рдХрдХреЛ рдмрд╛рд░реЗрдорд╛ рд╣реЛрд╕рд┐рдпрд╛рд░ рд╣реБрдиреБ рдорд╣рддреНрддреНрд╡рдкреВрд░реНрдг рдЫ рд░ рдмрд╣реБрдорддрд▓рд╛рдИ рдЕрд╕реНрд╡реАрдХрд╛рд░ рдЧрд░реНрди рдЕрдиреБрдорддрд┐ рджрд┐рдиреБрд╣реЛрд╕реНред рдкреВрд░реНрд╡-DNAT рдиреАрддрд┐рдорд╛ 'рдЕрдиреБрдорддрд┐ рджрд┐рдиреБрд╣реЛрд╕реН' рднрдиреА рдЪрд┐рдиреНрд╣ рд▓рдЧрд╛рдЗрдПрдХреЛ рдЯреНрд░рд╛рдлрд┐рдХрд▓рд╛рдИ рд╣реЛрд╕реНрдЯреЗрдиреНрдбрдкреЛрдЗрдиреНрдЯ рдиреАрддрд┐рджреНрд╡рд╛рд░рд╛ рдЬрд╛рдБрдЪ рдЧрд░рд┐рдиреЗ рдЫреИрди, рдЬрдмрдХрд┐ рдкреВрд░реНрд╡-DNAT рдиреАрддрд┐ рдЕрд╕рдлрд▓ рд╣реБрдиреЗ рдЯреНрд░рд╛рдлрд┐рдХ рдмрд╛рдБрдХреА рдЪреЗрдирд╣рд░реВрдорд╛ рдЬрд╛рд░реА рд░рд╣рдиреЗрдЫред
рдХреНрдпрд╛рд▓рд┐рдХреЛрд▓реЗ preDNAT рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджрд╛ ApplyOnForward рд╡рд┐рдХрд▓реНрдк рд╕рдХреНрд╖рдо рдЧрд░реНрди рдЕрдирд┐рд╡рд╛рд░реНрдп рдмрдирд╛рдПрдХреЛ рдЫ, рдХрд┐рдирдХрд┐ рдкрд░рд┐рднрд╛рд╖рд╛ рдЕрдиреБрд╕рд╛рд░ рдЯреНрд░рд╛рдлрд┐рдХрдХреЛ рдЧрдиреНрддрд╡реНрдп рдЕрдЭреИ рдЪрдпрди рдЧрд░рд┐рдПрдХреЛ рдЫреИрдиред рдЯреНрд░рд╛рдлрд┐рдХрд▓рд╛рдИ рд╣реЛрд╕реНрдЯ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдорд╛ рдирд┐рд░реНрджреЗрд╢рд┐рдд рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫ, рд╡рд╛ рдпрд╕рд▓рд╛рдИ рдкреЛрдб рд╡рд╛ рдЕрд░реНрдХреЛ рдиреЛрдбрдорд╛ рдлрд░реНрд╡рд╛рд░реНрдб рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫред

рдЯреНрд░реНрдпрд╛рдХ рдирдЧрд░рд┐рдПрдХреЛ рдиреАрддрд┐ (рел)

рд╕рдЮреНрдЬрд╛рд▓ рд░ рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╣рд░реВрдХреЛ рд╡реНрдпрд╡рд╣рд╛рд░рдорд╛ рдареВрд▓реЛ рднрд┐рдиреНрдирддрд╛ рд╣реБрди рд╕рдХреНрдЫред рдХреЗрд╣реА рдЪрд░рдо рдЕрд╡рд╕реНрдерд╛рд╣рд░реВрдорд╛, рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╣рд░реВрд▓реЗ рдзреЗрд░реИ рдЫреЛрдЯреЛ-рдЕрд╡рд╕реНрдерд╛ рдЬрдбрд╛рдирд╣рд░реВ рдЙрддреНрдкрдиреНрди рдЧрд░реНрди рд╕рдХреНрдЫрдиреНред рдпрд╕рд▓реЗ рдХрдиреНрдЯреНрд░реНрдпрд╛рдХ (рд▓рд┐рдирдХреНрд╕ рдиреЗрдЯрд╡рд░реНрдХрд┐рдЩ рд╕реНрдЯреНрдпрд╛рдХрдХреЛ рдореБрдЦреНрдп рднрд╛рдЧ) рдХреЛ рдореЗрдореЛрд░реА рд╕рдорд╛рдкреНрдд рд╣реБрди рд╕рдХреНрдЫред рдкрд░рдореНрдкрд░рд╛рдЧрдд рд░реВрдкрдорд╛, рд▓рд┐рдирдХреНрд╕рдорд╛ рдпреА рдкреНрд░рдХрд╛рд░рдХрд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╣рд░реВ рдЪрд▓рд╛рдЙрдирдХреЛ рд▓рд╛рдЧрд┐, рддрдкрд╛рдИрдВрд▓реЗ рдХрдиреНрдЯреНрд░реНрдпрд╛рдХрд▓рд╛рдИ рдореНрдпрд╛рдиреБрдЕрд▓ рд░реВрдкрдорд╛ рдХрдиреНрдлрд┐рдЧрд░ рд╡рд╛ рдЕрд╕рдХреНрд╖рдо рдкрд╛рд░реНрдиреБ рдкрд░реНрдЫ, рд╡рд╛ рдХрдиреНрдЯреНрд░реНрдпрд╛рдХрд▓рд╛рдИ рдмрд╛рдЗрдкрд╛рд╕ рдЧрд░реНрди iptables рдирд┐рдпрдорд╣рд░реВ рд▓реЗрдЦреНрдиреБрдкрд░реНрдЫред рдпрджрд┐ рддрдкрд╛рдЗрдБ рдЬрддрд┐ рд╕рдХреНрджреЛ рдЪрд╛рдБрдбреЛ рдЬрдбрд╛рдирд╣рд░реВ рдкреНрд░рд╢реЛрдзрди рдЧрд░реНрди рдЪрд╛рд╣рдиреБрд╣реБрдиреНрдЫ рднрдиреЗ рдХреНрдпрд╛рд▓рд┐рдХреЛрдорд╛ рдЕрдирдЯреНрд░реНрдпрд╛рдХ рдЧрд░рд┐рдПрдХреЛ рдиреАрддрд┐ рдПрдХ рд╕рд░рд▓ рд░ рдЕрдзрд┐рдХ рдкреНрд░рднрд╛рд╡рдХрд╛рд░реА рд╡рд┐рдХрд▓реНрдк рд╣реЛред рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, рдпрджрд┐ рддрдкрд╛рдЗрдБ рдареВрд▓реЛ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреБрд╣реБрдиреНрдЫ рдореЗрдореНрдЪреЗрд╕ рд╡рд╛ рд╡рд┐рд░реБрджреНрдз рд╕реБрд░рдХреНрд╖рд╛рдХреЛ рдЕрддрд┐рд░рд┐рдХреНрдд рдЙрдкрд╛рдпрдХреЛ рд░реВрдкрдорд╛ DDOS.

рдпреЛ рдкрдвреНрдиреБрд╣реЛрд╕реН рдмреНрд▓рдЧ рдкреЛрд╕реНрдЯ (рд╡рд╛ рд╣рд╛рдореНрд░реЛ рдЕрдиреБрд╡рд╛рджрдЯреНрд░реНрдпрд╛рдХ рдирдЧрд░рд┐рдПрдХреЛ рдиреАрддрд┐ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдкреНрд░рджрд░реНрд╢рди рдкрд░реАрдХреНрд╖рдгрд╣рд░реВ рд╕рд╣рд┐рдд рдердк рдЬрд╛рдирдХрд╛рд░реАрдХреЛ рд▓рд╛рдЧрд┐ред

рдЬрдм рддрдкрд╛рдИрдВрд▓реЗ Calico globalNetworkPolicy рдорд╛ "doNotTrack: true" рд╡рд┐рдХрд▓реНрдк рд╕реЗрдЯ рдЧрд░реНрдиреБрд╣реБрдиреНрдЫ, рдпреЛ **рдЯреНрд░реНрдпрд╛рдХ рдирдЧрд░рд┐рдПрдХреЛ** рдиреАрддрд┐ рдмрдиреНрдЫ рд░ рд▓рд┐рдирдХреНрд╕ рдкреНрдпрд╛рдХреЗрдЯ рдкреНрд░рд╢реЛрдзрди рдкрд╛рдЗрдкрд▓рд╛рдЗрдирдорд╛ рдзреЗрд░реИ рдЪрд╛рдБрдбреЛ рд▓рд╛рдЧреВ рд╣реБрдиреНрдЫред рдорд╛рдерд┐рдХреЛ рд░реЗрдЦрд╛рдЪрд┐рддреНрд░рдорд╛ рд╣реЗрд░реНрджрд╛, рдЬрдбрд╛рди рдЯреНрд░реНрдпрд╛рдХрд┐рдЩ (рдХрдиреНрдЯреНрд░реНрдпрд╛рдХ) рд╕реБрд░реБ рд╣реБрдиреБ рдЕрдШрд┐ рдХрдЪреНрдЪрд╛ рддрд╛рд▓рд┐рдХрд╛рдорд╛ рд░рд╣реЗрдХреЛ PREROUTING рд░ OUTPUT рдЪреЗрдирд╣рд░реВрдорд╛ рдЯреНрд░реНрдпрд╛рдХ рдирдЧрд░рд┐рдПрдХрд╛ рдиреАрддрд┐рд╣рд░реВ рд▓рд╛рдЧреВ рд╣реБрдиреНрдЫрдиреНред рдЬрдм рдкреНрдпрд╛рдХреЗрдЯрд▓рд╛рдИ рдЕрдирдЯреНрд░реНрдпрд╛рдХ рдЧрд░рд┐рдПрдХреЛ рдиреАрддрд┐рджреНрд╡рд╛рд░рд╛ рдЕрдиреБрдорддрд┐ рджрд┐рдЗрдиреНрдЫ, рддреНрдпреЛ рдкреНрдпрд╛рдХреЗрдЯрдХреЛ рд▓рд╛рдЧрд┐ рдЬрдбрд╛рди рдЯреНрд░реНрдпрд╛рдХрд┐рдЩ рдЕрд╕рдХреНрд╖рдо рдкрд╛рд░реНрди рдЪрд┐рдиреНрд╣ рд▓рдЧрд╛рдЗрдиреНрдЫред рдпрд╕рдХреЛ рдЕрд░реНрде:

  • рдЕрдирдЯреНрд░реНрдпрд╛рдХ рдЧрд░рд┐рдПрдХреЛ рдиреАрддрд┐ рдкреНрд░рддрд┐-рдкреНрдпрд╛рдХреЗрдЯ рдЖрдзрд╛рд░рдорд╛ рд▓рд╛рдЧреВ рд╣реБрдиреНрдЫред рдЬрдбрд╛рди (рд╡рд╛ рдкреНрд░рд╡рд╛рд╣) рдХреЛ рдХреБрдиреИ рдЕрд╡рдзрд╛рд░рдгрд╛ рдЫреИрдиред рдЬрдбрд╛рдирдХреЛ рдЕрднрд╛рд╡рдорд╛ рдзреЗрд░реИ рдорд╣рддреНрддреНрд╡рдкреВрд░реНрдг рдкрд░рд┐рдгрд╛рдорд╣рд░реВ рдЫрдиреН:
  • рдпрджрд┐ рддрдкрд╛рдЗрдБ рдЕрдиреБрд░реЛрдз рд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдЯреНрд░рд╛рдлрд┐рдХ рджреБрд╡реИрд▓рд╛рдИ рдЕрдиреБрдорддрд┐ рджрд┐рди рдЪрд╛рд╣рдиреБрд╣реБрдиреНрдЫ рднрдиреЗ, рддрдкрд╛рдЗрдБрд▓рд╛рдИ рдЗрдирдмрд╛рдЙрдиреНрдб рд░ рдЖрдЙрдЯрдмрд╛рдЙрдиреНрдб рджреБрд╡реИрдХреЛ рд▓рд╛рдЧрд┐ рдирд┐рдпрдо рдЪрд╛рд╣рд┐рдиреНрдЫ (рдХрд┐рдирдХрд┐ рдХреНрдпрд╛рд▓рд┐рдХреЛрд▓реЗ рд╕рд╛рдорд╛рдиреНрдпрддрдпрд╛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдЯреНрд░рд╛рдлрд┐рдХрд▓рд╛рдИ рдЕрдиреБрдорддрд┐ рджрд┐рдЗрдПрдХреЛ рд░реВрдкрдорд╛ рдЪрд┐рдиреНрд╣ рд▓рдЧрд╛рдЙрди рдХрдиреНрдЯреНрд░реНрдпрд╛рдХ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджрдЫ)ред
  • рдЯреНрд░реНрдпрд╛рдХ рдирдЧрд░рд┐рдПрдХреЛ рдиреАрддрд┐рд▓реЗ Kubernetes workloads (pods) рдХрд╛ рд▓рд╛рдЧрд┐ рдХрд╛рдо рдЧрд░реНрджреИрди, рдХрд┐рдирднрдиреЗ рдпрд╕ рдЕрд╡рд╕реНрдерд╛рдорд╛ рдкреЛрдбрдмрд╛рдЯ рдмрд╛рд╣рд┐рд░ рдЬрд╛рдиреЗ рдЬрдбрд╛рди рдЯреНрд░реНрдпрд╛рдХ рдЧрд░реНрдиреЗ рдХреБрдиреИ рддрд░рд┐рдХрд╛ рдЫреИрдиред
  • NAT рд▓реЗ рдЯреНрд░реНрдпрд╛рдХ рдирдЧрд░рд┐рдПрдХрд╛ рдкреНрдпрд╛рдХреЗрдЯрд╣рд░реВрд╕рдБрдЧ рд╕рд╣реА рд░реВрдкрдорд╛ рдХрд╛рдо рдЧрд░реНрджреИрди (рдХрд┐рдирдХрд┐ рдХрд░реНрдиреЗрд▓рд▓реЗ NAT рдореНрдпрд╛рдкрд┐рдЩрд▓рд╛рдИ рдХрдиреНрдЯреНрд░реНрдпрд╛рдХрдорд╛ рднрдгреНрдбрд╛рд░ рдЧрд░реНрдЫ)ред
  • рдЕрдирдЯреНрд░реНрдпрд╛рдХ рдЧрд░рд┐рдПрдХреЛ рдиреАрддрд┐рдорд╛ "рд╕рдмреИрд▓рд╛рдИ рдЕрдиреБрдорддрд┐ рджрд┐рдиреБрд╣реЛрд╕реН" рдирд┐рдпрдо рдкрд╛рд░ рдЧрд░реНрджрд╛, рд╕рдмреИ рдкреНрдпрд╛рдХреЗрдЯрд╣рд░реВрд▓рд╛рдИ рдЕрдирдЯреНрд░реНрдпрд╛рдХ рдЧрд░рд┐рдПрдХреЛ рд░реВрдкрдорд╛ рдЪрд┐рдиреНрд╣ рд▓рдЧрд╛рдЗрдиреЗрдЫред рдпреЛ рд▓рдЧрднрдЧ рд╕рдзреИрдВ рддрдкрд╛рдИрд▓реЗ рдЪрд╛рд╣рд╛рдиреБрд╣реБрдиреЗ рд╣реЛрдЗрди, рддреНрдпрд╕реИрд▓реЗ рдЯреНрд░реНрдпрд╛рдХ рдирдЧрд░рд┐рдПрдХрд╛ рдиреАрддрд┐рд╣рд░реВрджреНрд╡рд╛рд░рд╛ рдЕрдиреБрдорддрд┐ рджрд┐рдЗрдПрдХреЛ рдкреНрдпрд╛рдХреЗрдЯрд╣рд░реВрдХреЛ рдмрд╛рд░реЗрдорд╛ рдзреЗрд░реИ рдЫрдиреМрдЯ рд╣реБрдиреБ рдорд╣рддреНрддреНрд╡рдкреВрд░реНрдг рдЫ (рд░ рдзреЗрд░реИрдЬрд╕реЛ рдЯреНрд░рд╛рдлрд┐рдХрд▓рд╛рдИ рд╕рд╛рдорд╛рдиреНрдп рдЯреНрд░реНрдпрд╛рдХ рдЧрд░рд┐рдПрдХрд╛ рдиреАрддрд┐рд╣рд░реВ рдорд╛рд░реНрдлрдд рдЬрд╛рди рдЕрдиреБрдорддрд┐ рджрд┐рдиреБрд╣реЛрд╕реН)ред
  • рдЕрдирдЯреНрд░реНрдпрд╛рдХ рдЧрд░рд┐рдПрдХрд╛ рдиреАрддрд┐рд╣рд░реВ рдкреНрдпрд╛рдХреЗрдЯ рдкреНрд░рд╢реЛрдзрди рдкрд╛рдЗрдкрд▓рд╛рдЗрдирдХреЛ рд╕реБрд░реБрдорд╛ рд▓рд╛рдЧреВ рд╣реБрдиреНрдЫрдиреНред Calico рдиреАрддрд┐рд╣рд░реВ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрджрд╛ рдпреЛ рдмреБрдЭреНрди рдзреЗрд░реИ рдорд╣рддреНрддреНрд╡рдкреВрд░реНрдг рдЫред рддрдкрд╛рдИрдВрд╕рдБрдЧ рдЕрд░реНрдбрд░: 1 рдХреЛ рд╕рд╛рде рдкреЛрдб рдиреАрддрд┐ рд░ рдЕрд░реНрдбрд░: 1000 рд╕рдВрдЧ рдЕрдирдЯреНрд░реНрдпрд╛рдХ рдиреАрддрд┐ рд╣реБрди рд╕рдХреНрдЫред рдХреЗрд╣реА рдлрд░рдХ рдкрд░реНрджреИрдиред рдЕрдирдЯреНрд░реНрдпрд╛рдХ рдЧрд░рд┐рдПрдХреЛ рдиреАрддрд┐ рдкреЛрдбрдХреЛ рд▓рд╛рдЧрд┐ рдиреАрддрд┐ рдЕрдШрд┐ рд▓рд╛рдЧреВ рдЧрд░рд┐рдиреЗрдЫред рдЕрдирдЯреНрд░реНрдпрд╛рдХ рдЧрд░рд┐рдПрдХрд╛ рдиреАрддрд┐рд╣рд░реВрд▓реЗ рдЖрдкрд╕рдорд╛ рдорд╛рддреНрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЖрджреЗрд╢рд▓рд╛рдИ рд╕рдореНрдорд╛рди рдЧрд░реНрдЫрдиреНред

рдХрд┐рдирднрдиреЗ doNotTrack рдиреАрддрд┐рдХреЛ рдЙрджреНрджреЗрд╢реНрдпрд╣рд░реВ рдордзреНрдпреЗ рдПрдЙрдЯрд╛ рдиреАрддрд┐рд▓рд╛рдИ Linux рдкреНрдпрд╛рдХреЗрдЯ рдкреНрд░рд╢реЛрдзрди рдкрд╛рдЗрдкрд▓рд╛рдЗрдирдорд╛ рдЪрд╛рдБрдбреИ рд▓рд╛рдЧреВ рдЧрд░реНрдиреБ рд╣реЛ, Calico рд▓реЗ doNotTrack рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджрд╛ ApplyOnForward рд╡рд┐рдХрд▓реНрдк рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЧрд░реНрди рдЕрдирд┐рд╡рд╛рд░реНрдп рдмрдирд╛рдЙрдБрдЫред рдкреНрдпрд╛рдХреЗрдЯ рдкреНрд░рд╢реЛрдзрди рд░реЗрдЦрд╛рдЪрд┐рддреНрд░рд▓рд╛рдИ рд╕рдиреНрджрд░реНрдн рдЧрд░реНрджреИ, рдпрд╛рдж рдЧрд░реНрдиреБрд╣реЛрд╕реН рдХрд┐ рдЕрдирдЯреНрд░реНрдпрд╛рдХ (5) рдиреАрддрд┐ рдХреБрдиреИ рдкрдирд┐ рдорд╛рд░реНрдЧ рдирд┐рд░реНрдгрдпрд╣рд░реВ рдЕрдШрд┐ рд▓рд╛рдЧреВ рдЧрд░рд┐рдПрдХреЛ рдЫред рдЯреНрд░рд╛рдлрд┐рдХрд▓рд╛рдИ рд╣реЛрд╕реНрдЯ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдорд╛ рдирд┐рд░реНрджреЗрд╢рд┐рдд рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫ, рд╡рд╛ рдпрд╕рд▓рд╛рдИ рдкреЛрдб рд╡рд╛ рдЕрд░реНрдХреЛ рдиреЛрдбрдорд╛ рдлрд░реНрд╡рд╛рд░реНрдб рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫред

рдкрд░рд┐рдгрд╛рдорд╣рд░реВ

рд╣рд╛рдореАрд▓реЗ рдХреНрдпрд╛рд▓рд┐рдХреЛрдорд╛ рд╡рд┐рднрд┐рдиреНрди рдиреАрддрд┐ рд╡рд┐рдХрд▓реНрдкрд╣рд░реВ (рд╣реЛрд╕реНрдЯ рдПрдиреНрдбрдкреЛрдЗрдиреНрдЯ, ApplyOnForward, preDNAT, рд░ Untracked) рд░ рддреА рдкреНрдпрд╛рдХреЗрдЯ рдкреНрд░рд╢реЛрдзрди рдорд╛рд░реНрдЧрдорд╛ рдХрд╕рд░реА рд▓рд╛рдЧреВ рдЧрд░рд┐рдиреНрдЫ рднрдиреЗрд░ рд╣реЗрд░реНрдпреМрдВред рддрд┐рдиреАрд╣рд░реВрд▓реЗ рдХрд╕рд░реА рдХрд╛рдо рдЧрд░реНрдЫрдиреН рднрдиреНрдиреЗ рдмреБрдЭреНрджрд╛ рдкреНрд░рднрд╛рд╡рдХрд╛рд░реА рд░ рд╕реБрд░рдХреНрд╖рд┐рдд рдиреАрддрд┐рд╣рд░реВ рд╡рд┐рдХрд╛рд╕ рдЧрд░реНрди рдорджреНрджрдд рдЧрд░реНрджрдЫред рдХреНрдпрд╛рд▓рд┐рдХреЛрдХреЛ рд╕рд╛рде рддрдкрд╛рдИрдВрд▓реЗ рд▓реЗрдмрд▓ (рдиреЛрдбрд╣рд░реВ рд░ рдкреЛрдбрд╣рд░реВрдХреЛ рд╕рдореВрд╣) рдорд╛ рд▓рд╛рдЧреВ рд╣реБрдиреЗ рдЧреНрд▓реЛрдмрд▓ рдиреЗрдЯрд╡рд░реНрдХ рдиреАрддрд┐ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ рд░ рд╡рд┐рднрд┐рдиреНрди рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░рд╣рд░реВрд╕рдБрдЧ рдиреАрддрд┐рд╣рд░реВ рд▓рд╛рдЧреВ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред рдпрд╕рд▓реЗ рд╕реБрд░рдХреНрд╖рд╛ рд░ рдиреЗрдЯрд╡рд░реНрдХ рдбрд┐рдЬрд╛рдЗрди рдкреЗрд╢реЗрд╡рд░рд╣рд░реВрд▓рд╛рдИ "рд╕рдмреИ рдХреБрд░рд╛" (рдЕрдиреНрддрдмрд┐рдиреНрджреБ рдкреНрд░рдХрд╛рд░рд╣рд░реВ) рд▓рд╛рдИ рдПрдХреИрдЪреЛрдЯрд┐ рдХреНрдпрд╛рд▓рд┐рдХреЛ рдиреАрддрд┐рд╣рд░реВрдХреЛ рд╕рд╛рде рдПрдХрд▓ рдиреАрддрд┐ рднрд╛рд╖рд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рд╕рд╣рдЬ рд░реВрдкрдорд╛ рд╕реБрд░рдХреНрд╖рд┐рдд рдЧрд░реНрди рдЕрдиреБрдорддрд┐ рджрд┐рдиреНрдЫред

рд╕реНрд╡реАрдХреГрддрд┐: рдо рдзрдиреНрдпрд╡рд╛рдж рджрд┐рди рдЪрд╛рд╣рдиреНрдЫреБ рд╕реЗрди рдХреНрд░рдореНрдкреНрдЯрди ╨╕ рдПрд▓реЗрдХреНрд╕рд╛ рдкреЛрд▓рд┐рдЯрд╛ рддрд┐рдиреАрд╣рд░реВрдХреЛ рд╕рдореАрдХреНрд╖рд╛ рд░ рдмрд╣реБрдореВрд▓реНрдп рдЬрд╛рдирдХрд╛рд░реАрдХреЛ рд▓рд╛рдЧрд┐ред

рд╕реНрд░реЛрдд: www.habr.com

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдердкреНрди