Зөөврийн компьютер 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 бүрэн мэт харагддаг. Бүлгийн дотор нэг, гадна нэг хэрэглэгчтэй туршиж үз.

Нэг угтвар бүтэлгүйтвэл түүний маршрутын бичлэгийг зөвшөөрлийн дүрэмтэй харьцуул. Зөвшөөрөл дутуу, маршрут дутуу нь клиентийн бүртгэлд төстэй харагдаж, өөр нөөцөд засварлагддаг.

Холбоотой нийтлэлүүд