NGINX VPN хэрэглэгчид ямар эх сурвалжийн хаягийг бүртгэх вэ?
NGINX нэг хост дээр OpenVPN-ийн хажууд юу хардагийг шийдээрэй: дотоод туннелийн хаяг, нийтийн гарах хаяг эсвэл дамжуулсан хос, явсан замаас хамаарна.
Нэг хост дээрх NGINX болон OpenVPN тохиргоонд клиентийн гурван хаяг харагддаг бөгөөд хүсэлт явж болох зам бүрт нэг нь байна. Туннелийн хаяг руу ханддаг хөтөч, нийтийн хаяг руу ханддаг хөтөч, гарцын интернэт замаар гарч буй програм нь сонсож буй сокет дээр бүгд өөр харагдана. Бүртгэлийн мөрийг тайлбарлахаас өмнө аль замыг харж байгаагаа шийдээрэй. Шийдвэр нь клиентийн ашигласан очих газар, гадаад VPN төгсгөлийн цэгт хадгалсан үл хамаарах зүйл, мөн замд ямар нэг зүйл пакетыг хөрвүүлж байгаа эсэхээс хамаарна.
Хэрэглэгч хэн болохоос биш, очих газраар шийдээрэй
Хүсэлт илгээсэн хаягаас эхлээрэй, учир нь зам тэр хаяг сонгодог. Хостын туннелийн хаяг руу хүсэлт туннелийн интерфейс дээр клиентийн дотоод хаягийг эх сурвалж болгон ирдэг. Хостын нийтийн хаяг руу хүсэлт ихэвчлэн интернэт рүү харсан интерфейс дээр клиентийн нийтийн хаягтай ирдэг, тэр зөөврийн компьютер тухайн агшинд туннель тогтоосон байсан ч. Тиймээс VPN багцад гишүүн байх нь пакетын замын шинж, хэрэглэгчийг дагадаг шинж биш юм.
| Path the request took | Source the site normally records |
|---|---|
| Client reaches the site at its tunnel address, 10.24.0.1 | Client inner address, 10.24.0.20 |
| Client reaches another internet site through the gateway | Gateway public egress address, 192.0.2.44 |
| Client reaches the gateway's public address through the endpoint exception | Client's own public access address |
Бүртгэлд туннельтай огт холбоогүй хаягтай VPN хэрэглэгч гарч ирэхэд хамгийн түрүүнд шалгах ёстой зүйл бол энэ гурав дахь мөр. Энэ нь нэг профайл дээрх хоёр хэрэглэгч яагаад өөр бүртгэл үүсгэж болохыг ч тайлбарлана: тэдний өөрсдийн холболтын сүлжээ өөр, туннель дотор юу ч үүнийг дээгүүр бичихгүй.
Гадаад төгсгөлийн цэг яагаад хоёр дахь нийтийн зам үүсгэдэг
Клиент туннель тогтоохын тулд гарцын нийтийн хаяг руу хүрэх ёстой тул тэр хаяг руу зам туннелиас гадна орших ёстой. Клиент бүх урсгалыг дотогш чиглүүлэх үед ухаалаг хэрэгжүүлэлт өөрөөсөө хамааралтай туннелээс зайлсхийх үүднээс серверийн нийтийн хаяг руу тодорхой хост маршрут хадгалдаг. Тэр үл хамаарах зүйл үйлчилгээг ялгаварлахгүй тул ижил нийтийн хаяг руу ямар ч хүсэлт түүнийг дагана, гарц дээр байрлуулсан сайт руу хөтчийн хүсэлт ч орно.
Энэ бол энэ салбарын ихэнх төөрөгдүүлсэн мэдээллийн ард байгаа механизм бөгөөд серверээс биш клиентийн хэрэгжүүлэлтээс хамаарна. Тиймээс ижил профайлтай хоёр клиент өөрөөр ажиллаж болно. Бүртгэлийг »засахын« тулд үл хамаарах зүйлийг арилгавал туннель хамт унана, тиймээс байлгаад эргэн тойронд нь зохион бүтээгээрэй.
Сокет, хүснэгт, бүртгэлийн хэлбэрийг хамт уншаарай
Гурван ажиглалт аль замыг харж байгааг чинь шийднэ: сокет хаана сонсож байна, аль интерфейс очих газарт хариу үзүүлж байна, бүртгэлийн хэлбэр юу бүртгэж байна. Хэрэв сонсогч зөвхөн туннелийн хаягт холбогдсон бол нийтийн хүсэлт түүн рүү огт хүрч чадахгүй бөгөөд энэ нь хоёр мөрийг шууд хасна. Хэрэв клиентийн хайлт туннелийн төхөөрөмжийг буцаавал хүсэлт дотоод эх сурвалжтай ирсэн бөгөөд бүртгэл үүнийг харуулах ёстой.
ss -lntp 'sport = :443'
ip route get 10.24.0.20
ip route get 192.0.2.44Дараа нь мөрийг бус форматыг уншаарай. Дамжуулсан толгойгоор тэжээгддэг талбар нь сокетийн хосыг бус мэдэгдлийг бүртгэдэг бөгөөд мэдэгдэл нь шууд хос итгэмжлэгдсэн прокси байх үед л утгатай. Хоёр утгыг бүртгэлд бичих нь дараагийн маргааныг шийднэ, учир нь шууд хос болон орлуулсан хаяг нь өөр өөр баримт бөгөөд зөвхөн нэг нь сүлжээнээс ирсэн.
log_format tunneled '$remote_addr $realip_remote_addr $request $status';
grep -n 'log_format' /etc/nginx/nginx.confХүссэн орох цэгээ сонгоод DNS-ийг зохицуулаарай
Хэрэв сайт зөвхөн туннелээр байх ёстой бол VPN клиентүүдэд туннелийн хаяг руу шийдэгдэх нэр өгч, сонсож буй сокет дээр бодлого хэрэгжүүлээрэй. Дотоод нэрэнд 10.24.0.1 буцаадаг хуваагдсан DNS хариулт нь нэрийн шийдлийн дэлгэрэнгүй мэдээллийн хувцастай маршрутын шийдвэр юм. Хэрэв сайт нийтийн ч байх ёстой бол хоёр нэр эсвэл хоёр порт хадгалаад аль нь хүсэлтэд үйлчилснийг бүртгэл хэлэх болтугай.
Зөвшөөрлийн дүрэм мөн адил логикийг дагана. Туннелийн багцыг зөвшөөрөх нь нийтийн хүсэлтийг зөвшөөрөхгүй бөгөөд интернэтээр ирсэн холболт дээр дотоод хаяг дүүргэхгүй. Хоёр орох цэгийг нэг нэрийн дор холих нь бүртгэгдсэн эх сурвалжийг дизайны сонголт биш клиентийн маршрутын гаж нөлөө болгоно.
Замыг шалгаад, дараа нь бодлогыг шалгаарай
Замыг гарц дээр авсан бичлэг болон өөрийн хянаж буй хүсэлтээр баталгаажуулаарай. Туннелийн төхөөрөмж дээрх бичлэг болон нийтийн интерфейс дээрх нэг нь аль нь байтуудыг зөөснийг харуулж, пакетуудын дараалал тэдгээрийн хооронд хөрвүүлэлт болсон эсэхийг хэлнэ.
tcpdump -ni tun0 port 443 -c 5
tcpdump -ni eth0 port 443 -c 5Дараа нь хандалтыг хоёр чиглэлд шалгаарай: төлөвлөсөн нэртэй орох цэг төлөвлөсөн клиентэд ажиллаж, зөвшөөрөөгүй нийтийн зам зүгээр л удаан байхын оронд татгалзагдана. Ерөнхий IP-цооролын сайт гарцын интернэт гаралтын талаар ямар нэг зүйлийг баталж, мөн хост дээрх энэ сайтын талаар юу ч батлахгүй. Хуудас болон WebSocket зөрүүтэй үед серверийн тохиргоог хүрэхээс өмнө тэдний URL, хаягийн гэр бүл, DNS хариултыг харьцуулаарай.