Do podpory chodia tikety, že aplikácia zobrazuje jednu adresu, kým server zaznamenal inú, a potom sa pýtajú, ktorá z nich klame. Ani jedna; sú to dve pozorovania dvoch rôznych vecí. Adresa viazaná na rozhranie, adresa viazaná na socket a zdrojová adresa, ktorú vidí vzdialená služba, odpovedajú na tri oddelené otázky. VPN pridáva telefónu sieťový kontext a nezlieva tie tri do jedného čísla pre celé zariadenie. Prečítajte si názvy polí v tikete skôr, než prečítate adresy.

Čo tiket zvyčajne opisuje

Predstavte si telefón na Wi-Fi so zdvihnutým tunelom. Rozhranie Wi-Fi drží LAN adresu, rozhranie tunela drží pridelenú vnútornú adresu a požiadavka, ktorá vyjde tunelom, dorazí do verejnej služby z akéhokoľvek zdroja, ktorý prežije akýkoľvek preklad na ceste. Aplikácia, ktorá vypisuje vnútornú adresu, a server, ktorý zaznamenáva preložený zdroj, obe hlásia presne, a tie dve hodnoty sa nikdy nestretnú.

Tri pozorovania sa líšia v tom, čo môžu dokázať, nie len v tom, čo opisujú.

ObservationWhat it describesWhat it cannot prove
An address on a local interfaceOne configured attachment: Wi-Fi, cellular or a tunnelThe source a remote site receives
A socket's local endpointThe binding used by that one connectionThe address after translation further along
The peer address at a serviceWhat arrived at that observation pointAny other interface on the phone

Majte tú tabuľku pri kóde, ktorý tieto hodnoty plní do tiketu, pretože väčšina zmätku je tu zámena stĺpcov, nie sieťová porucha.

Na čo volanie socketu odpovie a na čo nie

Na úrovni API getsockname hlási lokálny koncový bod, ktorý je práve viazaný na určitý socket. Pri pripojenom sockete je to zdroj, ktorý jadro pre to spojenie vybralo, čo je už konkrétnejšie než akýkoľvek zoznam rozhraní. Nie je to hľadanie verejnej adresy a volanie na nepripojenom sockete vám nepovie takmer nič. Čokoľvek vráti, môže byť neskôr na ceste prepísané, takže o tom, čo služba prijala, je smerodajné len jej vlastné pozorovanie.

Na platformách Apple má strana rozhraní samostatný povrch: nastavenia tunela vypisujú adresy pridelené rozhraniu tunela. Ich čítanie vám povie, ako bol tunel nakonfigurovaný, a nepovie, ktorou cestou sa daná požiadavka vydala, pretože smerovanie a pravidlá pre jednotlivé aplikácie to rozhodujú pre každé spojenie.

Rozdelený tunel medzeru zviditeľní. Jedna požiadavka môže vyjsť tunelom, kým nasledujúca, mierená na iné cieľové miesto alebo rodinu adries, nie, takže dva výsledky tej istej aplikácie pár sekúnd od seba môžu byť poctivé a rôzne.

Vyberte pozorovanie, ktoré zodpovedá otázke

Vyberajte zámerne namiesto instrumentovania všetkého. Pre to, čo vidí backend, zaznamenávajte zdroj na backende, a kde vpredu stojí reverzný proxy, čítajte adresu klienta z preposielacej hlavičky, ktorú vaše nasadenie skutočne nastavuje, a nie z čohokoľvek, čo poslal klient.

Či je tunel nakonfigurovaný, zistíte z rozhrania. Či ho prevádzka tejto aplikácie použila, zistíte tak, že z tej aplikácie pošlete prevádzku na cieľ, ktorý ovládate, a porovnáte zdroj na oboch koncoch.

Pravidlá pre jednotlivé aplikácie si zaslúžia vlastnú vetu. Výsledok prehliadača je dôkaz o tom prehliadači a spravovaný tunel pre jednotlivé aplikácie môže postaviť dve aplikácie na tom istom telefóne na rôzne cesty v tej istej chvíli. Overenie pokrytia znamená poslať prevádzku z dotyčnej aplikácie, v dotyčnej rodine adries.

Názvy rozhraní nie sú detektor

Nepoužívajte názov rozhrania ani ako kontrolu VPN. Názvy nie sú verejná zmluva a telefón môže mať viac pripojení, kým len jedno z nich nesie vašu požiadavku.

Pomenujte pole podľa pozorovania, ktoré drží. local_interface_address, socket_local_endpoint a service_observed_source sú neohrabané a jednoznačné, a jednoznačnosť je to, čo chcete, keď hodnota o týždeň skončí v tikete podpory. Jeden stĺpec s názvom device IP pozbiera všetky tri a potom sa mu bude veriť ako jednému.

Držte identitu mimo stĺpca adresy

Zdieľaný výstup VPN nie je identita používateľa a súkromná adresa nie je prístupový údaj. Obe opisujú cestu, nie človeka, a zaobchádzanie s ktoroukoľvek z nich ako s autentizáciou mení smerovaciu náhodu na rozhodnutie o oprávnení.

Keď sa niekto pýta, akú adresu má telefón, užitočná odpoveď je otázka, ktoré spojenie a ktorý pozorovateľ. Definíciu getsockname stojí za to citovať pre stredný prípad, pretože rieši otázku socketu bez toho, aby predstierala, že rieši tie dve ostatné.

Potom si zapíšte, ktorú z troch má váš produkt skutočne zobrazovať, a ostatné dve z rozhrania vymažte.

Súvisiace články