Wêrom AWS Client VPN ferkear fuortsmyt sûnder passende rûte
It einpunt stjoert in pakket allinne troch as syn rûtetabel de bestimming dekt. Lês de rûtes, ferklearje prefiksen mei for_each, ferifiearje de weromwei.
Client VPN jout de klant in adres, de hânskud foltôget, en de ferbining giet dochs nearne hinne. Foardat jo sertifikaten of klantferzjes oanreitsje, sjogge jo nei de eigen rûtetabel fan it einpunt. In AWS Client VPN-einpunt stjoert in pakket allinne troch as ien fan syn rûtes it bestimmingsprefiks dekt; as neat oerienkomt, wurdt it pakket by it einpunt fuortsmiten en de doelhoast sjocht nea in SYN.
Dat is in trochstjoerbeslút, gjin ferifikaasjebeslút. It bart neidat de tunnel oerein is en neidat de autorisaasjeregels evaluearre binne, dêrom kinne in jildich sertifikaat en in jildige groep dochs in deade ferbining jaan.
It einpunt stjoert allinne troch wat syn rûtetabel dekt
Elke rûte is in bestimmings-CIDR plus it subnet dat it ferkear ûntfange moat. It einpunt fergeliket de bestimming fan 'e klant mei dy list, kiest de oerienkommende yngong en stjoert it pakket nei it keppele subnet. Gjin yngong betsjut gjin folgjende hop.
Tink derom wat de rûte net is. It is gjin yngong yn 'e rûtetabel fan 'e VPC, en it autorisearret neat. Autorisaasjeregels beslute oft in groep in bestimming berikke mei; rûtes beslute oft it einpunt earne hat om it pakket hinne te stjoeren. Beide moatte oerienkomme, en se fale mei ferskillende symptomen, dus riede hokker stikken is kostet in middei.
De klassike mismatch is in pearde VPC. Immen foeget in rûte ta foar 10.20.0.0/24 wylst de hoast yn 10.20.4.0/24 wennet, dus it adres falt bûten elke yngong. In opname oan 'e klantkant lit werhelle SYN's sûnder antwurd sjen, en de logs fan it doel litte hielendal neat sjen.
Lês de rûtelist foar it sertifikaat
De rûtes fan it einpunt binne in eigen objekt, dus freegje se direkt op ynstee fan de VPC-tabel te lêzen:
aws ec2 describe-client-vpn-routes --client-vpn-endpoint-id cvpn-endpoint-0123456789abcdef0 --query 'Routes[].{Dest:DestinationCidr,Target:TargetSubnet,Origin:Origin}'Nim it krekte adres en de prefikslange fan 'e mislearjende klant, en kontrolearje dan de dekking teken foar teken. Langste-prefiks-oerienkomst jildt, dus in bredere rûte rêdt jo net as in smelere earne oars hinne wiist.
Ien boarne per bestimming mei for_each
Hânskreaune rûteblokken driuwe op it stuit dat immen in prefiks yn 'e konsole tafoeget. Hâld de bestimmingen yn in map en meitsje ien boarne per kaai, sadat elke tafoeging of ferwidering isolearre bliuwt.
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]
}Hâld de ôfhinklikens fan 'e netwurkassosjaasje. In rûte hat in keppele subnet nedich, dus in apply dy't beide makket moat de assosjaasje earst oardersje, en sûnder dy ferwizing is Terraform frij om de rûte earst te besykjen. Lês dan it plan: it oantal rûtefoegings moat oerienkomme mei de prefiksen dy't jo tafoege hawwe. As it plan ek it einpunt ferfangt, is de einpuntboarne ferkeard skreaun, en it tapassen ûntkeppelt elke ferbûne klant.
In einpunt oernimme dat jo net makke hawwe
De measte teams ervje in einpunt dat yn 'e konsole boud is, dêrom bestiet der gjin rûtekoad. Set gjin twadde einpunt oerein allinne om rûtes yn Terraform te krijen.
Ymportearje ynstee, of jou de ids as fariabelen troch en lit de erve objekten ûnbeheard. Ympóart fereasket it identifikaasjeformaat dat de leveransier foar elk boarnetype dokumintearret; it kodearet it einpunt, it bestimmingsprefiks en it doelsubnet. Kopiearje dy tekenrige út 'e boarnedokumintaasje ynstee fan har út it ûnthâld gear te setten, rin in plan en ferwachtsje gjin feroaringen foardat jo eat nijs tafoegje.
Folgje it pakket yn 'e folchoarder wêryn't it reizget
As de rûte bestiet en de ferbining mislearret noch, rin dan it paad yn folchoarder del ynstee fan op 'e boppeste laach te rieden.
- Rûte: in prefiks dekt de bestimming en wiist nei in subnet dat mei it einpunt keppele is.
- Autorisaasje: in autorisaasjeregel lit dy bestimming foar de groep fan 'e brûker ta. In rûte allinne jout nea tagong.
- Weromwei: de rûtetabel fan it doelsubnet stjoert antwurden werom nei it einpunt, en de befeiligingsgroep lit de poarte fan it adrespoel fan 'e klant ta.
- Applikaasje: iepenje in echte TCP-ferbining fan 'e klant, en befêstigje dan dat de logs fan it doel it ferwachte boarneadres út it poel sjen litte.
Feroarje ien prefiks per apply, lês de rûtelist dêrnei opnij en notearje de bestimming, de autorisearjende regel en de weromwei byinoar. De folgjende persoan dy't in wegere ferbining debugt, moat by dat ynventaris begjinne, net by in sertifikaatteory.