Puncte:1

Pachetul NAT iese pe Gateway greșit

drapel us
Psi

Am două interfețe, să zicem eth0 și eth0.4000 ca vlan. Ambele au un gateway implicit. Totul funcționează conform așteptărilor atunci când un proces ascultă direct pe interfață.

Dar nu pentru hostPort legături de Kubernetes.

vlan.gw-mac > eth0-mac, ethertype 802.1Q (0x8100), lungime 78: vlan 4000, p 0, ethertype IPv4 (0x0800), clientIP.38712 > vlanIP.80: Flags [S]
eth0-mac > eth0.gw-mac, ethertype IPv4 (0x0800), lungime 74: vlanIP.80 > clientIP.38712: Flags [S.]

SYN vine de la vlan.gateway, este redirecționat către Container, dar răspunsul SYN-ACK părăsește stiva eth0.gw si nu cea corecta vlan.gw dar tcpdump arată că IP-ul sursă este vlanIP.

Tabelele de rutare arată bine:

# ip route ajunge la <clientIP> de la <vlanIP> dev eth0.4000
<clientIP> de la <vlanIP> prin <vlan.gw> dev eth0.4000 table 1 uid 0

Maparea hostPort este creată prin Portmap CNI-Plugin care folosește DNAT și SNAT (detalii legate). Deci, căutarea gateway-ului se întâmplă devreme. Când adaug manual o rută de la container-ip la tabelul de căutare 1, funcționează folosind interfața vlan, dar întrerupe eth0.

Deci întrebările sunt - ce trebuie făcut pentru ca rutarea să aibă loc după NAT a înlocuit container-ip-ul cu interfață-ip?

Puncte:2
drapel de

Aveți dreptate că SNAT-ul implicit din DNAT are loc prea târziu: în acel moment, decizia de rutare a fost deja luată, deci IP-ul sursă corect este folosit pe interfața incorectă.

Pentru a evita acest lucru, va trebui să aprofundați rutarea bazată pe politici. O tehnică descrisă în https://superuser.com/questions/638044/source-based-policy-routing-nat-dnat-snat-aka-multi-wans-on-centos-5 poate fi utilizat.

Pentru aceasta, trebuie să aveți în lanțul PREROUTING din tabelul Mangle:

-A PREROUTING -i vlanIface -m state --state NEW,RELATED,STABLISHED -d <vlanIP> -j CONNMARK --set-mark 0x10/0x10
-A PREROUTING -m connmark --mark 0x10/0x10 -j CONNMARK --restore-mark --cfmask 0x10

În acest fel, toate pachetele aparținând conexiunilor care au fost inițiate prin vlanIface vor avea 0x10 setat în fwmark. Acesta poate fi apoi folosit pentru PBR. Presupunând că rețeaua de pod este 10.0.0.0/8 și tabelul pentru gateway-ul secundar este 1:

regulă ip adăugați fwmark 0x10/0x10 din 10.0.0.0/8 tabelul 1

S-ar putea să renunți la de la 10.0.0.0/8, dar este o plasă de siguranță utilă împotriva marcajelor fwmark setate incorect (de exemplu, din cauza mărcii specifice utilizate de alte lucruri).

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.