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

  1. Het verkeer bereikt de onderscheppingshost op de bedoelde interface en adresfamilie.
  2. De onderscheppingsregel en de pakketmarkering bepalen het beleid voor lokale aflevering.
  3. Een overeenkomende beleidsregel kiest een route die de pakketten lokaal aflevert.
  4. 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.

WaarnemingVolgende controle
Geen relevante inkomende pakkettenVerkeerspad en invoerinterface
Pakketten komen aan; de onderscheppingsteller blijft staanAdresfamilie, keten en overeenkomende voorwaarden
Regel komt overeen; lokale aflevering misluktMarkering en keuze van de policy-route
Socket luistert; toepassing ziet nietsTransparante socketmogelijkheid en eigenaar van de listener
Verzoek begint; latere antwoorden mislukkenOvereenkomst 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.

Gerelateerde artikelen