दुई साइटको WireGuard हबका लागि IPv6 योजना: प्रिफिक्स, पियर, रुट
दुई LAN का लागि निजी IPv6 हबमा काम गर्नुहोस्: प्रिफिक्स छान्नुहोस्, टनेल ठेगानाहरू आरक्षित राख्नुहोस्, त्यसपछि AllowedIPs ले कुन पियर कुन सबनेटको मालिक हो भनी व्यक्त गरून्।
दुई LAN, एउटा WireGuard हब र तीन अलग प्रश्नको जवाफ दिनुपर्ने IPv6 ठेगाना योजना: कुन प्रिफिक्स, कुन ठेगाना कुन राउटरको हो र कुन पियर कुन सबनेटको मालिक हो। यीमध्ये एउटा पनि गलत भयो भने ह्यान्डसेक हुने तर केही पनि रुट नहुने टनेल बन्छ। तलको योजना त्यही क्रममा निजी दुई-साइट डिजाइनमा जान्छ। यसले जानाजान IPv6 इन्टरनेट पहुँच दिँदैन।
प्रिफिक्स केका लागि हो निर्णय गर्नुहोस्
साइटहरूबीच निजी पहुँच लक्ष्य भए fd00::/8 बाट अद्वितीय-स्थानीय प्रिफिक्स स्वाभाविक छनोट हो। प्रत्येक स्थानलाई कुन ISP सेवा दिन्छ भन्नेमा निर्भर नगरी यो स्थिर रहन्छ र विश्वव्यापी रुटिङ तालिकामा घोषणा गरिँदैन, त्यसैले तपाईंको आन्तरिक नम्बरिङ इन्टरनेटमा चुहिन सक्दैन।
त्यही गुण नै सीमा हो। ULA ले कुनै सार्वजनिक फर्किने मार्ग दिँदैन, किनकि कुनै माथिल्लो प्रदायकलाई यसलाई तपाईंको गेटवेमा रुट गर्नुपर्छ भन्ने थाहा छैन। यदि आवश्यकतामा IPv6 इन्टरनेट इग्रेस समावेश छ भने, तपाईंलाई चाहिन्छ यसलाई तपाईंसम्म रुट गर्ने प्रदायकबाट बाँडफाँट, र यो आफ्नै प्रिफिक्स आकारसहितको छुट्टै डिजाइन निर्णय हो।
प्रत्येक परिनियोजनलाई /48 चाहिन्छ भनी नमान्नुहोस्। RFC 6177 अन्तिम साइटको एउटै अनिवार्य आकारबाट टाढा गयो, र सही आकार तपाईंले सञ्चालन गर्ने नेटवर्कको संख्यामा निर्भर हुन्छ। अर्को संस्थाले पनि प्रयोग गर्न सक्ने प्रिफिक्स आविष्कार गर्नुको सट्टा RFC 4193 प्रक्रियाबाट ULA उत्पन्न गर्नुहोस्। कुनै पनि उपकरण कन्फिगर हुनुअघि नतिजा ठेगाना योजनामा लेख्नुहोस्, किनकि कसैले नलेखेको प्रिफिक्स भनेको कसैले पुनः प्रयोग गर्ने प्रिफिक्स हो।
प्रिफिक्सलाई भूमिकामा बाँड्नुहोस्
तलको उदाहरणले fd7c:2e91:4a00::/48 प्रयोग गर्छ, र तालिका साइटअनुसार नभई प्रत्येक ब्लक कहाँ लेखिन्छ त्यसअनुसार मिलाइएको छ। मानहरूलाई नमुनाका रूपमा लिनुहोस् र केही पनि परिनियोजन गर्नुअघि आफ्नै उत्पन्न गर्नुहोस्।
| Where it is written | What appears there | Block used | What it establishes |
|---|---|---|---|
| Hub wg0.conf, interface address | A single host address on the tunnel | fd7c:2e91:4a00:ff00::1/128 | The hub's own tunnel identity |
| Hub wg0.conf, Site A peer | Two ranges in one AllowedIPs line | ::2/128 and :10::/64 | That A owns its tunnel address and its LAN |
| Hub wg0.conf, Site B peer | Two ranges in one AllowedIPs line | ::3/128 and :20::/64 | That B owns its tunnel address and its LAN |
| Site A wg0.conf, interface address | A single host address on the tunnel | fd7c:2e91:4a00:ff00::2/128 | A's identity as the hub sees it |
| Site B wg0.conf, interface address | A single host address on the tunnel | fd7c:2e91:4a00:ff00::3/128 | B's identity as the hub sees it |
LAN ब्लकहरू /64 हुन् किनकि सामान्य SLAAC ले 64-बिट इन्टरफेस पहिचानकर्ता अपेक्षा गर्छ। LAN लाई सानो ब्लकमा बाँड्दा धेरैजसो होस्टमा त्यो धारणा भाँचिन्छ, र निजी योजनामा ठेगाना बचतका लागि सञ्चालन लागत उपयुक्त हुँदैन। दुवै LAN ब्लक /48 को बीचबाट आउँछन्, जसले तल्लो दायरा पछिल्ला साइटका लागि खुला राख्छ।
टनेल ठेगानाहरू प्रशासनिक भण्डार हुन्, लिङ्कमा रहेको नेटवर्क होइन। प्रत्येक इन्टरफेसले त्यसबाट एउटा /128 पाउँछ, त्यसैले कुनै होस्टले टनेलमा साझा सबनेट मान्दैन र आवश्यक नभएको ठाउँमा छिमेकी खोज चल्दैन। भूमिकाहरू अलग राख्नुहोस् र संस्थाको ठेगाना योजनामा अभिलेख गर्नुहोस् ताकि पछिल्लो साइटले ब्लक पुनः प्रयोग नगरोस्।
प्रत्येक राउटरलाई एउटा टनेल ठेगाना दिनुहोस्
प्रत्येक राउटरका लागि एउटा /128 तोक्नुहोस् र काम गरिरहेको हबका विद्यमान कुञ्जी र इन्डप्वाइन्ट राख्नुहोस्। तलका तीन मान केवल होस्ट भागमा फरक पर्छन्।
Hub: Address = fd7c:2e91:4a00:ff00::1/128
Site A: Address = fd7c:2e91:4a00:ff00::2/128
Site B: Address = fd7c:2e91:4a00:ff00::3/128
यो /128 ले त्यो इन्टरफेसमा तोकिएको एउटै ठेगाना वर्णन गर्छ। पियरले कतिवटा गन्तव्यमा रुट गर्न सक्छ भन्ने यसले भन्दैन, किनकि पहुँच इन्टरफेस प्रिफिक्समा नभई AllowedIPs मा व्यक्त हुन्छ।
प्रत्येक साइट राउटरलाई आफ्नो LAN ब्लकमा ठेगाना र त्यसलाई वितरण गर्ने माध्यम पनि चाहिन्छ, सामान्यतया SLAAC का लागि राउटर घोषणाहरू। WireGuard ले ती घोषणाहरू तपाईंको तर्फबाट पठाउँदैन र दुई LAN जोड्दैन। साइट राउटर दुवै दिशामा राउटर हो।
सबनेटको स्वामित्व AllowedIPs मा राख्नुहोस्
साइट A का लागि हबको पियर प्रविष्टिले A को टनेल ठेगाना र A को LAN को स्वामित्व राख्छ, र त्यही जोडी सम्पूर्ण स्वामित्व वक्तव्य हो। त्यो पियर खण्डमा अरू केहीले पनि साइटको वर्णन गर्नु पर्दैन।
AllowedIPs = fd7c:2e91:4a00:ff00::2/128, fd7c:2e91:4a00:10::/64
साइट B को पियर प्रविष्टिले मिल्ने जोडीको स्वामित्व राख्छ, र यहाँ सममिति संक्षिप्तताभन्दा बढी महत्त्वपूर्ण छ। दुवै पङ्क्ति सँगै पढ्नुहोस् र स्वामित्वको विभाजन एकै नजरमा देखिन्छ।
AllowedIPs = fd7c:2e91:4a00:ff00::3/128, fd7c:2e91:4a00:20::/64
यी दुई छुट्टै पियर खण्ड हुन्, एउटा पियरका लागि प्रतिस्पर्धा गर्ने दुई सूची होइनन्। WireGuard ले AllowedIPs दुवै दिशामा प्रयोग गर्छ: बाहिर जाने गन्तव्यका लागि पियर छान्छ, र जुन प्याकेटको स्रोत यसलाई डिक्रिप्ट गर्ने पियरलाई तोकिएको दायरासँग मिल्दैन त्यसलाई अस्वीकार गर्छ। दुवै पियरलाई पूरै /48 दिँदा त्यो दोस्रो जाँच बन्द हुन्छ र कुन साइट कुन ब्लकको मालिक हो अस्पष्ट हुन्छ। यही भिन्नताले गलत स्रोत ठेगानालाई चुपचाप स्वीकार गर्नुको सट्टा देखिने बनाउँछ।
प्रत्येक साइटलाई केवल आफ्नो हब पियरमार्फत पुग्न सकिने गन्तव्यहरू चाहिन्छ: साइट A ले हबको ठेगाना, साइट B को टनेल ठेगाना र B को LAN सूचीबद्ध गर्छ, र साइट B ले उल्टो समूह सूचीबद्ध गर्छ। सूचीहरू जानाजान असममित छन्, किनकि प्रत्येक राउटरले टोपोलोजीको फरक पक्ष देख्छ। दुवैलाई ठेगाना योजनाबाट लेख्नुहोस्, अर्को साइटको कन्फिगरेसनबाट होइन, किनकि यसरी नै पुरानो दायरा पुनःक्रमाङ्कनबाट बाँच्छ।
wg-quick सँग यी दायराहरूले रुट पनि बनाउँछन्। systemd-networkd वा हातले सेटअपमा समान रुट आफै थप्नुहोस्; अन्यथा टनेलले कर्नेलले कहिल्यै नपठाउने प्याकेट बोक्छ।
फर्वार्डिङ पूरा गर्नुहोस् र दुवै दिशा परीक्षण गर्नुहोस्
हबमा र दुवै साइट राउटरमा IPv6 फर्वार्डिङ सक्षम गर्नुहोस्, र फर्वार्ड नीतिमा आवश्यक अन्तर-साइट सेवाहरूलाई अनुमति दिनुहोस्। ICMPv6 Packet Too Big सन्देशहरू प्रयोगयोग्य राख्नुहोस्, किनकि तिनीहरूलाई फाल्दा पथ MTU खोज भाँचिन्छ र अनुप्रयोग दोषजस्तो देखिने ठूला स्थानान्तरणका अवरोध उत्पन्न हुन्छन्। फायरवाल अनुमति बिना फर्वार्ड गर्ने हबले रुटिङ र टनेलबीच प्याकेट फ्याँक्छ। यो असफलता मोड जान्न लायक छ, किनकि टनेल चलिरहन्छ र केही प्रवाह मात्र मर्छन्।
sysctl net.ipv6.conf.all.forwarding
ip -6 route
ping -6 -c 3 fd7c:2e91:4a00:20::1
साइट A को होस्टबाट साइट B को होस्टमा र त्यसपछि उल्टो दिशामा परीक्षण गर्नुहोस्। हबको टनेल ठेगानामा ping ले पहिलो हप मात्र जाँच्छ र LAN रुट गलत भए पनि सफल हुन्छ। होस्ट-देखि-होस्ट प्रवाहले नै योजना प्रमाणित गर्छ।
बाहिरी WireGuard जडान IPv4 माथि चल्न सक्छ जबकि भित्री ट्राफिक IPv6 हुन्छ, र यो स्वतन्त्रता माइग्रेसनका क्रममा उपयोगी हुन्छ। पछि विश्वव्यापी IPv6 इग्रेस थपियो भने, प्रदायकको बाँडफाँट, स्रोत ठेगाना छनोट र फर्किने रुटिङलाई नयाँ डिजाइन चरणका रूपमा पुनरावलोकन गर्नुहोस्; माथिको निजी योजना साइट-देखि-साइट ट्राफिकका लागि मान्य रहन्छ।