मिल्दो रुट नभई 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 मा ल्याउनका लागि दोस्रो इन्डपोइन्ट नउभ्याउनुहोस्।
बरु आयात गर्नुहोस्, वा id हरूलाई चलका रूपमा पठाएर वंशानुगत वस्तुहरू व्यवस्थापनबिना छोड्नुहोस्। आयातलाई हरेक स्रोत प्रकारका लागि प्रदायकले अभिलेख गर्ने पहिचान ढाँचा चाहिन्छ; त्यसले इन्डपोइन्ट, गन्तव्य प्रिफिक्स र लक्ष्य सबनेट इन्कोड गर्छ। त्यो स्ट्रिङ स्मृतिबाट बनाउनुको सट्टा स्रोत कागजातबाट प्रतिलिपि गर्नुहोस्, योजना चलाउनुहोस्, र नयाँ केही थप्नुअघि कुनै परिवर्तन नहुने अपेक्षा गर्नुहोस्।
प्याकेट यात्रा गर्ने क्रममै त्यसको पछि लाग्नुहोस्
रुट भए पनि जडान असफल भइरहेको छ भने माथिल्लो तहमा अनुमान नगरी बाटो क्रमैसँग हिँड्नुहोस्।
- रुट: प्रिफिक्सले गन्तव्य ढाक्छ र इन्डपोइन्टसँग सम्बन्धित सबनेटतर्फ देखाउँछ।
- अधिकार: अधिकार नियमले प्रयोगकर्ताको समूहका लागि त्यो गन्तव्य अनुमति दिन्छ। एक्लै रुटले कहिल्यै पहुँच दिँदैन।
- फर्कने बाटो: लक्ष्य सबनेटको रुट तालिकाले जवाफ इन्डपोइन्टतर्फ फर्काउँछ, र सुरक्षा समूहले क्लाइन्ट ठेगाना पूलबाट पोर्टलाई अनुमति दिन्छ।
- अनुप्रयोग: क्लाइन्टबाट साँचो TCP जडान खोल्नुहोस्, त्यसपछि लक्ष्यको लगले पूलबाट अपेक्षित स्रोत ठेगाना देखाएको पुष्टि गर्नुहोस्।
हरेक apply मा एउटा प्रिफिक्स बदल्नुहोस्, त्यसपछि रुट सूची फेरि पढ्नुहोस्, र गन्तव्य, अधिकार दिने नियम र फर्कने बाटो सँगै लेख्नुहोस्। अस्वीकृत जडान डिबग गर्ने अर्को व्यक्तिले प्रमाणपत्र सिद्धान्तबाट होइन, यही सूचीबाट सुरु गर्नुपर्छ।