AWS Client VPN ulangan, ammo EC2 hali javob bermayapti
Ulangan faqat sertifikat yoki SAML kirish ishlaganini bildiradi. Ruxsat qoidalari, endpoint yo‘llari va xavfsizlik guruhlari har biri shaxsiy hostgacha bo‘lgan yo‘lning bir qismini qo‘riqlaydi.
Mening noutbukim ulangan deb ko‘rsatdi. AWS Client VPN mijozi o‘zining yashil holatini ko‘rsatdi, endpoint sessiyani qayd etdi, va shunga qaramay men shaxsiy quyi tarmoqdagi EC2 instansiyasida MongoDB portini ocha olmadim. Ko‘rinib turgan hech narsa buzilmagan: sertifikat amal qilardi, profil konsoldan kelgan, tunnel esa trafikni tashiyotgan edi. Xato meniki edi, chunki men ulangan so‘zini ruxsat berilgan deb o‘qiyotgan edim.
Kirish aynan bitta savolga javob beradi: bu shaxs sessiya o‘rnata oladimi? Undan keyingi hamma narsani sizning sertifikatingizni hech qachon ko‘rmaydigan alohida qoidalar hal qiladi. Autentifikatsiyadan o‘tgan sessiya va yetib kelgan paket ikki xil muvaffaqiyat, ular orasidagi bo‘shliq esa VPN yoniq, lekin hostga yetib bo‘lmayapti degan shikoyatlarning ko‘pchiligi yashaydigan joy.
Quyidagi tekshiruvlar men hozir ishlatadigan tartib.
Ulangan sessiya aslida nimani isbotlaydi
Handshake davomida endpoint mijoz sertifikatini o‘zining trust store’iga qarshi tekshiradi yoki SAML sozlangan bo‘lsa, brauzerni sizning identifikatsiya provayderingizga yo‘naltiradi. Agar bu o‘tsa, mijoz endpoint’ning mijoz CIDR’idan manzil oladi va konsol faol ulanishni ko‘rsatadi. Bu almashinuvning hech bir nuqtasida 10.0.4.17 manziliga 27017 porti orqali yeta olasizmi, deb so‘ralmaydi.
Manzil uchun ruxsat endpoint’dagi alohida obyekt. Har bir oqim ruxsat qoidalari bilan solishtiriladi va har bir qoida manzil CIDR’ini qoida berilgan guruh bilan bog‘laydi. Hech bir qoida manzilni qoplamasa, endpoint sessiyani qabul qiladi va trafikni tashlab yuboradi. Banner yo‘q, qayta ulanish sikli yo‘q va mijoz interfeysida rad etildi deb aytadigan hech narsa yo‘q.
Ruxsat qoidasini VPC bilan emas, resurs bilan solishtiring
Qoidalarni sanab chiqing va ularni instansiya haqiqatan ega bo‘lgan manzilning yoniga qo‘ying:
aws ec2 describe-client-vpn-authorization-rules \
--client-vpn-endpoint-id cvpn-endpoint-0a1b2c3d4e5f6a7b8Natija har bir qoida uchun manzil CIDR’i va guruh ID’sini ko‘rsatadi. Unda ikkita nosozlik yashiringan. Qoida 10.0.0.0/16 ga ruxsat berishi mumkin, holbuki instansiya 10.1.0.0/16 dagi peer qilingan VPC’da turadi; peering yo‘li mavjud, lekin hech kim ikkinchi diapazon uchun ruxsat qoidasi yozmagan. Yoki qoida foydalanuvchi katalogda a’zo bo‘lgan, ammo endpoint baholaydigan guruhda bo‘lmagan katalog guruhiga ishora qiladi.
Manzilni qoplaydigan eng tor qoidani yozing va ikkinchi CIDR haqiqatan zarur bo‘lgandagina ikkinchi qoidani qo‘shing. Tez boshlashdan kelgan keng 0.0.0.0/0 qoidasi ishlaydi, shuning uchun u ishlab chiqarishgacha yashaydi va modelni yashiradi.
Paketning harakatini ikkita marshrut jadvali hal qiladi
Endpoint marshruti manzil CIDR’ini endpoint bog‘langan quyi tarmoqlardan biriga moslaydi. Bu yo‘lning yarmi. Quyi tarmoqning o‘z marshrut jadvali paketni qanday uzatishni hali ham bilishi kerak va bu manzil peering ulanishi, transit gateway yoki site-to-site tunnel orqali yetib boriladigan mahalliy diapazon ortida bo‘lgan paytda muhim.
aws ec2 describe-client-vpn-routes \
--client-vpn-endpoint-id cvpn-endpoint-0a1b2c3d4e5f6a7b8Manzili resurs CIDR’iga mos keladigan va maqsadi bog‘langan quyi tarmoq bo‘lgan marshrutni qidiring. Marshrut bo‘lmasa, qo‘shing. Bor bo‘lsa-yu host jim tursa, bo‘shliq VPC tomonida, shuning uchun bog‘lanish quyi tarmog‘ining marshrut jadvali bilan solishtiring.
Mijoz tomonidagi bitta sozlama tunnelni buzmasdan marshrutlashni buzadi: route-nopull bo‘lgan profil. Ko‘rsatma OpenVPN asosidagi mijozga server itarayotgan marshrutlarni e’tiborsiz qoldirishni aytadi, shuning uchun interfeys faqat endpoint’ning o‘z manzili bilan ko‘tariladi va manzilning marshruti umuman bo‘lmaydi. Linux’da ip route show yoki macOS’da netstat -rn bilan tun interfeysi orqali marshrut bor-yo‘qligini tekshiring. Bo‘lmasa, eksport qilingan profildan route-nopull ni olib tashlang va itarilgan marshrutlar qo‘llanishi uchun qayta ulaning.
Xavfsizlik guruhlari sizning mijoz manzilingizni ko‘rmaydi
Bu men yarim kun xato qilgan qism. Quyi tarmoqqa bog‘langan IPv4 endpoint uchun xizmat mijozning manba manzilini shu quyi tarmoqdagi endpoint’ning tarmoq interfeysi manziliga o‘giradi. Instansiyaga yetib kelgan paket sizning mijoziingiz ko‘rsatgan manzilni olib yurmaydi, shuning uchun mijoz hovuziga, aytaylik 172.16.0.0/22 ga ruxsat beradigan xavfsizlik guruhi qoidasi hech narsaga mos kelmaydi.
Portga mijoz CIDR’idan emas, bog‘lanish interfeysiga biriktirilgan endpoint xavfsizlik guruhidan ruxsat bering. Guruhga havola qilish manzilni qattiq kodlashdan uzoqroq yashaydi, chunki interfeys manzili sizning nazoratingizda emas. Tarmoq ACL’lari holatsiz, shuning uchun maxsus yozuvlar bor joyda kirish va chiqish yo‘nalishlari ham oqimga ruxsat berishi kerak.
Instansiyaning shaxsiy manziliga ham ulaning. Ommaviy IP paketni VPC’dan chiqarib, boshqa qoidalar bilan boshqa yo‘l orqali qaytaradi, shuning uchun ommaviy manzil bo‘yicha sinov shaxsiy yo‘l haqida hech narsa demaydi.
Birinchi nosozlikda to‘xtaydigan izolyatsiya tartibi
Bularni tartib bilan bajaring va bittasi muvaffaqiyatsiz bo‘lgan joyda to‘xtang. Har bir qadam barcha qatlamlarni emas, bitta qatlamni istisno qiladi.
- Sessiya qaysi shaxsdan foydalanganini va endpoint qaysi guruhni baholashini tasdiqlang. Bitta trust store’dan olingan sertifikat katalogdan kelgan SAML da’vosi bilan bir xil subyekt emas.
- Ruxsat qoidasi o‘sha guruh uchun resurs CIDR’ini qoplashini tasdiqlang.
- Endpoint marshruti mavjudligini va bog‘langan quyi tarmoqqa qaratilganini, so‘ngra quyi tarmoq marshrut jadvali uzatib bera olishini tasdiqlang.
- Xavfsizlik guruhi portga mijoz hovuzidan emas, endpoint interfeysidan ruxsat berishini tasdiqlang.
- Ilovachilik muammosini mijoz yo‘li muammosidan ajratish uchun VPC ichidan, xuddi shu quyi tarmoqdagi boshqa instansiyada SSM sessiyasi bilan sinab ko‘ring.
Qadamlar hal qiluvchi bo‘lmaganda men shu jadvalga tayanaman:
| Symptom | Layer to inspect |
|---|---|
| Client shows connected, host times out, no byte growth on the interface | Authorization rule, then security group |
| Ping fails but a TCP connect to the port succeeds | ICMP is blocked; not an access failure |
| Tunnel reconnects every few minutes | Two machines sharing one client certificate |
| Works on one laptop, fails on another | Local profile has route-nopull or stale pushed routes |
Hisobning ikkita tafsiloti ruxsat nosozligiga o‘xshash belgilar keltiradi. Har bir foydalanuvchiga alohida mijoz sertifikati kerak; bittasini ikki mashina o‘rtasida bo‘lishish sessiyalarning bir-birini siqib chiqarishiga olib keladi va natija rad etish emas, qayta ulanish sikli bo‘ladi. Yangi endpoint yaratilganda konsol DNS nomini ko‘rsatadi, uni ba’zi mijoz versiyalari faqat endpoint sahifasida ko‘rsatilgan tasodifiy prefiks bilan qabul qiladi, shuning uchun nomni qayta qurish o‘rniga to‘liq nusxalang.
Agar beshinchi qadam sizni to‘xtatsa, biror narsani o‘zgartirishdan oldin endpoint’ning ulanish jurnalini olib, ruxsat yozuvlarini o‘qing. Jurnal tekshirilgan manzilni va mos kelgan yoki kelmagan qoidani nomlaydi, bu esa to‘rt qatlamli savolni bitta javobga jamlaydi.