Følg en TPROXY-pakke helt til socketten
Kontrollér den modtagende socket, pakkemærket og den lokale policy-rute som én leveringsvej for en transparent proxy.
En TPROXY-tæller kan stige, mens applikationen ikke modtager noget. Reglen matchede, men lokal levering afhænger stadig af policy-routing og en kompatibel modtagende socket.
Linux TPROXY kan opfange trafik uden at omskrive destinationen, som DNAT gør. Pakker, der er adresseret til en ikke-lokal destination, skal derfor nå en egnet lokal socket.
Følg leveringsvejen
- Trafikken når opfangningsværten på det tilsigtede interface og den tilsigtede adressefamilie.
- Opfangningsreglen og pakkemærket angiver policyen for lokal levering.
- En matchende policy-regel vælger en rute, der leverer pakkerne lokalt.
- Proxien bruger en understøttet transparent lytter med den krævede socket-indstilling.
Kernens IPv4-eksempel kræver applikationsunderstøttelse af IP_TRANSPARENT. En almindelig lytter på samme port, eller en global ikke-lokal bind-indstilling, beviser ikke den understøttelse.
| Observation | Næste kontrol |
|---|---|
| Ingen relevante indgående pakker | Trafikvej og indgangsinterface |
| Pakker ankommer; opfangningstælleren står stille | Adressefamilie, kæde og matchbetingelser |
| Reglen matcher; lokal levering fejler | Mærke og valg af policy-rute |
| Socketten lytter; applikationen ser intet | Transparent socket-evne og lytterens ejer |
| Anmodningen begynder; senere svar fejler | Match på etableret socket og returruter |
Gem den indlæste konfiguration og netværksnavnerummet sammen med hver observation. En senere regel kan overskrive et mærke eller vælge en anden rute. Hvis opfangningen sker på værten, mens lytteren kører i en container, leverer en gyldig værtslokal rute ikke automatisk ind i den container.
Regn med senere pakker
Kerneeksemplet indeholder socket-match og en DIVERT-vej, der mærker pakker, som tilhører transparente sockets. Udelades den, kan senere trafik blive på en anden vej, selv når den første opfangning lykkes.
Brug applikationens understøttede transparente tilstand og den matchende kernedokumentation for hver adressefamilie. En IPv4-kommando til lokal rute konfigurerer ikke IPv6, og understøttelse i én familie beviser ikke socket-adfærden i den anden.
TPROXY genererer heller ikke SOCKS-forhandling. En komponent fra transparent til SOCKS skal stadig finde destinationen og forhandle med sin upstream.
Skift fra REDIRECT
Notér, hvordan den eksisterende applikation får den oprindelige destination. REDIRECT ændrer destinationen og afhænger af den rette gendannelsesmekanisme; TPROXY har brug for sin transparente socket og ruteopsætning. Vælg efter applikationen og kildadressepolitikken.
Sammenkobl tællere med den valgte rute, socket-evnen og applikationsloggen, før du skifter opfangningstilstand. På en distribution, der leverer de nødvendige faciliteter, er et manglende leveringstrin et bedre udgangspunkt end at genkompilere kernen.