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-ները որպես փոփոխականներ և ժառանգված օբյեկտները թողեք չկառավարվող։ Ներմուծումը պահանջում է այն նույնացուցիչի ձևաչափը, որը մատակարարը փաստաթղթավորում է յուրաքանչյուր ռեսուրսի տիպի համար. այն կոդավորում է ծայրակետը, նպատակակետի նախածանցը և թիրախ ենթացանցը։ Պատճենեք այդ տողը ռեսուրսի փաստաթղթերից՝ հիշողությունից կազմելու փոխարեն, գործարկեք պլան և նոր բան ավելացնելուց առաջ ոչ մի փոփոխություն մի սպասեք։

Հետևեք փաթեթին այն հերթականությամբ, որով այն ճամփորդում է

Երբ երթուղին կա, իսկ կապը դեռ ձախողվում է, անցեք ուղին հերթականությամբ՝ վերին շերտում գուշակելու փոխարեն։

  1. Երթուղի. նախածանցը ծածկում է նպատակակետը և ցույց է տալիս ծայրակետին կապակցված ենթացանց։
  2. Լիազորում. լիազորման կանոնը թույլատրում է այդ նպատակակետը օգտվողի խմբի համար։ Միայն երթուղին երբեք հասանելիություն չի տալիս։
  3. Վերադարձի ուղի. թիրախ ենթացանցի երթուղիների աղյուսակը պատասխանները հետ է ուղարկում դեպի ծայրակետ, և անվտանգության խումբը թույլատրում է պորտը հաճախորդի հասցեների պուլից։
  4. Հավելված. բացեք իրական TCP կապ հաճախորդից, ապա հաստատեք, որ թիրախի մատյանները ցույց են տալիս պուլից սպասվող աղբյուրի հասցեն։

Փոխեք մեկ նախածանց ամեն apply-ում, հետո նորից կարդացեք երթուղիների ցանկը և միասին գրանցեք նպատակակետը, լիազորող կանոնը և վերադարձի ուղին։ Հաջորդ մարդը, ով կվերացնի մերժված կապի խափանումը, պետք է սկսի այդ ցանկից, ոչ թե վկայագրերի տեսությունից։

Առնչվող հոդվածներ