Terraform Client VPN маршруттары: ішкі желілерден көп CIDR болғанда
Байланыстыру, маршрут және авторизация — бөлек нысандар. Қысқа ішкі желі тізімін индекстеудің орнына әрбір межелі CIDR-ды байланысқан ішкі желіге сәйкестендіріңіз.
Ноутбук Client VPN шеткі нүктесіне қосылады, бірақ terraform apply маршрут ресурсында әлі де сәтсіз аяқталады. Конфигурацияда әдетте байланысқан ішкі желілерден көп межелі CIDR болады, ал маршрут блогы нысананы индекспен таңдайды. Бұл екі жиынтықтың параллель екенін болжайды. Олар параллель емес, және қате қарау кезінде емес, қолдану кезінде пайда болады.
Сәтсіз болатын нысанды атаңыз
Үш ресурс қатысады және әрқайсысы басқа сұраққа жауап береді. Байланыстыру шеткі нүктенің желілік интерфейсін ішкі желіге орналастырады. Маршрут қай межелі префикстің нысаналы ішкі желіге жеткізілетінін көрсетеді. Авторизация ережесі қай пайдаланушылардың қай префикске жете алатынын көрсетеді. Ешқашан байланыспаған ішкі желіге сілтейтін маршрут екі нысан да болса да сәтсіз болады, өйткені нысана осы шеткі нүктеге тиесілі болуы керек.
Алдымен байланыстарды тізіп шығыңыз: aws ec2 describe-client-vpn-target-networks --client-vpn-endpoint-id cvpn-endpoint-0123456789abcdef0.
VPC-ның жергілікті маршрутын ұмытпаңыз
Бірінші байланыс бүкіл VPC үшін жергілікті маршрут қосады, сондықтан сол VPC-дағы әрбір ішкі желі маршрут ресурсынсыз-ақ қолжетімді. Қосымша маршруттар теңшестес VPC-лар, Transit Gateway қосылымдары және VPC-ға тиесілі емес on-premises префикстері үшін бар. Сондықтан үш байланысы бар шеткі нүкте жеті межелі жазбаны заңды түрде алып жүре алады.
Маршруттарды қоспас бұрын VPC-дан тыс қалатын межелерді санаңыз. Егер бұл сан CIDR тізімінен аз болса, тізім мүлде маршрут қажет етпейтін ішкі желілерді сипаттайды.
Индексті картамен ауыстырыңыз
Индексті модуль операторына орау қатені тыныштандырады және модельдеу қатесін сақтайды. Таңдалған нысана арқылы жету мүмкін емес меже жоспар қаншалықты таза қолданылса да, ешқандай трафик тасымалдамайды. Оның орнына қатынасты сақтаңыз және бірдеңе жасамас бұрын Terraform оны тексерсін. Төмендегі блок иллюстрациялық және провайдердің шеткі нүкте маршруты аргументтерін пайдаланады.
variable "client_vpn_destinations" {
description = "Destination CIDR mapped to an associated subnet key"
type = map(string)
}
resource "aws_ec2_client_vpn_route" "this" {
for_each = var.client_vpn_destinations
client_vpn_endpoint_id = aws_ec2_client_vpn_endpoint.this.id
destination_cidr_block = each.key
target_vpc_subnet_id = aws_subnet.private[each.value].id
lifecycle {
precondition {
condition = contains(keys(aws_subnet.private), each.value)
error_message = "Route target must be a subnet key in the associated map."
}
}
}
Карта байланыстар тізімінің жанында болғанда, меже қосу оны қай ішкі желі тасымалдайтыны туралы шешім қабылдауды талап етеді. Бұл индекстің жасырған әңгімесі.
Басқа ақау индекс қатесінің орнына мағынасыз мәндер шығарады. Жоғары деңгейлі интерфейс күтілетін жерге төмен деңгейлі құрылымды беру API оқитын өрістерді толтырылмаған күйде қалдырады, ал алынған CIDR жарамсыз болады. Terraform нысан күтілетін жерге жол келгенде сол пішінді көрсетеді. Аргумент түрі үшін провайдер схемасын тексеріңіз.
Оны клиенттен дәлелдеңіз
Қолданар алдында terraform validate және нақты күйге қарсы жоспарды іске қосыңыз. Содан кейін сәтті apply-ға сенудің орнына шеткі нүктенің нысаналы желілер тізімін картамен салыстырыңыз.
Қабылдау сынағы — әрбір жоспарланған префикске жететін қосылған клиент.
Авторизация ережесі — көптеген конфигурациялар ерте тоқтайтын жер. Ол межелі CIDR мен топпен шектелген, ал сәйкес авторизациясыз маршрут префикске жете алмайтын қосылған клиент жасайды. Әрбір префикс үшін екі нысанды да тексеріңіз, өйткені маршрутты жасап, ережені ұмытатын apply толық болып көрінеді. Топ ішіндегі бір және одан тыс бір пайдаланушымен сынаңыз.
Бір префикс сәтсіз болса, оның маршрут жазбасын авторизация ережесімен салыстырыңыз. Жоқ авторизация мен жоқ маршрут клиент журналында ұқсас көрінеді және әртүрлі ресурстарда түзетіледі.