Ինչ-որ մեկը հարցնում է, թե ինչու VPN օգտատերը հավելվածի մատյանում հայտնվում է դարպասին պատկանող հասցեով կամ ճաշից հետո փոխված հասցեով։ Պատասխանը սկսվում է նրանից, թե ինչ է այդ արժեքը՝ գրառում, որը վեբ սերվերը տեղադրել է հարցման միջավայրում։ Սա թունելին ուղղված հարցում չէ, սերտիֆիկատի ինքնություն չէ և խոստում չէ, որ համարը պատկանում է մեկ մարդու։ Այն այս երեքից որևէ մեկը կարդալը տալիս է ինքնավստահ պատասխաններ, որոնք տարբեր ձևերով սխալ են։

Արժեքը գալիս է սերվերից, ոչ թունելից

PHP-ն հարցման միջավայրը ստանում է նրանից, ինչը կատարել է սկրիպտը։ PHP-ի սերվերային փոփոխականների տեղեկատուն նկարագրում է այս գրառումները որպես վեբ սերվերի ստեղծած, իսկ դրանց հասանելիությունը կախված է նրանից, թե ինչպես է ժամանել հարցումը։

VPN-ի հրամանային տողի hook-ի տեսքով գործարկված սկրիպտը բոլորովին այլ կատարման համատեքստ է։ Այն չունի վեբ հարցում, հաճախորդի սոքեթ և REMOTE_ADDR, դրա համար hook-ում պատճենված վեբ կոդը տալիս է դատարկ արժեքներ՝ սխալների փոխարեն։ Hook-ն ունի իր միջավայրը, որը լցնում է դեմոնը, և այն փաստաթղթավորված է առանձին։ Այնտեղ REMOTE_ADDR-ի ձգտելը ձգտել է փոփոխականի, որը երբեք չի սահմանվել։

Այս տարբերությունը մտքում պահեք նախքան երկու մատյան համեմատելը։ Գուցե դուք համեմատում եք էջի հարցումը hook-ի հետ, և դա ամենևին համեմատություն չէ։ Նախ ստուգեք կատարման համատեքստը, ապա՝ հասցեն։

Անցեք հարցման ուղին նախքան համարին վստահելը

Հաղորդված հասցեն այն միացության peer-ն է, որը տեսել է վեբ սերվերը։ Տեղադրեք ինչ-որ բան հաճախորդի և այդ սերվերի միջև, և peer-ը կփոխվի։ Թարգմանությունը, տերմինացիան և բեռնվածքի հավասարակշռումը յուրաքանչյուրը դիտարկումը տեղափոխում են մեկ քայլ ավելի հեռու օգտատիրոջից։

Չորս սովորական ուղիներ տալիս են չորս տարբեր դիտարկումներ։

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

Գրեք ուղին նպատակակետի անվան, հասցեների ընտանիքի և յուրաքանչյուր թարգմանության կետի հետ միասին։ Առանց այդ քարտեզի ճիշտ և սխալ արժեքները մատյանի տողում նույն տեսքն ունեն։ Երկու տող գծապատկեր խնայում է կեսօրյա վեճ։

Փոխարինումը տեղի է ունենում միայն այնտեղ, որտեղ կարգավորված է

Սերվերը կամ ֆրեյմվորկը կարող է դիտավորյալ փոխարինել հաճախորդի հասցեն։ Apache-ի remote-IP մոդուլը և NGINX-ի real-IP մոդուլը հենց դա են անում, և PHP-ի ստացած արժեքը կախված է այդ կոնֆիգուրացիայից և սկրիպտի մշակիչին փոխանցված պարամետրերից։

Այսինքն՝ REMOTE_ADDR-ը միշտ չէ անձեռնմխելի TCP peer։ Դա այն peer-ն է, ինչպես սերվերը որոշել է հաղորդել այն՝ կիրառելով իր սեփական քաղաքականությունը։ Այդ տարբերությունը որոշում է՝ արժեքը ապացույց է, թե զարդարանք։

Հարցրեք սերվերի տիրոջը, թե այս տեղակայումում որ դաշտն է հեղինակավոր և ինչպես է պահպանվում սկզբնական peer-ը, երբ փոխարինում է տեղի ունենում։ Եթե ոչ ոք չի կարող պատասխանել, մատյանը դեռ ոչինչ չի ապացուցում։

Փոխանցման վերնագրերը վստահությամբ մի՛ կարդացեք

Զանգահարողը կարող է ինքը ուղարկել փոխանցման վերնագրեր։ Ստորակետով բաժանված առաջին գրառումը որպես ստուգված օգտատիրոջ հասցե ընդունելը որոշում է հավատալ ցանկացածին, ով միանում է, ինչը վերնագրի նպատակի հակառակն է։ Վերնագիրը նկարագրում է շղթա, և միայն վստահելի շերտը կարող է երաշխավորել այդ շղթան։

Օգտագործեք սերվերի կամ ֆրեյմվորկի վստահելի պրոքսիների աջակցությունը՝ կարգավորված իրական պրոքսի շղթայով, և թույլ տվեք, որ այն հեռացնի այդ շղթայից դուրս աղբյուրներից եկող արժեքները։ Ձեռքով գրված վերլուծությունը այն տեղն է, որտեղ ապրում են հետաքրքիր խափանումների մեծ մասը։

Պրոքսիի հաղորդած հասցեն նույնպես չի փոխում այն փաթեթային աղբյուրը, որը տեսնում է վերևում գտնվող հրակայուն պատը։ Պահեք HTTP մետատվյալները և ցանցային զտումը որպես առանձին դիտարկումներ, որովհետև նրանք պատասխանում են տարբեր հարցերի։

Որոշումների համար օգտագործեք հավելվածի ինքնությունը

Օգտատիրոջ գրառումներին հասանելիության համար ապավինեք նույնականացված սուբյեկտին և հավելվածի լիազորման կանոններին։ Ներքին հասցեն կարող է վերաբաշխվել, և մեկ թարգմանված հասցե կարող է ներկայացնել հարյուրավոր միաժամանակյա օգտատերերի։ Այս հատկություններից ոչ մեկը հասցեի ստուգումը չի կարող ուղղել։

Եթե շահագործմանը պետք է հարցումը կապել VPN սեսիայի հետ, միացրեք դիտարկված հասցեն և ժամանակային դրոշմանիշը հեղինակավոր սեսիաների գրառումներին՝ ձեր փաստաթղթավորած թարգմանության մոդելի համաձայն։ Դա տալիս է կապ, որը կարող եք պաշտպանել. միայն հասցեն՝ ոչ։

Ախտորոշման համար գրանցեք անհրաժեշտ մի քանի դաշտերը՝ ամբողջ սերվերի զանգվածի փոխարեն, որը կարող է կրել վերնագրեր և նույնականացման նյութ։ Օգտակար եզրակացությունը ասում է, թե ինչ է նշանակում այս արժեքը այս տեղակայումում, ոչ թե որ արժեքն է ամենաշատը նման հաճախորդի։

Առնչվող հոդվածներ