UART Wi-Fi मोड्युल भएको माइक्रोकन्ट्रोलरले त्यसको पछाडिको सेवासम्म पुग्न VPN लागू गर्नु पर्दैन। मोड्युलले पहिले नै TCP/IP स्ट्याक चलाइरहेको छ र सिरियल पोर्टमा सकेट दिन्छ, र त्यही ल्यानमा रहेको गेटवेले त्यो ट्राफिक सुरुङबाट लैजान सक्छ। यो डिजाइन तब मात्र काम गर्छ जब तपाईं चार प्रश्नको क्रममा जवाफ दिन सक्नुहुन्छ, त्यसैले यसलाई जाँचसूची मान्नुहोस्: ठेगाना, सकेट, मार्ग, सीमा। जुन पहिलो ढोका असफल हुन्छ त्यहीँ रोकिनुहोस्, किनकि पछिका त्यसको भरपाई गर्न सक्दैनन्।

हरेक तहलाई एउटा काम दिनुहोस्

UART लिङ्कले माइक्रोकन्ट्रोलर र मोड्युलबीच AT आदेश र पेलोड बोक्छ। मोड्युल Wi-Fi सञ्जालमा जोडिन्छ र आफ्नो स्रोत ठेगानासहित IP जडानको मालिक हुन्छ। गेटवे सुरुङ, प्रमाणहरू र अगाडि पठाउने नीतिको मालिक हुन्छ। यी कामहरू अलग राख्नुले नै डिजाइनलाई हरेक चरणमा डिबग गर्न सकिने बनाउँछ।

यो अलगावले गेटवे नीति कसरी लेख्ने भन्ने पनि बदल्छ। स्रोत नियमले मोड्युलको ल्यान ठेगाना नाम दिनुपर्छ, सिरियल लिङ्कपछाडिको माइक्रोकन्ट्रोलरका लागि काल्पनिक ठेगाना होइन। यो डिजाइनमा माइक्रोकन्ट्रोलरको आफ्नै IP पहिचान छैन, र छ भनेर देखाउँदा कहिल्यै नमिल्ने नियम बन्छ।

सञ्जालले समर्थन गर्ने जुनसुकै आरक्षण विधिबाट मोड्युललाई स्थिर ठेगाना दिनुहोस्, वा उपकरणहरूलाई तिनको आफ्नै खण्डमा राख्नुहोस् र गेटवेलाई इन्टरफेसअनुसार मिलाउन दिनुहोस्। रिबुटपछि बदलिने पूल ठेगानाले लेख्दा सही भएको नीति अन्ततः तोड्छ।

के गेटवेले मोड्युलको ठेगाना नाम दिन सक्छ?

कुनै पनि सकेट खुल्नुअघि मोड्युल जोडिएको छ, यसको ठेगाना छ र गेटवेले यसलाई अपेक्षित इन्टरफेसमा देख्छ भन्ने पुष्टि गर्नुहोस्। सबैभन्दा धेरै चुपचाप असफल हुने ढोका यही हो, किनकि ल्यान कहिल्यै नछाडेको जडान प्रयासको मोड्युलले खुसीसाथ रिपोर्ट गर्छ।

AT+CWMODE=1
AT+CWJAP="lab-wifi","passphrase"
AT+CIPSTA?
AT+CIPMUX=0

एकल-जडान मोडले आदेशको क्रम सरल राख्छ, र एउटै सेवासँग बोल्ने एउटा सेन्सरका लागि यही सही सुरुवात हो। बहु-जडान मोडले पछिका हरेक आदेशको वाक्यरचना बदल्छ, त्यसैले अर्को फर्मवेयर संस्करणबाट उदाहरण प्रतिलिपि गर्नुअघि तपाईं कुन मोडमा हुनुहुन्छ निर्क्योल गर्नुहोस्।

मोड्युलबाट सकेट खोल्नुहोस्

ठेगाना र मोड तय भएपछि मोड्युलले निजी सेवासँग TCP जडान खोल्न सक्छ। तलको ठेगाना कागजात दायराको उदाहरण हो; यसको ठाउँमा आफ्नो राख्नुहोस् र उही आकार कायम राख्नुहोस्।

AT+CIPSTART="TCP","10.90.0.20",9000
AT+CIPSEND=18
{"t":21.4,"rh":48}

