Ինչու է AWS Client VPN-ը թափում երթևեկությունը առանց համապատասխան երթուղու
Ծայրակետը փոխանցում է փաթեթը միայն այն ժամանակ, երբ նրա երթուղիների աղյուսակը ծածկում է նպատակակետը։ Կարդացեք երթուղիները, հայտարարեք նախածանցերը for_each-ով, ստուգեք վերադարձի ուղին։
Client VPN-ը հաճախորդին տալիս է հասցե, ձեռքսեղմումն ավարտվում է, և կապը դեռ ոչ մի տեղ չի հասնում։ Նախքան վկայագրերին կամ հաճախորդի տարբերակներին դիպչելը նայեք ծայրակետի սեփական երթուղիների աղյուսակին։ AWS Client VPN ծայրակետը փաթեթը փոխանցում է միայն այն ժամանակ, երբ նրա երթուղիներից մեկը ծածկում է նպատակակետի նախածանցը։ Եթե ոչինչ չի համապատասխանում, փաթեթը դեն է նետվում ծայրակետում, և թիրախ հոսթը երբեք SYN չի տեսնում։
Սա փոխանցման որոշում է, ոչ թե նույնականացման։ Այն կայացվում է թունելը բարձրանալուց և լիազորման կանոնների գնահատումից հետո, այդ պատճառով վավեր վկայագիրը և վավեր խումբը դեռ կարող են մեռած կապ ստեղծել։
Ծայրակետը փոխանցում է միայն այն, ինչ ծածկում է նրա երթուղիների աղյուսակը
Յուրաքանչյուր երթուղի նպատակակետի CIDR է՝ գումարած այն ենթացանցը, որը պետք է ստանա երթևեկությունը։ Ծայրակետը համեմատում է հաճախորդի նպատակակետը այդ ցանկի հետ, ընտրում համապատասխան գրառումը և փաթեթն ուղարկում կապակցված ենթացանց։ Գրառում չկա՝ հաջորդ ցատկ չկա։
Ուշադրություն դարձրեք, թե ինչ չէ երթուղին։ Այն VPC-ի երթուղիների աղյուսակի գրառում չէ և ոչինչ չի լիազորում։ Լիազորման կանոնները որոշում են՝ խումբը կարող է հասնել նպատակակետին, երթուղիները որոշում են՝ ծայրակետն ունի տեղ, ուր ուղարկի փաթեթը։ Երկուսը պետք է համաձայնեն, և նրանք ձախողվում են տարբեր ախտանիշներով, ուստի գուշակելը, թե որն է կոտրված, կեսօր է վատնում։
Դասական անհամապատասխանությունը peered VPC-ն է։ Ինչ-որ մեկը երթուղի է ավելացնում 10.20.0.0/24-ի համար, մինչ հոսթը գտնվում է 10.20.4.0/24-ում, այնպես որ հասցեն դուրս է մնում բոլոր գրառումներից։ Հաճախորդի կողմի գրառումը ցույց է տալիս կրկնվող SYN առանց պատասխանի, իսկ թիրախի մատյանները բացարձակապես ոչինչ չեն ցույց տալիս։
Կարդացեք երթուղիների ցանկը վկայագրից առաջ
Ծայրակետի երթուղիները առանձին օբյեկտ են, ուստի հարցրեք դրանց ուղղակիորեն՝ VPC-ի աղյուսակը կարդալու փոխարեն.
aws ec2 describe-client-vpn-routes --client-vpn-endpoint-id cvpn-endpoint-0123456789abcdef0 --query 'Routes[].{Dest:DestinationCidr,Target:TargetSubnet,Origin:Origin}'Վերցրեք ձախողվող հաճախորդի ճշգրիտ հասցեն և նախածանցի երկարությունը, ապա ստուգեք ծածկույթը տառ առ տառ։ Գործում է ամենաերկար նախածանցի համապատասխանությունը, ուստի ավելի լայն երթուղին չի փրկում, երբ ավելի նեղն այլ տեղ է ցույց տալիս։
Մեկ ռեսուրս յուրաքանչյուր նպատակակետի համար for_each-ով
Ձեռքով գրված երթուղիների բլոկները սահում են այն պահին, երբ ինչ-որ մեկը կոնսոլում նախածանց է ավելացնում։ Պահեք նպատակակետերը քարտեզում և ստեղծեք մեկ ռեսուրս յուրաքանչյուր բանալու համար, որպեսզի յուրաքանչյուր ավելացում կամ հեռացում մեկուսացված մնա։
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]
}Պահպանեք ցանցային միացման կախվածությունը։ Երթուղուն պետք է կապակցված ենթացանց, ուստի երկուսն էլ ստեղծող apply-ը պետք է նախ դասավորի միացումը, և առանց այդ հղման Terraform-ը ազատ է նախ փորձել երթուղին։ Ապա կարդացեք պլանը. երթուղիների ավելացումների թիվը պետք է համընկնի ձեր ավելացրած նախածանցերի հետ։ Եթե պլանը նաև փոխարինում է ծայրակետը, ծայրակետի ռեսուրսը սխալ է գրված, և դրա կիրառումը անջատում է բոլոր միացած հաճախորդներին։
Ձեր չստեղծած ծայրակետի որդեգրում
Թիմերի մեծ մասը ժառանգում է կոնսոլում կառուցված ծայրակետ, դրա համար էլ երթուղիների կոդ գոյություն չունի։ Մի կանգնեցրեք երկրորդ ծայրակետ միայն Terraform-ում երթուղիներ ստանալու համար։
Փոխարենը ներմուծեք, կամ փոխանցեք id-ները որպես փոփոխականներ և ժառանգված օբյեկտները թողեք չկառավարվող։ Ներմուծումը պահանջում է այն նույնացուցիչի ձևաչափը, որը մատակարարը փաստաթղթավորում է յուրաքանչյուր ռեսուրսի տիպի համար. այն կոդավորում է ծայրակետը, նպատակակետի նախածանցը և թիրախ ենթացանցը։ Պատճենեք այդ տողը ռեսուրսի փաստաթղթերից՝ հիշողությունից կազմելու փոխարեն, գործարկեք պլան և նոր բան ավելացնելուց առաջ ոչ մի փոփոխություն մի սպասեք։
Հետևեք փաթեթին այն հերթականությամբ, որով այն ճամփորդում է
Երբ երթուղին կա, իսկ կապը դեռ ձախողվում է, անցեք ուղին հերթականությամբ՝ վերին շերտում գուշակելու փոխարեն։
- Երթուղի. նախածանցը ծածկում է նպատակակետը և ցույց է տալիս ծայրակետին կապակցված ենթացանց։
- Լիազորում. լիազորման կանոնը թույլատրում է այդ նպատակակետը օգտվողի խմբի համար։ Միայն երթուղին երբեք հասանելիություն չի տալիս։
- Վերադարձի ուղի. թիրախ ենթացանցի երթուղիների աղյուսակը պատասխանները հետ է ուղարկում դեպի ծայրակետ, և անվտանգության խումբը թույլատրում է պորտը հաճախորդի հասցեների պուլից։
- Հավելված. բացեք իրական TCP կապ հաճախորդից, ապա հաստատեք, որ թիրախի մատյանները ցույց են տալիս պուլից սպասվող աղբյուրի հասցեն։
Փոխեք մեկ նախածանց ամեն apply-ում, հետո նորից կարդացեք երթուղիների ցանկը և միասին գրանցեք նպատակակետը, լիազորող կանոնը և վերադարձի ուղին։ Հաջորդ մարդը, ով կվերացնի մերժված կապի խափանումը, պետք է սկսի այդ ցանկից, ոչ թե վկայագրերի տեսությունից։