AWS Client VPN ulangan, lekin internet yo‘q: marshrutlarni tekshirish
AWS Client VPN ulangan, lekin internetga chiqish yo‘qmi? Mijoz marshrutlarini, endpoint avtorizatsiyasini, quyi tarmoq chiqishini va DNSni shu tartibda tekshiring.
Siz AWS Client VPN endpointiga ulangansiz, xususiy quyi tarmoq javob beradi, lekin har bir ochiq sahifa baribir vaqt tugashi bilan yakunlanadi. Bu birikma muammoni boshqariladigan tomondagi uchta obyektdan biriga toraytiradi: mijoz o‘rnatadigan marshrut, endpoint marshruti va uning avtorizatsiya qoidasi, yoki bog‘langan quyi tarmoqning keyingi sakrashi. Men ularni shu tartibda tekshiraman, chunki har bir nosozlik mijoz tomondan boshqacha ko‘rinadi. Bu qo‘llanma VPC bilan bog‘langan boshqariladigan endpointni qamrab oladi, EC2 instansiyasidagi OpenVPN serverini va Cloud WAN yoki Transit Gateway ulanishini emas.
Mijoz aslida nimani marshrutlayotganidan boshlang
Ulangan holat TLS seansini va mijozga CIDR berilganini tasdiqlaydi, boshqa hech narsani emas. Tunnel ko‘tarilgan paytda ochiq manzil qayerga ketishini operatsion tizimdan so‘rang. Linuxda ip route get 1.1.1.1 tunnel interfeysini nomlashi kerak; macOSda netstat -rn -f inet | head -5 standart yozuvni ko‘rsatadi; Windowsda Find-NetRoute -RemoteIPAddress 1.1.1.1 tanlangan interfeys va keyingi sakrashni chop etadi.
Keyin split-tunnel bayrog‘ini o‘qing, chunki endpoint e’lon qilgan marshrutlar mijoz tunnelga yuboradigan yagona manzillar ekanini shu belgilaydi:
aws ec2 describe-client-vpn-endpoints \
--client-vpn-endpoint-ids cvpn-endpoint-0123456789abcdef0 \
--query 'ClientVpnEndpoints[0].SplitTunnel'Qachon SplitTunnel true bo‘lsa, ochiq manzil tunnelni faqat endpoint uni qamrab oluvchi marshrut e’lon qilganda ishlatadi, shuning uchun yetishmayotgan 0.0.0.0/0 bu trafikni mahalliy interfeysda qoldiradi. Agar false bo‘lsa, mijoz trafikni ushlaydi, lekin endpoint baribir uni marshrutlashi va avtorizatsiya qilishi kerak; aks holda paketlar tunnelga kirib, o‘sha yerda to‘xtaydi. Ikki sozlamadan birini o‘zgartirgandan keyin mijozni qayta ulang, chunki marshrutlar va DNS serverlari ulanish paytida beriladi va ishlab turgan mijoz eski to‘plamini saqlab qolishi mumkin.
Endpoint marshruti va avtorizatsiya qoidasini alohida o‘qing
Bular ikki obyekt, birini yaratish ikkinchisini yaratmaydi. Endpoint marshrutlarini sanab chiqing va maqsadi bog‘langan quyi tarmoq bo‘lgan standart marshrutni qidiring:
aws ec2 describe-client-vpn-routes \
--client-vpn-endpoint-id cvpn-endpoint-0123456789abcdef0Har bir marshrut aynan bitta maqsad quyi tarmoqqa ega, shuning uchun uchta bog‘lanish har biri uchun mos standart marshrut talab qiladi. AWS bu qamrov talabini hujjatlashtiradi, bo‘shliqning amaliy belgisi esa bir quyi tarmoqdan ishlab, boshqasidan tiqilib qolgan foydalanuvchidir, bu yo‘qolgan marshrut emas, balki vaqti-vaqti bilan takrorlanadigan nosozlik sifatida o‘qiladi. Rasmiy Client VPN stsenariysi hujjatlari bu marshrutlar tegishli bo‘lgan ochiq quyi tarmoq tartibini tavsiflaydi.
Avtorizatsiya ikkinchi obyekt. Ochiq manzilni hech qanday qoida qamrab olmasa, tunnel paketni olib boradi va xizmat uni tashlab yuboradi, shuning uchun xususiy resurslar ishlashda davom etadi, internet esa yo‘q:
aws ec2 describe-client-vpn-authorization-rules \
--client-vpn-endpoint-id cvpn-endpoint-0123456789abcdef0VPC CIDR uchun qoida 0.0.0.0/0 haqida hech narsa demaydi. To‘liq tunnel uchun yetishmayotgan qismlarni qo‘shish har bir bog‘langan quyi tarmoqqa bitta marshrut va keyinchalik tekshirish mumkin bo‘lgan avtorizatsiya qoidasini qo‘shish demakdir:
aws ec2 create-client-vpn-route \
--client-vpn-endpoint-id cvpn-endpoint-0123456789abcdef0 \
--destination-cidr-block 0.0.0.0/0 \
--target-vpc-subnet-id subnet-0a1b2c3d4e5f67890
aws ec2 create-client-vpn-authorization-rule \
--client-vpn-endpoint-id cvpn-endpoint-0123456789abcdef0 \
--destination-cidr-block 0.0.0.0/0 \
--access-all \
--description "internet egress for full tunnel"--access-all manzilni endpointning har bir mijoziga beradi, shuning uchun uni tunnel to‘liq bo‘lishi kerak bo‘lgan vaqtgacha saqlang; bog‘lash uchun guruhlaringiz bo‘lsa, katalog guruhiga bog‘langan qoida afzal.
Paketni bog‘langan quyi tarmoqdan tashqariga kuzatib boring
Endpoint marshruti AWS paketni o‘sha quyi tarmoqqa berishini hal qiladi. U undan keyingi keyingi sakrashni hal qilmaydi, u quyi tarmoqning o‘z VPC marshrut jadvalida yashaydi:
aws ec2 describe-route-tables \
--filters Name=association.subnet-id,Values=subnet-0a1b2c3d4e5f67890 \
--query 'RouteTables[].Routes[?DestinationCidrBlock==`0.0.0.0/0`]'Foydalanish mumkin bo‘lgan standart marshrut ochiq quyi tarmoq uchun internet shlyuziga, xususiysi uchun NAT shlyuziga ishora qiladi, blackhole holati esa maqsad o‘chirilganini va yo‘l endi jimgina o‘layotganini bildiradi. Bular endpoint marshrutlar ro‘yxatidan boshqa jadvallar, birini tuzatish ikkinchisini tuzatmaydi.
Bu sakrashda ikkita filtr o‘tiradi. Maqsad tarmoq bog‘lanishiga qo‘llanilgan xavfsizlik guruhi ochiq manzil tomon chiquvchi trafikka ruxsat berishi kerak, va har qanday tegishli tarmoq ACL so‘rovga hamda qisqa muddatli portlardagi qaytish trafikiga ruxsat berishi kerak. Cheklovchi bog‘lanish xavfsizlik guruhi xususiy kirish ishlab, ochiq kirish ishlamasligining keng tarqalgan sababidir.
Uchtasini bir vaqtda o‘zgartirish o‘rniga belgi bo‘yicha birinchi qatlamni tanlang:
| What you observe | Layer to check first |
|---|---|
| No tunnel interface for a public IP | Client route or split-tunnel flag |
| Tunnel interface chosen, request times out | Endpoint route and authorization rule |
| Endpoint route present, still times out | Subnet route table, association security group |
| Named host fails, numeric address works | DNS servers and their own authorization |
DNS nosozligini o‘lik marshrutdan ajrating
Ism hal qilish uzatishdan boshqacha muvaffaqiyatsiz bo‘ladi, to‘liq tunnel esa bu farqni muhim qiladi, chunki itarib yuborilgan rezolverga endi tunnel orqali yetib boriladi. Agar endpoint VPC DNS serverlarini ko‘rsatsa, ularning manzillari ham boshqa har qanday manzil kabi marshrut qamrovi va avtorizatsiyaga muhtoj. Qaysi nosozlik borligini ko‘rish uchun rezolverdan to‘g‘ridan-to‘g‘ri so‘rang: dig +short example.com @10.0.0.2, yoki nslookup example.com 10.0.0.2 Windowsda.
Raqamli URL javob berib, nomli URL bermasa, standart marshrutni tahrirlashni to‘xtating va DNS bilan ishlang. IP manzilga so‘rov nomli virtual xost va uning sertifikati haqida hech narsani isbotlamaydi, shuning uchun yakuniy tekshiruvda bitta nomli sinov qoldiring.
Vaqt yordam beradi. Bir necha soniya ichida javob olmagan TCP ulanish marshrutlash yoki filtrga ishora qiladi, nom qidiruvida osilib qolgan so‘rov esa rezolverga ishora qiladi. Rezolver yetib bo‘lmaydigan paytda standart marshrutni o‘zgartirish odatda bitta nosozlikni ikkitaga aylantiradi.
Toza qaytaring, so‘ng chiqish yo‘lini tasdiqlang
Ikki obyekt ham qo‘shimcha edi, shuning uchun qaytarish tuzatish emas, o‘chirishdir:
aws ec2 delete-client-vpn-route \
--client-vpn-endpoint-id cvpn-endpoint-0123456789abcdef0 \
--destination-cidr-block 0.0.0.0/0 \
--target-vpc-subnet-id subnet-0a1b2c3d4e5f67890
aws ec2 delete-client-vpn-authorization-rule \
--client-vpn-endpoint-id cvpn-endpoint-0123456789abcdef0 \
--destination-cidr-block 0.0.0.0/0 \
--access-allQayta ulaning va trafik qaysi yo‘l bilan chiqishini tasdiqlang. Kuzatilgan ochiq manzilni NAT shlyuzining elastik IP manzili yoki foydalanmoqchi bo‘lgan internet shlyuzi bilan solishtiring va xususiy resurs o‘sha sessiyada hali ham javob berishini tekshiring.
Qisqa ro‘yxat bilan yakunlang va oxirgi bandni hujjat emas, o‘zgarishning qismi deb hisoblang:
- Har bir bog‘langan quyi tarmoq uchun bitta
0.0.0.0/0endpoint marshruti. - Xizmat ko‘rsatmoqchi bo‘lgan mijozlar uchun
0.0.0.0/0ni qamrab oluvchi avtorizatsiya qoidasi. - Har bir bog‘langan quyi tarmoqda blackhole holatida bo‘lmagan VPC standart marshruti.
- Bog‘lanish xavfsizlik guruhining chiqishi, qo‘shimcha ACL qaytish trafigi.
- Rezolver manzillari marshrutlangan va avtorizatsiya qilingan, nomli so‘rov bilan tasdiqlangan.
- Marshrut va qoida uchun yozib olingan qaytarish.
Bitta qamrov eslatmasi: bu IPv4 yo‘li. Ikki stekli mijoz o‘zida bor IPv6 ulanishini saqlab qoladi, shuning uchun IPv6 standart marshruti buning yon ta’siri emas, o‘z avtorizatsiyasiga ega alohida qaror.