Turnelni ulang, xuddi shu xatcho'pni oching va ruxsat berilgan sayt xuddi ofisdan qanday javob bergan bo'lsa, shunday javob beradi. Bu ko'pchilik masofaviy kirish rejalari jimgina tayanadigan taxmin bo'lib, u faqat uchta alohida narsa bir vaqtda to'g'ri bo'lgandagina amal qiladi. Ularning hech biri VPN mijozi xususiyati emas va hech bir DNS yozuvi ularning birortasini bera olmaydi. Uyda xatcho'p ishlamasa, brauzer sizga bitta umumiy xato beradi, sababi yo'qolgan marshrut, tasdiqlanmagan chiqish manzili yoki o'zi xabar qiladigan manbani almashtirgan proksi bo'lishidan qat'i nazar. Bu uchtasini bitta muammo deb qarash — kichik siyosat tuzatishining ruxsat ro'yxatlarini kengaytirishga bir hafta aylanish yo'li.

Haqiqiy ofis tarmog'i bilan to'qnashuvga bardosh beradigan dizayn taxmindan torroq: uch qatorli aniq qarorlar jadvali, chetlab o'tib bo'lmaydigan bitta ijro nuqtasi va nimanidir isbotlaydigan rad etish sinovi. Taxminni buzish birinchi keladi, chunki undan keyingi hamma narsa qaysi qatlam manbani noto'g'ri ko'rsatayotganini bilishga bog'liq.

Afsona: ulanish — marshrutlash emas

Turnel o'rnatiladi va mijoz ma'lum prefikslar to'plami uchun marshrutlar o'rnatadi. Ulanish shunchaki shuni qiladi. Aloqasiz HTTPS so'rovi turneldan o'tadimi va yetib kelganda qaysi ommaviy manzildan kelgandek ko'rinadi — bu keyinchalik boshqa komponentlar qabul qiladigan qarorlar: marshrut jadvali yo'lni tanlaydi, chiqish esa manbani tanlaydi.

Shuning uchun ofis va oshxona stoli bir xil noutbuk, bir xil brauzer profili va bir xil xatcho'p bilan farqlanadi. Ofisda so'rov sayt operatori rozi bo'lgan xizmat ko'rsatiladigan ommaviy manzildan chiqadi. To'liq tunnel orqali u VPN chiqishidan chiqishi mumkin, bu boshqa manzil va kimdir uni qo'shmaguncha tasdiqlanmagan. Bo'lingan tunnel orqali u tunnelga umuman kirmasligi mumkin. O'sha uch yo'ldan faqat ikkitasi sayt egasi bilan kelishuvning qismi bo'lgan, uchinchisi esa qo'shimcha allow qatori bilan yamaladigan nuqson emas.

So'rovning uch holati, ikkita tasdiqlangan chiqish

Firewall'ga tegishdan oldin matritsani yozib chiqing, chunki jadval — dizayn, qoida esa uning faqat bitta tatbiqi. Quyidagi manzillar hujjat doiralari; ularni o'zingizning xizmat ko'rsatiladigan qiymatlaringiz bilan almashtiring va sayt egasi tekshira oladigan joyda saqlang.

Request pathSource the site seesIntended decision
Office, no tunnelOffice public exitAdmit to the application login
Remote, approved full tunnelApproved VPN egressAdmit to the same login
Remote, ordinary connectionNeither approved addressDeny at the network boundary

Bu rejalarning ko'pchiligi aynan o'rta qatorda sinadi. Muhimi — ijro etuvchi qurilma ko'radigan manzil, noutbuk tunnel ichida tutadigan xususiy manzil emas va uning LAN manzili ham emas. 10.8.0.6 kabi qiymat ommaviy sayt uchun hech narsani anglatmaydi, 192.168.1.44 ham. Tunnel manzili tunnel manzillashining tafsiloti, sayt tekshira oladigan guvohnoma emas.

Agar VPN'ingiz barqaror, hujjatlashtirilgan chiqishni ta'minlay olmasa, matritsada to'g'ri o'rta qator yo'q va qancha ruxsat ro'yxati bo'lmasin, bittasini o'ylab topmaydi. O'sha paytdagi halol variantlar aniq xususiy marshrutlar orqali yetib boriladigan xususiy sayt yoki ilova oldidagi shaxsni taniydigan kirish darvozasi. Ikkalasining ham ommaviy ruxsat ro'yxatidan boshqa shartnomasi bor va ikkalasini ham auditorga tushuntirish tasodifan ishlab qolguncha o'sgan ro'yxatdan osonroq.

Manbani qaror qabul qilinadigan joyda o'qing

