Urmărirea unui pachet TPROXY până la socket
Verificați socketul receptor, marca pachetului și ruta de politică locală ca un singur drum de livrare al proxy-ului transparent.
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
- Traficul ajunge la gazda de interceptare pe interfața și familia de adrese prevăzute.
- Regula de interceptare și marca pachetului stabilesc politica de livrare locală.
- O regulă de politică potrivită alege o rută care livrează pachetele local.
- 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ție | Următoarea verificare |
|---|---|
| Niciun pachet de intrare relevant | Drumul traficului și interfața de intrare |
| Pachetele sosesc; contorul de interceptare stă pe loc | Familia 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 nimic | Capacitatea 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.