Kwa nini AWS Client VPN hutupa trafiki bila njia inayolingana
Kituo cha mwisho husambaza pakiti tu wakati jedwali la njia zake linashughulikia lengwa. Soma njia, tangaza viambishi kwa for_each, thibitisha njia ya kurudi.
Client VPN humpa mteja anwani, mshikamano wa mikono hukamilika, na muunganisho bado haufiki mahali popote. Kabla ya kugusa vyeti au matoleo ya mteja, angalia jedwali la njia la kituo cha mwisho chenyewe. Kituo cha mwisho cha AWS Client VPN husambaza pakiti tu wakati moja ya njia zake inashughulikia kiambishi cha lengwa; kama hakuna kinacholingana, pakiti hutupwa kwenye kituo cha mwisho na mwenyeji lengwa haoni SYN kamwe.
Huo ni uamuzi wa usambazaji, sio uamuzi wa uthibitishaji. Hufanyika baada ya handaki kuinuka na baada ya kanuni za uidhinishaji kutathminiwa, ndiyo sababu cheti halali na kikundi halali bado vinaweza kutoa muunganisho uliokufa.
Kituo cha mwisho husambaza tu kile ambacho jedwali la njia zake linashughulikia
Kila njia ni CIDR ya lengwa pamoja na subnet inayopaswa kupokea trafiki. Kituo cha mwisho hulinganisha lengwa la mteja na orodha hiyo, huchagua kiingilio kinacholingana na kutuma pakiti kwenye subnet inayohusiana. Hakuna kiingilio maana hakuna hatua inayofuata.
Angalia njia si nini. Sio kiingilio katika jedwali la njia la VPC, na haidhinishi chochote. Kanuni za uidhinishaji huamua kama kikundi kinaweza kufikia lengwa; njia huamua kama kituo cha mwisho kina mahali pa kutuma pakiti. Zote mbili lazima zikubaliane, na hushindwa kwa dalili tofauti, kwa hiyo kubahatisha ni ipi iliyovunjika huharibu mchana mzima.
Kutokubaliana kwa kawaida ni VPC iliyowekwa peer. Mtu anaongeza njia ya 10.20.0.0/24 wakati mwenyeji anaishi 10.20.4.0/24, kwa hiyo anwani inaanguka nje ya kila kiingilio. Ukamataji upande wa mteja huonyesha SYN zinazorudiwa bila jibu, na kumbukumbu za lengwa hazionyeshi chochote.
Soma orodha ya njia kabla ya cheti
Njia za kituo cha mwisho ni kitu tofauti, kwa hiyo ziulize moja kwa moja badala ya kusoma jedwali la VPC:
aws ec2 describe-client-vpn-routes --client-vpn-endpoint-id cvpn-endpoint-0123456789abcdef0 --query 'Routes[].{Dest:DestinationCidr,Target:TargetSubnet,Origin:Origin}'Chukua anwani kamili na urefu wa kiambishi kutoka kwa mteja anayeshindwa, kisha angalia ufunikaji herufi kwa herufi. Ulinganishaji wa kiambishi kirefu zaidi hutumika, kwa hiyo njia pana zaidi haikuokoi wakati nyembamba zaidi inaelekeza mahali pengine.
Rasilimali moja kwa kila lengwa kwa for_each
Vitalu vya njia vilivyoandikwa kwa mkono huteleza mara moja mtu anapoongeza kiambishi kwenye konsoli. Weka malengo katika ramani na uunde rasilimali moja kwa kila ufunguo, ili kila nyongeza au uondoaji ubaki umetengwa.
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]
}Hifadhi utegemezi wa uhusiano wa mtandao. Njia inahitaji subnet iliyohusishwa, kwa hiyo apply inayounda vyote viwili lazima ipange uhusiano kwanza, na bila rejeleo hilo Terraform iko huru kujaribu njia kwanza. Kisha soma mpango: idadi ya nyongeza za njia inapaswa kulingana na viambishi ulivyoongeza. Ikiwa mpango pia unabadilisha kituo cha mwisho, rasilimali ya kituo cha mwisho imeandikwa vibaya, na kuitumia hukata kila mteja aliyeunganishwa.
Kupokea kituo cha mwisho usichokiuunda
Timu nyingi hurithi kituo cha mwisho kilichojengwa kwenye konsoli, ndiyo sababu hakuna msimbo wa njia. Usisimamishe kituo cha mwisho cha pili ili tu kuleta njia ndani ya Terraform.
Badala yake ingiza, au pitisha ids kama vigeuzi na uache vitu vilivyorithiwa bila usimamizi. Uingizaji unahitaji muundo wa kitambulisho ambao mtoa huduma huandika kwa kila aina ya rasilimali; huo husimba kituo cha mwisho, kiambishi cha lengwa na subnet lengwa. Nakili mfuatano huo kutoka nyaraka za rasilimali badala ya kuutunga kutoka kumbukumbu, endesha mpango, na utarajie hakuna mabadiliko kabla ya kuongeza kitu kipya.
Fuatilia pakiti kwa mpangilio inavyosafiri
Wakati njia ipo na muunganisho bado unashindwa, pita njia kwa mpangilio badala ya kubahatisha kwenye tabaka la juu.
- Njia: kiambishi hushughulikia lengwa na kuelekeza kwenye subnet iliyohusishwa na kituo cha mwisho.
- Uidhinishaji: kanuni ya uidhinishaji huruhusu lengwa hilo kwa kikundi cha mtumiaji. Njia peke yake haitoi ufikiaji kamwe.
- Njia ya kurudi: jedwali la njia la subnet lengwa hurudisha majibu kuelekea kituo cha mwisho, na kikundi cha usalama huruhusu bandari kutoka kwenye dimbwi la anwani za mteja.
- Programu: fungua muunganisho halisi wa TCP kutoka kwa mteja, kisha thibitisha kwamba kumbukumbu za lengwa zinaonyesha anwani ya chanzo inayotarajiwa kutoka kwenye dimbwi.
Badilisha kiambishi kimoja kwa apply, kisha soma tena orodha ya njia, na uandike pamoja lengwa, kanuni inayoidhinisha na njia ya kurudi. Mtu anayefuata kutatua muunganisho uliokataliwa anapaswa kuanza kutoka kwenye orodha hiyo, sio kutoka kwenye nadharia ya vyeti.