Kumokonekta ang laptop sa Client VPN endpoint, at nabigo pa rin ang terraform apply sa isang route resource. Karaniwang may mas maraming destination CIDR ang configuration kaysa magkakaugnay na subnet, at pinipili ng route block ang target gamit ang index. Ipinapalagay nitong magkapareho ang dalawang koleksyon. Hindi, at lumilitaw ang pagkabigo sa oras ng paglalapat sa halip na sa pagsusuri.

Pangalanan ang bagay na nabigo

Tatlong resource ang kasangkot at bawat isa ay sumasagot sa ibang tanong. Inilalagay ng asosasyon ang network interface ng endpoint sa isang subnet. Sinasabi ng ruta kung aling destination prefix ang inihahatid sa target na subnet. Sinasabi ng tuntunin ng awtorisasyon kung aling mga user ang makakaabot sa aling prefix. Ang rutang tumuturo sa subnet na hindi kailanman naasosasyon ay nabigo kahit umiiral ang dalawang bagay, dahil ang target ay dapat kabilang sa endpoint na ito.

Ilista muna ang mga asosasyon: aws ec2 describe-client-vpn-target-networks --client-vpn-endpoint-id cvpn-endpoint-0123456789abcdef0.

Tandaan ang lokal na ruta ng VPC

Nagdadagdag ang unang asosasyon ng lokal na ruta para sa buong VPC, kaya ang bawat subnet sa VPC na iyon ay naaabot na nang walang route resource. May mga karagdagang ruta para sa mga peered VPC, koneksyon ng Transit Gateway at on-premises prefix na hindi pag-aari ng VPC. Kaya ang endpoint na may tatlong asosasyon ay legal na makapagdadala ng pitong destination entry.

Bilangin ang mga destinasyong nasa labas ng VPC bago magdagdag ng ruta. Kung ang bilang na iyon ay mas mababa kaysa listahan ng CIDR, inilalarawan ng listahan ang mga subnet na hindi nangangailangan ng ruta.

Palitan ang index ng mapa

Ang pagbabalot ng index sa modulo operator ay nagpapatahimik sa error at pinapanatili ang pagkakamali sa pagmomodelo. Ang destinasyong hindi maabot sa pamamagitan ng piniling target ay hindi pa rin nagdadala ng trapiko, gaano man kalinis na ilapat ang plano. Sa halip, itabi ang relasyon, at hayaang suriin ito ng Terraform bago gumawa ng anuman. Ang bloke sa ibaba ay halimbawa at gumagamit ng mga argumento ng ruta ng endpoint ng provider.

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."
    }
  }
}

Kapag ang mapa ay katabi ng listahan ng asosasyon, pinipilit ng pagdaragdag ng destinasyon ang desisyon kung aling subnet ang magdadala nito. Iyon ang usapang itinago ng index.

Ang ibang pagkabigo ay gumagawa ng walang kabuluhang halaga sa halip na error sa index. Ang pagpasa ng konstruksyon sa mababang antas kung saan inaasahan ang interface sa mas mataas na antas ay nag-iiwan ng mga field na binabasa ng API na walang laman, at ang resultang CIDR ay hindi magagamit. Ipinapakita ng Terraform ang parehong hugis kapag may string na dumating kung saan inaasahan ang isang bagay. Suriin ang schema ng provider para sa uri ng argumento.

Patunayan ito mula sa isang kliyente

Patakbuhin ang terraform validate at isang plano laban sa tunay na estado bago maglapat. Pagkatapos, ihambing ang listahan ng target na network ng endpoint sa mapa sa halip na umasa sa matagumpay na apply.

Ang pagsubok sa pagtanggap ay isang konektadong kliyenteng umaabot sa bawat nilalayong prefix.

Ang tuntunin ng awtorisasyon ang lugar kung saan maraming setup ang humihinto nang maaga. Limitado ito sa isang destination CIDR at isang grupo, at ang rutang walang katugmang awtorisasyon ay gumagawa ng konektadong kliyenteng hindi makaabot sa prefix. Suriin ang dalawang bagay para sa bawat prefix, dahil ang apply na gumagawa ng ruta at nakakalimot sa tuntunin ay mukhang kumpleto. Subukan sa isang user sa loob ng grupo at isa sa labas.

Kapag nabigo ang isang prefix, ihambing ang entry ng ruta nito sa tuntunin ng awtorisasyon. Ang nawawalang awtorisasyon at nawawalang ruta ay magkamukha sa log ng kliyente at inaayos sa magkaibang resource.

Kaugnay na mga artikulo