Een TPROXY-pakket volgen tot aan de socket
Controleer de ontvangende socket, de pakketmarkering en de lokale policy-route als één leveringspad van een transparante proxy.
Een TPROXY-teller kan oplopen terwijl de toepassing niets ontvangt. De regel kwam overeen, maar lokale aflevering hangt nog steeds af van policy-routing en een compatibele ontvangende socket.
Linux TPROXY kan verkeer onderscheppen zonder de bestemming te herschrijven zoals DNAT doet. Pakketten die aan een niet-lokale bestemming zijn geadresseerd, moeten daarom een geschikte lokale socket bereiken.
Volg het leveringspad
- Het verkeer bereikt de onderscheppingshost op de bedoelde interface en adresfamilie.
- De onderscheppingsregel en de pakketmarkering bepalen het beleid voor lokale aflevering.
- Een overeenkomende beleidsregel kiest een route die de pakketten lokaal aflevert.
- De proxy gebruikt een ondersteunde transparante listener met de vereiste socketoptie.
Het IPv4-voorbeeld van de kernel vereist toepassingsondersteuning voor IP_TRANSPARENT. Een gewone listener op dezelfde poort, of een globale niet-lokale bindinstelling, bewijst die ondersteuning niet.
| Waarneming | Volgende controle |
|---|---|
| Geen relevante inkomende pakketten | Verkeerspad en invoerinterface |
| Pakketten komen aan; de onderscheppingsteller blijft staan | Adresfamilie, keten en overeenkomende voorwaarden |
| Regel komt overeen; lokale aflevering mislukt | Markering en keuze van de policy-route |
| Socket luistert; toepassing ziet niets | Transparante socketmogelijkheid en eigenaar van de listener |
| Verzoek begint; latere antwoorden mislukken | Overeenkomst van gevestigde socket en retourroutes |
Bewaar de geladen configuratie en de netwerknamespace bij elke waarneming. Een latere regel kan een markering overschrijven of een andere route kiezen. Als de onderschepping op de host gebeurt terwijl de listener in een container draait, levert een geldige host-lokale route niet automatisch in die container.
Reken met latere pakketten
Het kernelvoorbeeld bevat socketovereenkomst en een DIVERT-pad dat pakketten van transparante sockets markeert. Het weglaten daarvan kan later verkeer op een ander pad laten, zelfs wanneer de eerste onderschepping slaagt.
Gebruik de ondersteunde transparante modus van de toepassing en de bijbehorende kerneldocumentatie per adresfamilie. Een IPv4-commando voor de lokale route configureert geen IPv6, en ondersteuning in de ene familie bewijst niet het socketgedrag van de andere.
TPROXY genereert ook geen SOCKS-onderhandeling. Een component van transparant naar SOCKS moet nog steeds de bestemming achterhalen en met zijn upstream onderhandelen.
Overstappen van REDIRECT
Noteer hoe de bestaande toepassing de oorspronkelijke bestemming verkrijgt. REDIRECT wijzigt de bestemming en vertrouwt op het juiste herstelmechanisme; TPROXY heeft zijn transparante socket en routingopstelling nodig. Kies op basis van de toepassing en het bronadresbeleid.
Koppel tellers aan de gekozen route, de socketmogelijkheid en het toepassingslog voordat je van onderscheppingsmodus wisselt. Op een distributie die de benodigde faciliteiten levert, is een ontbrekende leveringsstap een beter startpunt dan het opnieuw compileren van de kernel.