సరిపోలే మార్గం లేకుండా AWS Client VPN ట్రాఫిక్ను ఎందుకు వదిలేస్తుంది
ఎండ్పాయింట్ తన మార్గ పట్టిక గమ్యాన్ని కవర్ చేసినప్పుడే ప్యాకెట్ను పంపుతుంది. మార్గాలను చదవండి, for_each తో ప్రిఫిక్స్లను ప్రకటించండి, తిరిగి వచ్చే మార్గాన్ని ధృవీకరించండి.
Client VPN క్లయింట్కు చిరునామా ఇస్తుంది, హ్యాండ్షేక్ పూర్తవుతుంది, కానీ కనెక్షన్ ఎక్కడికీ చేరుకోదు. సర్టిఫికెట్లు లేదా క్లయింట్ వెర్షన్లను తాకే ముందు ఎండ్పాయింట్ యొక్క స్వంత మార్గ పట్టికను చూడండి. AWS Client VPN ఎండ్పాయింట్ తన మార్గాలలో ఒకటి గమ్య ప్రిఫిక్స్ను కవర్ చేసినప్పుడే ప్యాకెట్ను పంపుతుంది; ఏదీ సరిపోలకపోతే, ప్యాకెట్ ఎండ్పాయింట్ వద్దే పడవేయబడుతుంది మరియు లక్ష్య హోస్ట్ ఎప్పటికీ SYN చూడదు.
ఇది ఫార్వర్డింగ్ నిర్ణయం, ప్రామాణీకరణ నిర్ణయం కాదు. టన్నెల్ లేచిన తర్వాత మరియు అనుమతి నియమాలు మూల్యాంకనం చేసిన తర్వాత ఇది జరుగుతుంది, అందుకే చెల్లుబాటు అయ్యే సర్టిఫికెట్ మరియు చెల్లుబాటు అయ్యే గ్రూప్ అయినా చనిపోయిన కనెక్షన్ను ఇవ్వగలవు.
ఎండ్పాయింట్ తన మార్గ పట్టిక కవర్ చేసేది మాత్రమే పంపుతుంది
ప్రతి మార్గం గమ్య CIDR మరియు ట్రాఫిక్ అందుకోవాల్సిన సబ్నెట్. ఎండ్పాయింట్ క్లయింట్ గమ్యాన్ని ఆ జాబితాతో పోల్చి, సరిపోలే ఎంట్రీని ఎంచుకుని, ప్యాకెట్ను సంబంధిత సబ్నెట్కు పంపుతుంది. ఎంట్రీ లేకపోతే తదుపరి హాప్ లేదు.
మార్గం ఏమి కాదో గమనించండి. ఇది VPC మార్గ పట్టికలోని ఎంట్రీ కాదు, ఏదీ అనుమతించదు. అనుమతి నియమాలు గ్రూప్ గమ్యాన్ని చేరగలదా అని నిర్ణయిస్తాయి; మార్గాలు ఎండ్పాయింట్కు ప్యాకెట్ పంపడానికి స్థలం ఉందా అని నిర్ణయిస్తాయి. రెండూ సరిపోలాలి, అవి వేర్వేరు లక్షణాలతో విఫలమవుతాయి, కాబట్టి ఏది పాడైందో ఊహించడం పూర్తి మధ్యాహ్నాన్ని వృథా చేస్తుంది.
సాధారణ అసమతుల్యత పీర్ చేసిన VPC. హోస్ట్ 10.20.4.0/24 లో ఉండగా ఎవరో 10.20.0.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 లోకి తేవడానికి రెండవ ఎండ్పాయింట్ను నిలబెట్టకండి.
బదులుగా దిగుమతి చేయండి, లేదా ids ను చరరాశులుగా పంపి వారసత్వ ఆబ్జెక్ట్లను నిర్వహణ లేకుండా వదిలేయండి. దిగుమతికి ప్రతి వనరు రకానికి ప్రదాత డాక్యుమెంట్ చేసే గుర్తింపు ఫార్మాట్ అవసరం; అది ఎండ్పాయింట్, గమ్య ప్రిఫిక్స్ మరియు లక్ష్య సబ్నెట్ను ఎన్కోడ్ చేస్తుంది. ఆ స్ట్రింగ్ను జ్ఞాపకం నుండి రూపొందించడం బదులు వనరు డాక్యుమెంటేషన్ నుండి కాపీ చేయండి, ప్లాన్ నడపండి, కొత్తది జోడించే ముందు ఎటువంటి మార్పులు ఉండవని ఆశించండి.
ప్యాకెట్ ప్రయాణించే క్రమంలోనే దాన్ని ట్రేస్ చేయండి
మార్గం ఉన్నా కనెక్షన్ ఇంకా విఫలమైతే, పై పొరలో ఊహించడం బదులు మార్గాన్ని క్రమంగా నడవండి.
- మార్గం: ప్రిఫిక్స్ గమ్యాన్ని కవర్ చేసి ఎండ్పాయింట్తో అనుబంధిత సబ్నెట్ను చూపిస్తుంది.
- అనుమతి: అనుమతి నియమం వినియోగదారు గ్రూప్కు ఆ గమ్యాన్ని అనుమతిస్తుంది. మార్గం ఒక్కటే ఎప్పుడూ ప్రవేశం ఇవ్వదు.
- తిరిగి వచ్చే మార్గం: లక్ష్య సబ్నెట్ మార్గ పట్టిక సమాధానాలను ఎండ్పాయింట్ వైపు తిరిగి పంపుతుంది, భద్రతా గ్రూప్ క్లయింట్ చిరునామా పూల్ నుండి పోర్టును అనుమతిస్తుంది.
- అప్లికేషన్: క్లయింట్ నుండి నిజమైన TCP కనెక్షన్ తెరవండి, తర్వాత లక్ష్య లాగ్లు పూల్ నుండి ఆశించిన మూల చిరునామాను చూపిస్తున్నాయని నిర్ధారించండి.
ప్రతి apply కు ఒక ప్రిఫిక్స్ మార్చండి, తర్వాత మార్గ జాబితాను మళ్లీ చదవండి, గమ్యం, అనుమతించే నియమం మరియు తిరిగి వచ్చే మార్గాన్ని కలిసి నమోదు చేయండి. తిరస్కరించబడిన కనెక్షన్ను తదుపరి డీబగ్ చేసే వ్యక్తి సర్టిఫికెట్ సిద్ధాంతం నుండి కాదు, ఈ జాబితా నుండి ప్రారంభించాలి.