Puncte:0

Docker Containaer modul promiscuu funcționează parțial

drapel us

Am o stare ciudată de rețea virtuală (docker bridges).

Am două dockere conectate la același bridge prin docker-compose. Un docker este "sondă" și unul este "injector". Injector folosește tcpreplay pentru a reda captura și „sonda” ar trebui să o primească prin tcpdump. Inutil să spunem că captura reluată nu are nicio legătură cu IP-urile sau mac-urile NICS atașate la punte.ping-ul funcționează bine între gazde.

Acum există o a treia NIC expusă automat mașinii gazdă de către docker.

       +--->NIC1 [docker „injector” / folosește tcpreplay pentru a injecta]
bridge +--->NIC2 [docker „sondă” / folosește tcpdump pentru a asculta]
|
+--- gazdă NIC3 [folosită pentru testare uneori ca injector și uneori ca ascultător]  

Acum, ceea ce se întâmplă de fapt este că atunci când tcpreplay este rulat de la HOST (injectează captura prin NIC3), totul funcționează bine, iar tcpdump pe „sondă” arată traficul reluat. Cu toate acestea, când tcpreplay este utilizat pe injector și injectează captura prin NIC1, numai primele două pachete ale capturii pot fi văzute pe „sondă” și apoi tot traficul pe „sondă” se oprește (de asemenea, injectarea de la gazdă va înceta să funcționeze). dacă tcpdump este rulat pe NIC3, acesta primește în mod normal tot traficul capturat de la injector.

  • ifconfig pe „sondă” nu arată niciun pachet pierdut
  • iptables pe gazdă nu mărește contoarele de pachete abandonate (sper că o fac corect "sudo iptables -L -v -n | grep -i drop")
  • tcpdump activează automat modul promiscuu pe sondă

Are cineva o explicație pentru acest comportament asimetric? Ai idee cum să-l depanezi?

Injector și gazdă - AlmaLinux:8, sonda -Centos:7 tcpreplay versiunea 4.4.1

Boris avatar
drapel us
@A.B Mulțumesc!!! Asta măcar îmi dă o direcție. Aveți vreun indiciu despre cum să vedeți dacă br_netfilter provoacă blocarea. Poate niște contoare, rutine de urmărire a nucleului...
Puncte:1
drapel us

Motivul pentru care bridge-ul nu trecea de cadre este din cauza mecanismului de învățare mac. Să presupunem că vrem să injectăm trafic de la MAC1->MAC2 pe NIC1 la containerul injectorului, filtrul punte va trece (inunda la sondă) traficul de la MAC1 --> MAC2 și va afla că MAC1 este situat pe NIC1, dar apoi va refuza să inunde tot ce vine de la MAC2-->MAC1 pe același port, deoarece crede că MAC1 este situat pe același port din care vine traficul. Din nou, traficul care a fost injectat a fost înregistrat în altă parte și nu are nicio legătură cu topologia actuală a podului.

Dezactivarea mecanismului de învățare mac pe bridge așa cum este explicat Aici rezolvă problema și toate cadrele injectate de la injector vor fi inundate la sondă.

Motivul comportamentului asimetric atunci când traficul este injectat de la gazdă nu este clar. Dar văd că bridge-ul nu își activează cu adevărat mecanismul de învățare atunci când traficul este injectat de la NIC3, de ex. Mac-urile din traficul injectat nu apar pe lista mac-urilor învățate de la început din anumite motive.

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.