Att följa ett TPROXY-paket hela vägen till socketen
Kontrollera den mottagande socketen, paketmarkeringen och den lokala policyrutten som en enda leveransväg för en transparent proxy.
En TPROXY-räknare kan öka medan applikationen inte tar emot något. Regeln matchade, men lokal leverans beror fortfarande på policyrouting och en kompatibel mottagande socket.
Linux TPROXY kan fånga trafik utan att skriva om destinationen som DNAT gör. Paket som adresseras till en icke-lokal destination måste därför nå en lämplig lokal socket.
Följ leveransvägen
- Trafiken når avlyssningsvärden på det avsedda gränssnittet och adressfamiljen.
- Avlyssningsregeln och paketmarkeringen anger policyn för lokal leverans.
- En matchande policyregel väljer en rutt som levererar paketen lokalt.
- Proxyn använder en stödd transparent lyssnare med det socket-alternativ som krävs.
Kärnans IPv4-exempel kräver applikationsstöd för IP_TRANSPARENT. En vanlig lyssnare på samma port, eller en global icke-lokal bind-inställning, bevisar inte det stödet.
| Observation | Nästa kontroll |
|---|---|
| Inga relevanta inkommande paket | Trafikväg och ingångsgränssnitt |
| Paket anländer; avlyssningsräknaren står still | Adressfamilj, kedja och matchningsvillkor |
| Regeln matchar; lokal leverans misslyckas | Markering och val av policyrutt |
| Socketen lyssnar; applikationen ser inget | Transparent socketförmåga och lyssnarens ägare |
| Begäran börjar; senare svar misslyckas | Matchning av etablerad socket och returrutter |
Spara den inlästa konfigurationen och nätverksnamnrymden med varje observation. En senare regel kan skriva över en markering eller välja en annan rutt. Om avlyssningen sker på värden medan lyssnaren körs i en container levererar inte en giltig värdlokal rutt automatiskt in i den containern.
Räkna med senare paket
Kärnexemplet innehåller socketmatchning och en DIVERT-väg som markerar paket som tillhör transparenta sockets. Om den utelämnas kan senare trafik stanna på en annan väg även när den första avlyssningen lyckas.
Använd applikationens stödda transparenta läge och motsvarande kärndokumentation för varje adressfamilj. Ett IPv4-kommando för lokal rutt konfigurerar inte IPv6, och stöd i en familj bevisar inte socketbeteendet i den andra.
TPROXY genererar inte heller någon SOCKS-förhandling. En komponent från transparent till SOCKS måste fortfarande hitta destinationen och förhandla med sin uppström.
Byta från REDIRECT
Notera hur den befintliga applikationen får den ursprungliga destinationen. REDIRECT ändrar destinationen och förlitar sig på rätt återställningsmekanism; TPROXY behöver sin transparenta socket och routinguppsättning. Välj efter applikationen och källadresspolicyn.
Koppla räknare till den valda rutten, socketförmågan och applikationsloggen innan du byter avlyssningsläge. På en distribution som tillhandahåller de nödvändiga funktionerna är ett saknat leveranssteg en bättre utgångspunkt än att kompilera om kärnan.