जुळणारा रूट नसताना 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 मध्ये एक प्रीफिक्स बदला, नंतर रूट यादी पुन्हा वाचा, आणि गंतव्य, अधिकृत करणारा नियम व परतीचा मार्ग एकत्र नोंदवा. नाकारलेले कनेक्शन डीबग करणाऱ्या पुढच्या व्यक्तीने प्रमाणपत्र सिद्धांतापासून नाही, या यादीपासून सुरुवात करावी.