VPN артындагы PHP REMOTE_ADDR чындыгында эмнени билдирет
Бул веб-сервериңиз берген маани, туннелге жасалган суроо эмес. Суроонун жолун карап чыгыңыз, аны ким кайра жаза аларын текшериңиз жана идентификаторду колдонмодо кармаңыз.
Бирөө VPN колдонуучусунун колдонмо журналында шлюзге таандык дареги менен же түшкү тамактан кийин өзгөргөн дареги менен эмне үчүн пайда болорун сурайт. Жооп бул кандай маани экенинен башталат: веб-сервер суроо чөйрөсүнө койгон жазуу. Бул туннелге жасалган суроо эмес, сертификаттын идентификатору да эмес жана номер бир адамга таандык деген убада да эмес. Аны ушул үчөөнүн кайсынысы катары окуу ар кандай жолдор менен туура эмес ишенимдүү жоопторду берет.
Маани серверден келет, туннелден эмес
PHP суроо чөйрөсүн скрипти аткарган нерседен алат. PHP сервердик өзгөрмөлөрүнүн маалымдамасы бул жазууларды веб-сервер түзөт деп сүрөттөйт, ал эми алардын жеткиликтүүлүгү суроонун кантип келгенине байланыштуу.
VPN буйрук сабынын hook катары иштетилген скрипт таптакыр башка аткаруу контексти. Анын веб-суроосу, кардарлык сокети жана REMOTE_ADDR жок, ошондуктан hook ичине көчүрүлгөн веб-код туура эмес маанилердин ордуна бош маанилерди берет. Hookтун демон толтурган өз чөйрөсү бар жана ал өзүнчө документтелген. Ал жерде REMOTE_ADDRге умтулуу — эч качан коюлбаган өзгөрмөгө умтулуу.
Эки журналды салыштырмайынча ушул айырманы эсиңизде кармаңыз. Балким, сиз барак суроосун hook менен салыштырып жатасыз, ал эми бул таптакыр салыштыруу эмес. Адегенде аткаруу контекстин, анан даректи текшериңиз.
Номерге ишенбейинче суроонун жолун карап чыгыңыз
Билдирилген дарек — веб-сервер көргөн байланыштын peerи. Кардар менен ошол сервердин ортосуна каалаган нерсени койсоңуз, peer өзгөрөт. Трансляция, терминация жана жүктөмдү теңдөө ар бири байкоону колдонуучудан бир кадам алыстатат.
Төрт кадимки жол төрт башка байкоо берет.
| Path to the listener | What can be reported |
|---|---|
| Client routed straight to the private listener, no translation | The client's tunnel address |
| Gateway translates the source before forwarding | The gateway's translated address |
| Reverse proxy terminates the client and opens its own backend connection | The proxy's backend address |
| Load balancer in front of two proxies | Whichever hop the server treats as its peer |
Жолду максат аталышы, даректер үй-бүлөсү жана ар бир трансляция чекити менен жазыңыз. Ошол картасыз туура жана туура эмес маани журнал сабында бирдей көрүнөт. Эки сап схема талкуунун жарым күнүн үнөмдөйт.
Алмаштыруу конфигурацияланган жерде гана болот
Сервер же фреймворк кардардын дарегин атайын алмаштыра алат. Apacheтын remote-IP модулу жана NGINXтин real-IP модулу ушундай кылат, ал эми PHP алган маани ошол конфигурацияга жана скрипт иштетүүчүгө берилген параметрлерге байланыштуу.
Демек, REMOTE_ADDR ар дайым тийилбеген TCP-peer эмес. Бул сервер өз саясатын колдонгондон кийин билдирүүнү тандаган peer. Бул айырма маанинин далил же жасалга экенин чечет.
Сервердин ээсинен бул жайгаштырууда кайсы талаа авторитеттүү экенин жана алмаштыруу болгондо баштапкы peer кантип сакталарын сураңыз. Эч ким жооп бере албаса, журнал азырынча эч нерсени далилдебейт.
Жөнөтүү аталыштарын ишеним менен окубаңыз
Чакырган тарап жөнөтүү аталыштарын өзү жөнөтө алат. Үтүр менен бөлүнгөн биринчи жазууну текшерилген колдонуучу дареги деп эсептөө — туташкан ар кимге ишенүү чечими, башкача айтканда аталыштын максатына тескери. Аталыш чынжырды сүрөттөйт жана бул чынжырга тек ишенимдүү катмар кепилдик бере алат.
Сервердин же фреймворктун ишенимдүү прокси колдоосун реалдуу прокси чынжыры менен конфигурациялап колдонуңуз жана ага ушул чынжырдан тышкаркы булактардан келген маанилерди таштоого уруксат бериңиз. Кол менен жазылган талдоо — кызыктуу бузулуулардын көбү жашаган жер.
Прокси билдирген дарек жогору турган брандмауэр көргөн пакет булагын да өзгөртпөйт. HTTP метаберилиштерин жана тармактык фильтрлөөнү өзүнчө байкоо катары кармаңыз, анткени алар ар башка суроолорго жооп берет.
Чечимдер үчүн колдонмонун идентификаторун колдонуңуз
Колдонуучунун жазууларына жетүү үчүн аутентификацияланган субъектке жана колдонмонун авторизация эрежелерине таяныңыз. Ички дарек кайра дайындалышы мүмкүн, ал эми бир трансляцияланган дарек жүздөгөн бир убактагы колдонуучуну билдириши мүмкүн. Бул касиеттердин эч бирин даректи текшерүү оңдой албайт.
Эгер операциялар суроону VPN сессиясы менен байланыштыруусу керек болсо, байкалган даректи жана убакыт белгисин документтелген трансляция модели боюнча авторитеттүү сессия жазуулары менен туташтырыңыз. Бул коргоого боло турган байланыш берет; жалгыз дарек андай бербейт.
Диагностика үчүн бүт сервер массивинин ордуна керектүү бир нече талааны журналга жазыңыз, анткени массив аталыштарды жана аутентификация материалын алып жүрүшү мүмкүн. Пайдалуу тыянак бул маанинин ушул жайгаштырууда эмнени билдирерин айтат, кайсы маани кардарга көбүрөөк окшошконун эмес.