Зошто вашата iPhone апликација покажува еден IP, а серверот запишува друг
Адреса на интерфејс, крајна точка на сокет и изворот што серверот го запишува одговараат на различни прашања. VPN додава контекст; не ги прави еден број.
Пристигнуваат тикети во поддршката во кои се вели дека апликацијата покажува една адреса, а серверот запишал друга, и потоа прашуваат која од двете лаже. Ниту една; тоа се две набљудувања на две различни нешта. Адреса врзана за интерфејс, адреса врзана за сокет и изворна адреса што ја гледа далечна служба одговараат на три одделни прашања. VPN додава мрежен контекст на телефонот и не ги собира тие три во еден број за целиот уред. Прочитајте ги имињата на полињата во тикетот пред да ги прочитате адресите.
Што обично опишува тикетот
Замислете телефон на Wi-Fi со кренат тунел. Wi-Fi интерфејсот држи LAN адреса, интерфејсот на тунелот држи доделена внатрешна адреса, а барањето што излегува низ тунелот пристигнува во јавна служба од каков и да е извор што ќе преживее какво било преведување на патот. Апликацијата што ја печати внатрешната адреса и серверот што го запишува преведениот извор и двата известуваат точно, и тие две вредности никогаш нема да се совпаднат.
Трите набљудувања се разликуваат по тоа што можат да докажат, а не само по тоа што опишуваат.
| Observation | What it describes | What it cannot prove |
|---|---|---|
| An address on a local interface | One configured attachment: Wi-Fi, cellular or a tunnel | The source a remote site receives |
| A socket's local endpoint | The binding used by that one connection | The address after translation further along |
| The peer address at a service | What arrived at that observation point | Any other interface on the phone |
Држете ја таа табела до кодот што ги пополнува овие вредности во тикет, зашто најголемиот дел од забуната овде е замена на колони, а не мрежна дефект.
На што може и на што не може да одговори повик на сокет
На ниво на API, getsockname известува за локалната крајна точка што моментално е врзана за одреден сокет. За поврзан сокет тоа е изворот што јадрото го избрало за таа врска, што е веќе поспецифично од кој и да е список на интерфејси. Тоа не е пребарување на јавна адреса, и неговото повикување на неврзан сокет не ви кажува речиси ништо. Што и да врати, тоа може подоцна да биде препишано на патот, така што само сопственото набљудување на службата е меродавно за она што службата го примила.
На платформите на Apple страната на интерфејсите има одделна површина: поставките на тунелот ги наведуваат адресите доделени на интерфејсот на тунелот. Нивното читање ви кажува како бил конфигуриран тунелот, и не ви кажува кој пат го поминал дадено барање, зашто рутирањето и правилата по апликација го решаваат тоа за секоја врска.
Поделениот тунел ја прави разликата видлива. Едно барање може да излезе низ тунелот, додека следното, насочено кон друга дестинација или друга фамилија адреси, не излегува, така што два резултата од истата апликација со разлика од секунди можат да бидат чесни и различни.
Изберете го набљудувањето што одговара на прашањето
Избирајте намерно, наместо да мерите сѐ. За она што го гледа бекендот, запишувајте го изворот во бекендот, и каде напред стои обратен прокси, читајте ја адресата на клиентот од заглавјето за препраќање што вашето распоредување навистина го поставува, а не од нешто што го испратил клиентот.
За дали тунелот е конфигуриран, читајте го интерфејсот. За дали сообраќајот на оваа апликација го користел, испратете сообраќај од таа апликација до дестинација што ја контролирате и споредете го изворот на двата краја.
Правилата по апликација заслужуваат своја реченица. Резултатот од прелистувач е доказ за тој прелистувач, а управуван тунел по апликација може да стави две апликации на истиот телефон на различни патишта во истиот момент. Проверката на покриеност значи испраќање сообраќај од предметната апликација, во предметната фамилија адреси.
Имињата на интерфејсите не се детектор
Не користете име на интерфејс ни како проверка за VPN. Имињата не се јавен договор, а телефонот може да држи неколку приклучоци додека само еден од нив го носи вашето барање.
Именувајте го полето според набљудувањето што го држи. local_interface_address, socket_local_endpoint и service_observed_source се незграпни и недвосмислени, а недвосмисленоста е она што го сакате кога вредноста ќе заврши во тикет за поддршка една недела подоцна. Една колона со име device IP ќе ги собере сите три и потоа ќе ѝ се верува како да е една.
Држете го идентитетот надвор од колоната за адреса
Заеднички излез од VPN не е идентитет на корисник, а приватна адреса не е пристапни податоци. Двете опишуваат пат, а не личност, и третирањето на кое и да е од нив како автентикација претвора случајна рутирачка грешка во одлука за авторизација.
Кога некој прашува која адреса ја има телефонот, полезниот одговор е прашање за тоа која врска и кој набљудувач. Дефиницијата на getsockname вреди да се цитира за средниот случај, зашто го решава прашањето за сокетот без да се преправа дека ги решава другите две.
Потоа запишете која од трите вашиот производ навистина треба да ја прикажува, и избришете ги другите две од интерфејсот.