त्यो AT आदेशले साधारण TCP सकेट खोल्छ, र सकेट सुरुङ होइन: यसमा केहीले VPN बनाउँदैन र केहीले पेलोड इन्क्रिप्ट गर्दैन। फर्मवेयरको TLS मोड आफ्नै आदेश र आफ्नै प्रमाणपत्र व्यवस्थापन भएको छुट्टै सुविधा हो, र कुनै पनि UART मोड्युलले दुवैमध्ये एउटा पनि समर्थन नगर्न सक्छ। माथिको वाक्यरचना यसमा लागू हुन्छ भन्ने मान्नुको सट्टा आफ्नो फर्मवेयरका लागि TCP/IP AT आदेश सन्दर्भ हेर्नुहोस्।

AT+CIPSEND मा पेलोडको लम्बाइ तपाईंले साँच्चै पठाउनेसँग मिल्नुपर्छ, नत्र मोड्युलले कहिल्यै नआउने बाइटको प्रतीक्षा गर्छ र जडान अड्किएको जस्तो देखिन्छ। त्यो असफलता सञ्जाल समस्याजस्तो देखिन्छ र लगभग सधैं लम्बाइमा एकको त्रुटि हुन्छ।

जडानलाई गेटवेबाट लैजानुहोस्

गेटवेलाई निजी गन्तव्यसम्म मार्ग, उपकरण सञ्जालबाट सुरुङभित्र पठाउने अनुमति र मोड्युलसम्म पुग्ने फर्कने बाटो चाहिन्छ। यदि टाढाको पक्ष उपकरण उपसञ्जालतर्फ फर्केर मार्ग दिँदैन भने डिजाइनलाई जानाजान बनाइएको अनुवाद नियम चाहिन्छ, र त्यो नियमले सेवाले देख्ने स्रोत पहिचान बदल्छ।

ip route get 10.90.0.20
sudo tcpdump -ni wg0 'host 10.90.0.20 and port 9000'
sudo conntrack -L | grep 9000

पहिले फर्कने बाटोमा ध्यान दिनुहोस्। सेवासम्म पुगेर कहिल्यै फर्केर नआउने अगाडि पठाइएको प्याकेटले गेटवेमा कुनै त्रुटि नदिई मोड्युलमा समयसीमा उत्पन्न गर्छ, जसले मानिसहरूलाई घण्टौं Wi-Fi लिङ्कतिर हेर्न लगाउँछ। conntrack प्रविष्टिले गेटवेले जवाफ देख्यो कि देखेन भन्ने बताउँछ।

सुरुङ साँच्चै कहाँ अन्त्य हुन्छ निर्क्योल गर्नुहोस्

सुरुङ गेटवेमा सुरु हुन्छ। यसले UART लिङ्क इन्क्रिप्ट गर्दैन, र मोड्युलदेखि गेटवेसम्मको ल्यान खण्डलाई सुरुङको भाग बनाउँदैन। त्यो खण्डमा जसलाई सुरक्षा चाहिन्छ त्यसलाई आफ्नै विधि चाहिन्छ, र यो उदाहरणको साधारण TCP कुनै TLS होइन।

सुरुङ खस्दा के हुन्छ पनि निर्क्योल गर्नुहोस्। यदि डेलिभरी VPN बाट मात्र हुनुपर्ने हो भने, अगाडि पठाउने नीतिले वैकल्पिक बाटोबाट त्यही गन्तव्यलाई अनुमति दिनु हुँदैन, किनकि फलब्याक मार्गले सर्त चुपचाप विफल बनाउँछ। पुनःजडानको व्यवहार सीमित गर्नुहोस् ताकि काटिएको मोड्युलले सिरियल लिङ्क वा टाढाको सेवालाई फेरि प्रयासले नभरोस्।

चारै जवाफ सँगै लेख्नुहोस्: मोड्युलको ठेगाना, सकेटको लक्ष्य, गेटवेको मार्ग र इन्क्रिप्सन कहाँ सुरु हुन्छ। यो उपकरण पछि डिबग गर्ने व्यक्तिलाई चारै चाहिन्छ, र यीमध्ये कुनै पनि फर्मवेयरबाट मात्र अनुमान गर्न सकिँदैन।

सम्बन्धित लेखहरू