Un contor TPROXY poate crește în timp ce aplicația nu primește nimic. Regula s-a potrivit, dar livrarea locală depinde în continuare de rutarea pe politici și de un socket receptor compatibil.

TPROXY din Linux poate intercepta traficul fără a rescrie destinația, așa cum face DNAT. Prin urmare, pachetele adresate unei destinații ne-locale trebuie să ajungă la un socket local eligibil.

Urmați drumul de livrare

  1. Traficul ajunge la gazda de interceptare pe interfața și familia de adrese prevăzute.
  2. Regula de interceptare și marca pachetului stabilesc politica de livrare locală.
  3. O regulă de politică potrivită alege o rută care livrează pachetele local.
  4. Proxy-ul folosește un ascultător transparent acceptat, cu opțiunea de socket necesară.

Exemplul IPv4 al nucleului cere suport din partea aplicației pentru IP_TRANSPARENT. Un ascultător obișnuit pe același port, sau o setare globală de legare ne-locală, nu dovedește acel suport.

ObservațieUrmătoarea verificare
Niciun pachet de intrare relevantDrumul traficului și interfața de intrare
Pachetele sosesc; contorul de interceptare stă pe locFamilia de adrese, lanțul și condițiile de potrivire
Regula se potrivește; livrarea locală eșueazăMarca și alegerea rutei de politică
Socketul ascultă; aplicația nu vede nimicCapacitatea socketului transparent și proprietarul ascultătorului
Cererea începe; răspunsurile ulterioare eșueazăPotrivirea socketului stabilit și rutele de întoarcere

Păstrați configurația încărcată și spațiul de nume de rețea la fiecare observație. O regulă ulterioară poate suprascrie o marcă sau poate alege altă rută. Dacă interceptarea are loc pe gazdă în timp ce ascultătorul rulează într-un container, o rută locală validă a gazdei nu livrează automat în acel container.

Luați în calcul pachetele ulterioare

Exemplul nucleului include potrivirea socketului și o cale DIVERT care marchează pachetele socketurilor transparente. Omiterea ei poate lăsa traficul ulterior pe altă cale chiar și atunci când interceptarea inițială reușește.

Folosiți modul transparent acceptat de aplicație și documentația nucleului corespunzătoare pentru fiecare familie de adrese. O comandă de rută locală IPv4 nu configurează IPv6, iar suportul într-o familie nu dovedește comportamentul socketului din cealaltă.

TPROXY nu generează nici negocierea SOCKS. O componentă de la transparent la SOCKS tot trebuie să descopere destinația și să negocieze cu serverul său amonte.

Trecerea de la REDIRECT

Notați cum obține aplicația existentă destinația originală. REDIRECT schimbă destinația și se bazează pe mecanismul de recuperare potrivit; TPROXY are nevoie de socketul său transparent și de aranjamentul de rutare. Alegeți în funcție de aplicație și de politica adresei sursă.

Asociați contoarele cu ruta aleasă, cu capacitatea socketului și cu jurnalul aplicației înainte de a schimba modul de interceptare. Pe o distribuție care oferă mijloacele necesare, un pas de livrare lipsă este un punct de plecare mai bun decât recompilarea nucleului.

Articole similare