Puncte:2

Dirijați traficul prin interfața fizică

drapel cn

Am două interfețe Ethernet pe o mașină Linux. Ambele au următoarele adrese IP: Interfața A: 10.0.1.5/24 Interfața B: 10.0.2.5/24

Ambele interfețe sunt conectate la un router care rutează între cele două rețele.

Acum vreau să încep o măsurătoare iperf3 în care leg serverul la Interfața A și clientul la Interfața B.

Problema este că traficul nu părăsește interfața fizică, ci curge doar prin nucleu, rezultând o viteză care nici măcar nu este posibilă pe legătură.

Ce pot face pentru a forța traficul prin interfața fizică? ip_forward este dezactivat.

Mulțumiri.

Puncte:1
drapel cl
A.B

Ar fi foarte greu (dar nu imposibil) pentru a avea un sistem Linux, folosind o singură stivă de rutare, să efectueze rutarea multi-homed a pachetelor de la el însuși către el însuși fără a utiliza uite interfață.

Dar este foarte ușor pe Linux să creați stive de rețea suplimentare pentru a simula mai multe sisteme într-un singur sistem: prin utilizarea spații de nume de rețea.

Aici se poate renunța la unul dintre cele două NIC-uri unui nou spațiu de nume de rețea, care va fi un egal cu spațiul de nume de rețea inițial (gazdă). Nu vor comunica direct, ci doar prin routerul extern. Să presupunem că interfețele sunt într-adevăr numite A și B și că routerul folosește adrese 10.0.1.1/24 + 10.0.2.1/24.

  • creați un nou spațiu de nume de rețea cu un management suplimentar facilitat atunci când utilizați iproute2 instrumente (sub capotă, pseudo-fișierele spațiilor de nume sunt montate pentru a păstra resursa fără un proces etc.).

    ip netns adauga sideB
    
  • mutați interfața B la noul spațiu de nume de rețea:

    ip link set dev B netns sideB
    

    notă: interfețele wireless necesită utilizarea eu comanda în schimb.

  • configurați noul spațiu de nume de rețea:

    Toate setările sale de rețea se pierd atunci când o interfață schimbă spațiul de nume (atât pe gazda unde interfața dispare declanșând adresele care dispar, declanșând dispariția rutelor, cât și pe noul spațiu de nume de rețea):

    ip -n sideB link set dev B sus
    ip -n adresa sideB adăugați 10.0.2.5/24 dev B
    

    Nu este necesar, dar în cazul în care iperf3 devine confuz, aveți o interfață funcțională de loopback:

    ip -n sideB link set lo up
    
  • configurați rute între cele două părți (spațiul de nume inițial/gazdă ar putea să îl aibă deja prin ruta implicită, dar să fim expliciți)

    ruta ip adăugați 10.0.2.0/24 prin 10.0.1.1 dev A
    
    ip -n sideB route add 10.0.1.0/24 prin 10.0.2.1 dev B
    

Acum se poate rula (în două terminale):

iperf3 -s

ip netns exec sideB iperf3 -c 10.0.1.5

cu clientul rulând în noul spațiu de nume de rețea.

Odată ce măsurarea s-a încheiat, ștergerea spațiului de nume de rețea va returna NIC-ul la spațiul de nume gazdă. Dar dacă vreun proces este lăsat din greșeală folosind acest spațiu de nume de rețea (ceva de genul ip netns exec side B setsid sleep 9999) cel ip netns șterge sideB de mai jos va elimina doar spațiul de nume din vizualizarea iproute2 instrumente, dar nu eliminați de fapt spațiul de nume până când procesul se termină, lăsând NIC dificil de recuperat. Deci mai bine mutați-l înapoi mai întâi:

ip -n sideB link set dev B netns 1
ip netns șterge sideB

Unde 1 înseamnă spațiul de nume de rețea al PID 1: spațiul de nume inițial/gazdă. În plus, acest lucru permite efectuarea experimentului în interiorul unui container cărora li sa dat NIC-uri fizice (deoarece acolo 1Spațiul de nume al rețelei este spațiul de nume al containerului, în loc de spațiul de nume al gazdei actuale) sau NIC-ul fizic ar reapărea pe gazdă și ar fi pierdut pentru totdeauna în container dacă nu există acces la gazdă.

Dacă nu există niciun instrument (cum ar fi udev + ifupdownlui permite-hotplug sau NetworkManager) detectând apariția NIC-ului, acesta va trebui din nou configurat la întoarcere.

drapel cn
Mulțumiri! Din păcate, nu pot vota încă.

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.