Nima uchun AWS Client VPN mos marshrutsiz trafikni tashlab yuboradi
Yakuniy nuqta paketni faqat marshrutlar jadvali manzilni qoplaganida uzatadi. Marshrutlarni o'qing, for_each bilan prefikslarni e'lon qiling, qaytish yo'lini tekshiring.
Client VPN mijozga manzil beradi, qo'l siqish tugaydi, va ulanish baribir hech qayerga bormaydi. Sertifikatlar yoki mijoz versiyalariga tegishdan oldin yakuniy nuqtaning o'z marshrutlar jadvaliga qarang. AWS Client VPN yakuniy nuqtasi paketni faqat marshrutlaridan biri manzil prefiksini qoplaganida uzatadi; hech narsa mos kelmasa, paket yakuniy nuqtada tashlanadi va maqsad xost hech qachon SYN ko'rmaydi.
Bu uzatish qarori, autentifikatsiya qarori emas. U tunnel ko'tarilgandan va avtorizatsiya qoidalari baholangandan keyin qabul qilinadi, shuning uchun amaldagi sertifikat va amaldagi guruh baribir o'lik ulanish berishi mumkin.
Yakuniy nuqta faqat marshrutlar jadvali qoplaganini uzatadi
Har bir marshrut manzil CIDR va trafikni qabul qilishi kerak bo'lgan subnetsdir. Yakuniy nuqta mijoz manzilini shu ro'yxat bilan solishtiradi, mos yozuvni tanlaydi va paketni bog'langan subnetsga yuboradi. Yozuv bo'lmasa, keyingi sakrash ham yo'q.
Marshrut nima emasligiga e'tibor bering. U VPC marshrutlar jadvalidagi yozuv emas va hech narsaga ruxsat bermaydi. Avtorizatsiya qoidalari guruh manzilga yeta olishini hal qiladi; marshrutlar yakuniy nuqtaning paketni yuboradigan joyi bor-yo'qligini hal qiladi. Ikkalasi ham mos kelishi kerak va ular turli belgilar bilan ishlamay qoladi, shuning uchun qaysi biri buzilganini taxmin qilish yarim kunni behuda o'tkazadi.
Klassik nomuvofiqlik peer qilingan VPCdir. Kimdir 10.20.0.0/24 uchun marshrut qo'shadi, xost esa 10.20.4.0/24 da yashaydi, shuning uchun manzil har bir yozuvdan tashqarida qoladi. Mijoz tomonidagi yozib olish javobsiz takrorlangan SYN larni ko'rsatadi, maqsad jurnallari esa hech narsa ko'rsatmaydi.
Sertifikatdan oldin marshrutlar ro'yxatini o'qing
Yakuniy nuqta marshrutlari alohida obyekt, shuning uchun VPC jadvalini o'qish o'rniga ularni to'g'ridan-to'g'ri so'rang:
aws ec2 describe-client-vpn-routes --client-vpn-endpoint-id cvpn-endpoint-0123456789abcdef0 --query 'Routes[].{Dest:DestinationCidr,Target:TargetSubnet,Origin:Origin}'Muvaffaqiyatsiz mijozdan aniq manzil va prefiks uzunligini oling, so'ng qamrovni harfma-harf tekshiring. Eng uzun prefiks mosligi amal qiladi, shuning uchun tor marshrut boshqa joyga ishora qilsa, keng marshrut sizni qutqarmaydi.
for_each bilan har bir manzil uchun bitta resurs
Qo'lda yozilgan marshrut bloklari kimdir konsolda prefiks qo'shgan zahoti siljib ketadi. Manzillarni xaritada saqlang va har bir kalit uchun bitta resurs yarating, shunda har bir qo'shish yoki olib tashlash ajratilgan qoladi.
variable "client_vpn_routes" {
type = map(string)
default = {
"10.20.0.0/16" = "subnet-0aa11bb22cc33dd44"
"172.31.0.0/20" = "subnet-0aa11bb22cc33dd44"
}
}
resource "aws_ec2_client_vpn_route" "this" {
for_each = var.client_vpn_routes
client_vpn_endpoint_id = var.client_vpn_endpoint_id
destination_cidr_block = each.key
target_vpc_subnet_id = each.value
depends_on = [aws_ec2_client_vpn_network_association.this]
}Tarmoq assotsiatsiyasiga bog'liqlikni saqlang. Marshrutga bog'langan subnets kerak, shuning uchun ikkalasini ham yaratadigan apply avval assotsiatsiyani tartibga solishi kerak, va bu havolasiz Terraform avval marshrutni sinab ko'rishga erkin. So'ng rejani o'qing: marshrut qo'shimchalari soni siz qo'shgan prefikslarga mos kelishi kerak. Agar reja yakuniy nuqtani ham almashtirsa, yakuniy nuqta resursi noto'g'ri yozilgan va uni qo'llash har bir ulangan mijozni uzadi.
O'zingiz yaratmagan yakuniy nuqtani qabul qilish
Aksariyat jamoalar konsolda qurilgan yakuniy nuqtani meros oladi, shuning uchun marshrut kodi mavjud emas. Faqat marshrutlarni Terraformga kiritish uchun ikkinchi yakuniy nuqta qurmang.
Buning o'rniga import qiling, yoki id larni o'zgaruvchi sifatida uzatib, meros obyektlarini boshqaruvsiz qoldiring. Import har bir resurs turi uchun provayder hujjatlashtirgan identifikator formatini talab qiladi; u yakuniy nuqta, manzil prefiksi va maqsad subnetsni kodlaydi. Bu satrni xotiradan tuzish o'rniga resurs hujjatlaridan nusxalang, reja ishga tushiring va yangi narsa qo'shishdan oldin hech qanday o'zgarish bo'lmasligini kuting.
Paketni qanday harakatlansa, shu tartibda kuzatib boring
Marshrut bor bo'lib, ulanish baribir ishlamasa, yuqori qatlamda taxmin qilish o'rniga yo'lni tartib bilan bosib o'ting.
- Marshrut: prefiks manzilni qoplaydi va yakuniy nuqta bilan bog'langan subnetsga ishora qiladi.
- Avtorizatsiya: avtorizatsiya qoidasi o'sha manzilni foydalanuvchi guruhiga ruxsat beradi. Yolg'iz marshrut hech qachon kirish bermaydi.
- Qaytish yo'li: maqsad subnetsning marshrutlar jadvali javoblarni yakuniy nuqta tomon qaytaradi, xavfsizlik guruhi esa mijoz manzillar hovuzidan portni ruxsat beradi.
- Ilova: mijozdan haqiqiy TCP ulanishini oching, so'ng maqsad jurnallari hovuzdan kutilgan manba manzilini ko'rsatishini tasdiqlang.
Har bir apply da bitta prefiksni o'zgartiring, so'ng marshrutlar ro'yxatini qayta o'qing va manzilni, ruxsat beruvchi qoidani hamda qaytish yo'lini birga yozib qo'ying. Rad etilgan ulanishni keyingi tuzatadigan odam sertifikat nazariyasidan emas, shu ro'yxatdan boshlashi kerak.