Terraform Client VPN मार्गहरू: सबनेटभन्दा बढी CIDR सहित
सम्बद्धता, मार्ग र अधिकार छुट्टाछुट्टै वस्तुहरू हुन्। छोटो सबनेट सूची इन्डेक्स गर्नुको सट्टा प्रत्येक गन्तव्य CIDR लाई सम्बद्ध सबनेटसँग म्याप गर्नुहोस्।
एउटा ल्यापटप Client VPN एन्डपोइन्टमा जडान हुन्छ, र terraform apply अझै रुट स्रोतमा असफल हुन्छ। कन्फिगरेसनमा सामान्यतया सम्बद्ध सबनेटभन्दा बढी गन्तव्य CIDR हुन्छन्, र रुट ब्लकले इन्डेक्ससँग लक्ष्य छान्छ। यसले दुवै सङ्ग्रह समानान्तर छन् भनी मान्छ। तिनीहरू छैनन्, र असफलता समीक्षाको सट्टा लागू गर्ने समयमा देखिन्छ।
असफल हुने वस्तुलाई नाम दिनुहोस्
तीन स्रोत संलग्न छन् र प्रत्येकले फरक प्रश्नको उत्तर दिन्छ। सम्बद्धताले एन्डपोइन्टको नेटवर्क इन्टरफेसलाई सबनेटमा राख्छ। रुटले कुन गन्तव्य प्रिफिक्स लक्ष्य सबनेटमा पुर्याइन्छ भनी बताउँछ। अधिकार नियमले कुन प्रयोगकर्ताले कुन प्रिफिक्समा पुग्न सक्छन् भनी बताउँछ। कहिल्यै सम्बद्ध नगरिएको सबनेटतर्फ देखाउने रुट दुवै वस्तु भए पनि असफल हुन्छ, किनकि लक्ष्य यो एन्डपोइन्टको हुनुपर्छ।
पहिले सम्बद्धताहरू सूचीबद्ध गर्नुहोस्: aws ec2 describe-client-vpn-target-networks --client-vpn-endpoint-id cvpn-endpoint-0123456789abcdef0।
VPC को स्थानीय रुट सम्झनुहोस्
पहिलो सम्बद्धताले सम्पूर्ण VPC का लागि स्थानीय रुट थप्छ, त्यसैले त्यो VPC का प्रत्येक सबनेट रुट स्रोत बिना नै पुग्न सकिने छ। पीयर गरिएका VPC, Transit Gateway जडान र VPC को स्वामित्व नभएका on-premises प्रिफिक्सहरूका लागि थप रुटहरू छन्। त्यसैले तीन सम्बद्धता भएको एन्डपोइन्टले कानुनी रूपमा सात गन्तव्य प्रविष्टि बोक्न सक्छ।
रुट थप्नुअघि VPC बाहिर पर्ने गन्तव्यहरू गन्नुहोस्। यदि त्यो सङ्ख्या CIDR सूचीभन्दा कम छ भने, सूचीले कुनै रुट नचाहिने सबनेटहरूको वर्णन गर्छ।
इन्डेक्सलाई नक्साले बदल्नुहोस्
इन्डेक्सलाई मोड्युलो अपरेटरमा बेर्नाले त्रुटि शान्त हुन्छ र मोडेलिङ गल्ती रहन्छ। छानिएको लक्ष्यबाट पुग्न नसकिने गन्तव्यले योजना जतिसुकै सफा रूपमा लागू भए पनि कुनै ट्राफिक बोक्दैन। यसको सट्टा सम्बन्ध सुरक्षित गर्नुहोस्, र केही बनाउनुअघि Terraform लाई त्यो जाँच्न दिनुहोस्। तलको ब्लक उदाहरणात्मक छ र प्रदायकको एन्डपोइन्ट रुट आर्गुमेन्टहरू प्रयोग गर्छ।
variable "client_vpn_destinations" {
description = "Destination CIDR mapped to an associated subnet key"
type = map(string)
}
resource "aws_ec2_client_vpn_route" "this" {
for_each = var.client_vpn_destinations
client_vpn_endpoint_id = aws_ec2_client_vpn_endpoint.this.id
destination_cidr_block = each.key
target_vpc_subnet_id = aws_subnet.private[each.value].id
lifecycle {
precondition {
condition = contains(keys(aws_subnet.private), each.value)
error_message = "Route target must be a subnet key in the associated map."
}
}
}
नक्सा सम्बद्धता सूचीको छेउमा हुँदा, गन्तव्य थप्दा कुन सबनेटले त्यो बोक्ने भन्ने निर्णय गर्नुपर्छ। त्यो इन्डेक्सले लुकाएको कुराकानी हो।
अर्को असफलताले इन्डेक्स त्रुटिको सट्टा अर्थहीन मानहरू उत्पादन गर्छ। उच्च स्तरको इन्टरफेस अपेक्षित हुँदा निम्न स्तरको संरचना पठाउँदा API ले पढ्ने फिल्डहरू भरिएका रहँदैनन्, र परिणामस्वरूप CIDR अप्रयोग्य हुन्छ। वस्तु अपेक्षित हुँदा स्ट्रिङ आएमा Terraform ले त्यही आकार देखाउँछ। आर्गुमेन्टको प्रकारका लागि प्रदायकको स्किमा जाँच्नुहोस्।
क्लाइन्टबाट यो प्रमाणित गर्नुहोस्
लागू गर्नुअघि terraform validate र वास्तविक अवस्थाविरुद्ध योजना चलाउनुहोस्। त्यसपछि सफल apply मा भरोसा गर्नुको सट्टा एन्डपोइन्टको लक्ष्य-नेटवर्क सूचीलाई नक्सासँग तुलना गर्नुहोस्।
स्वीकृति परीक्षण भनेको प्रत्येक इच्छित प्रिफिक्समा पुग्ने जडान भएको क्लाइन्ट हो।
अधिकार नियम त्यो ठाउँ हो जहाँ धेरै सेटअप चाँडै रोकिन्छन्। यो गन्तव्य CIDR र समूहसम्म सीमित छ, र मिल्ने अधिकार बिना रुटले प्रिफिक्समा पुग्न नसक्ने जडान भएको क्लाइन्ट बनाउँछ। प्रत्येक प्रिफिक्सका लागि दुवै वस्तु जाँच्नुहोस्, किनकि रुट बनाएर नियम बिर्सने apply पूर्ण देखिन्छ। समूहभित्रको एक र बाहिरको एक प्रयोगकर्तासँग परीक्षण गर्नुहोस्।
एउटा प्रिफिक्स असफल भएमा, त्यसको रुट प्रविष्टिलाई अधिकार नियमसँग तुलना गर्नुहोस्। अनुपस्थित अधिकार र अनुपस्थित रुट क्लाइन्ट लगमा समान देखिन्छन् र फरक स्रोतहरूमा सुधारिन्छन्।