Cheklovni so'rovni tugatadigan qurilmaga qo'ying va hech qanday muqobil kelib chiqish yo'li uni chetlab o'tmasligiga ishonch hosil qiling. Nginx kirish moduli allow va deny ko'rsatmalarini tartib bilan baholaydi, birinchi mos kelish yutadi va o'rab turgan blokdan meros qolgan qoidalar location ichida ham amal qiladi. Xuddi shu joyda tor allow yonida keng allow bo'lsa, odatda keng qaror qiladi. Uning bitta qatorini tahrirlashdan oldin o'sha location uchun butun amaldagi konfiguratsiyani o'qing.

server {
    listen 443 ssl;
    server_name intranet.example.com;

    set_real_ip_from 10.20.0.10;
    real_ip_header X-Forwarded-For;
    real_ip_recursive on;

    location /app/ {
        allow 203.0.113.24;    # office public exit
        allow 198.51.100.77;   # approved VPN egress
        deny  all;
        proxy_pass http://app_backend;
    }
}

Yuk balanslagichi yoki teskari proksi orqasida bu qoida boshqacha aytmasangiz proksini ko'radi. Chaqiruvchining manzilini faqat qo'llab-quvvatlanadigan ishonchli proksi mexanizmi orqali, proksi manzillarining aniq ro'yxati bilan tiklang. Tasdiqlangan manzilni da'vo qiluvchi so'rov sarlavhasi chaqiruvchining unga egaligining isboti emas va ommaviy tinglovchida tekshirilmagan uzatilgan sarlavha ruxsat ro'yxatini bezakka aylantiradi.

So'ngra boshqa manzil oilasini tekshiring. Faqat IPv4'ni qamrab oluvchi qoidalar to'plami AAAA'da ham javob beradigan xost nomi uchun to'liq bo'lmagan qaror va ishlaydigan IPv6'ga ega mijoz xuddi shu ilovaga siz hech qachon ko'rib chiqmagan yo'l orqali yetib boradi.

Bo'lingan tunnel: hech qachon kirmaydigan so'rov

Bo'lingan tunnel faqat o'z ro'yxatidagi prefikslarni tashiydi. Ofisning ichki quyi tarmoqlari odatda o'sha ro'yxatga kiradi; ommaviy veb-sayt kirmaydi. Brauzer nomni hal qiladi, tanlangan manzilni marshrut jadvali bilan solishtiradi va baribir oldida mahalliy standart darvozani topadi.

Shunday qilib so'rov foydalanuvchining uy ulanishidan keladi, rad etiladi va hisobot VPN buzilgan deb yozadi, holbuki tunnel aynan o'zi uchun sozlangan ishni qilmoqda. Ikkita tuzatish qonuniy: o'sha manzilni tunnel orqali o'tkazing va tasdiqlangan chiqish uni tashishiga ruxsat bering, yoki saytga to'g'ridan-to'g'ri yetib borilishini tan olib, masofaviy foydalanuvchilarga kirish darvozasi kabi boshqa tasdiqlangan yo'l bering. Saytning ommaviy ruxsat ro'yxatini uy manzili tasodifan kirguncha kengaytirish ikkalasi ham emas va dizayn qo'llashi kerak bo'lgan chegarani olib tashlaydi. Birinchi ikkitasi matritsani halol saqlaydi; uchinchisi undan jimgina bir qatorni o'chiradi.

Rad etishni isbotlang, keyin tiklanishni

Jadvalning har bir qatorida turgan mijozdan haqiqiy qarorni ishga soladigan so'rov bilan sinab ko'ring. Aloqasiz qandaydir manzilni ko'rsatadigan sahifaga qarshi yetib borish tekshiruvi hech narsani isbotlamaydi, chunki o'sha manzil ilovadan boshqa yo'lni tutishi mumkin.

curl -sS -o /dev/null -w 'status=%{http_code}
' https://intranet.example.com/app/login
# repeat with the tunnel up, then with it down
tail -f /var/log/nginx/access.log | grep ' /app/'

Chegaradagi kirish yozuvini jadval bashorat qilgan narsa bilan solishtiring. So'ngra tunnelni tushiring va rad etilishi kerak bo'lgan yangi so'rov yuboring; allaqachon yuklangan sahifa yoki allaqachon ochilgan ulanish hech narsani sinamaydi. Agar hech qanday rad etish ko'rinmasa, ijro nuqtasi siz o'ylagan joyda emas.

Tarmoqqa qabul qilingandan keyin ham ilova autentifikatsiyasini saqlang, chunki ofis chiqishi va VPN chiqishi har biri ko'p odamlarni ifodalaydi va hech biri shaxsni aniqlamaydi. Foydalanuvchilar uchun ko'rsatma qisqa bo'lib qoladi: tasdiqlangan tunnelni ko'taring, keyin yana urinib ko'ring. Bu bitta URL'ni qulay saqlaydi, manba qoidasi esa taxmin emas, qaror bo'lib qoladi.

O'xshash maqolalar