Nokon spør kvifor ein VPN-brukar dukkar opp i applikasjonsloggen med ei adresse som høyrer til gatewayen, eller med ei adresse som endra seg etter lunsj. Svaret byrjar med kva verdien er: ei oppføring som nettenaren la i førespurnadsmiljøet. Det er ikkje eit oppslag i tunnelen, ikkje ein sertifikatidentitet og ikkje eit løfte om at nummeret høyrer til éin person. Å lese det som ein av dei tre gir sjølvsikre svar som er feil på ulike måtar.

Verdien kjem frå tenaren, ikkje frå tunnelen

PHP får førespurnadsmiljøet frå det som køyrde skriptet. PHP-referansen for tenarvariablar skildrar desse oppføringane som laga av nettenaren, med ein tilgjenge som avheng av korleis førespurnaden kom inn.

Eit skript som køyrer som kommandolinje-hook i VPN-en, er ein heilt annan køyringskontekst. Det har ingen webførespurnad, ingen klientssocket og ingen REMOTE_ADDR, og difor gir kopiert webkode i ein hook tomme verdiar i staden for feil. Hooken har sitt eige miljø, fylt av daemonen, og det er dokumentert separat. Å strekkje seg etter REMOTE_ADDR der er å strekkje seg etter ein variabel som aldri vart sett.

Hald den skilnaden i tankane før du samanliknar to loggar. Du samanliknar kanskje ein sideførespurnad med ein hook, og det er ikkje nokon samanlikning i det heile. Kontroller køyringskonteksten fyrst og adressa etterpå.

Gå vegen til førespurnaden før du stolar på nummeret

Den rapporterte adressa er peer for den tilkoplinga nettenaren såg. Set noko mellom klienten og den tenaren, og peeren endrar seg. Omsetjing, terminering og lastbalansering flyttar kvar observasjonen eitt hopp lenger vekk frå brukaren.

Fire vanlege vegar gir fire ulike observasjonar.

Path to the listenerWhat can be reported
Client routed straight to the private listener, no translationThe client's tunnel address
Gateway translates the source before forwardingThe gateway's translated address
Reverse proxy terminates the client and opens its own backend connectionThe proxy's backend address
Load balancer in front of two proxiesWhichever hop the server treats as its peer

Skriv ned vegen med destinasjonsnamnet, adressefamilien og kvart omsetjingspunkt. Utan det kartet ser ein riktig og ein feil verdi like ut i ei logglinje. To linjer diagram sparar ein ettermiddag med diskusjon.

Erstatning skjer berre der ho er konfigurert

Ein tenar eller eit rammeverk kan med vilje erstatte klientadressa. Apaches remote-IP-modul og NGINX' real-IP-modul gjer begge dette, og verdien PHP får avheng av den konfigurasjonen pluss parametrane som vert sende til skripthandteraren.

REMOTE_ADDR er altså ikkje universelt den urørte TCP-peeren. Det er peeren slik tenaren valde å rapportere han etter å ha brukt sin eigen policy. Den skilnaden avgjer om verdien er bevis eller dekorasjon.

Spør tenareigaren kva felt som er autoritativt i denne installasjonen, og korleis den opphavlege peeren vert halden når erstatning skjer. Om ingen kan svare, er loggen enno ikkje bevis for noko.

Ikkje les videresendingshovud på tillit

Ein kallande part kan sende videresendingshovud sjølv. Å handsame den fyrste kommaseparerte oppføringa som ei verifisert brukaradresse er å velje å tru på kven som helst som koplar til, som er det motsette av kva hovudet er til for. Hovudet skildrar ei kjede, og berre eit klarert lag kan gå god for den kjedja.

Bruk støtta for klarerte proxyar i tenaren eller rammeverket med den faktiske proxykjedja konfigurert, og lat ho forkaste verdiar frå kjelder utanfor den kjedja. Handskriven parsing er der dei fleste interessante feila bur.

Ei proxyrapportert adresse endrar heller ikkje pakkekjelda som ein brannmur lenger oppe ser. Hald HTTP-metadata og nettverksfiltrering som separate observasjonar, fordi dei svarar på ulike spørsmål.

Bruk identiteten til applikasjonen til avgjerder

For tilgang til postane til ein brukar må du stole på den autentiserte principalen og autorisasjonsreglane i applikasjonen. Ei intern adresse kan tildelast på nytt, og éi omsett adresse kan stå for hundrevis av samtidige brukarar. Ingen av desse eigenskapane kan ein adressekontroll reparere.

Om drift treng å knyte ein førespurnad til ein VPN-økt, kople den observerte adressa og tidsstempelet til autoritative øktpostar etter omsetjingsmodellen du har dokumentert. Det gir ein assosiasjon du kan forsvare; ei adresse åleine gjer det ikkje.

Logg for diagnostikk dei få felta du treng i staden for heile tenararrayet, som kan bere hovud og autentiseringsmateriale. Den nyttige konklusjonen seier kva denne verdien tyder i denne installasjonen, ikkje kva verdi som liknar mest på ein klient.

Relaterte artiklar