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

  1. Trafikken når opfangningsværten på det tilsigtede interface og den tilsigtede adressefamilie.
  2. Opfangningsreglen og pakkemærket angiver policyen for lokal levering.
  3. En matchende policy-regel vælger en rute, der leverer pakkerne lokalt.
  4. 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.

ObservationNæste kontrol
Ingen relevante indgående pakkerTrafikvej og indgangsinterface
Pakker ankommer; opfangningstælleren står stilleAdressefamilie, kæde og matchbetingelser
Reglen matcher; lokal levering fejlerMærke og valg af policy-rute
Socketten lytter; applikationen ser intetTransparent socket-evne og lytterens ejer
Anmodningen begynder; senere svar fejlerMatch 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.

Relaterede artikler