Novietojiet VPN aiz UART Wi-Fi moduļa, ne tā iekšienē
UART Wi-Fi modulim vajadzīgs TCP ligzda, un tunelis pieder vārtejai. Nosauciet tās adresi, turiet atvērtu atgriešanās ceļu un ziniet, kur sākas šifrēšana.
Mikrokontrollerim ar UART Wi-Fi moduli nav jāievieš VPN, lai sasniegtu pakalpojumu aiz tā. Modulis jau darbojas ar TCP/IP steku un nodrošina ligzdas pa seriālo portu, un vārteja tajā pašā lokālajā tīklā var pārvadāt šo datplūsmu cauri tunelim. Dizains darbojas tikai tad, ja varat pēc kārtas atbildēt uz četriem jautājumiem, tāpēc uzskatiet to par kontrolsarakstu: adrese, ligzda, maršruts, robeža. Apstājieties pie pirmajiem vārtiem, kas neizdodas, jo vēlākie to nevar kompensēt.
Piešķiriet katram slānim vienu uzdevumu
UART saite pārnes AT komandas un lietderīgo slodzi starp mikrokontrolleri un moduli. Modulis pievienojas Wi-Fi tīklam un pārvalda IP savienojumu, tostarp savu avota adresi. Vārteja pārvalda tuneli, akreditācijas datus un pārsūtīšanas politiku. Tieši šo uzdevumu atdalīšana padara dizainu atkļūdojamu katrā posmā.
Atdalīšana maina arī to, kā rakstāt vārtejas politiku. Avota noteikumam jānosauc moduļa lokālā tīkla adrese, nevis izdomāta adrese mikrokontrollerim aiz seriālās saites. Šajā dizainā mikrokontrollerim nav savas IP identitātes, un izlikšanās, ka tā ir, rada noteikumu, kas nekad nesakrīt.
Piešķiriet modulim stabilu adresi ar jebkuru rezervēšanas mehānismu, ko atbalsta tīkls, vai novietojiet ierīces to atsevišķā segmentā un ļaujiet vārtejai saskaņot pēc saskarnes. Adrese no pūla, kas mainās pēc pārstartēšanas, galu galā salauzīs politiku, kas bija pareiza, kad to rakstījāt.
Vai vārteja var nosaukt moduļa adresi?
Pirms tiek atvērta jebkura ligzda, pārliecinieties, ka modulis ir pievienots, tam ir adrese un vārteja to redz gaidītajā saskarnē. Šie ir vārti, kas visbiežāk neizdodas klusi, jo modulis labprāt ziņos par savienojuma mēģinājumu, kas nekad nav pametis lokālo tīklu.
AT+CWMODE=1 AT+CWJAP="lab-wifi","passphrase" AT+CIPSTA? AT+CIPMUX=0
Viena savienojuma režīms uztur komandu secību vienkāršu, un tas ir pareizais sākumpunkts vienam sensoram, kas runā ar vienu pakalpojumu. Vairāku savienojumu režīms maina katras nākamās komandas sintaksi, tāpēc izlemiet, kurā esat, pirms kopējat piemēru no citas programmaparatūras versijas.
Atveriet ligzdu no moduļa
Kad adrese un režīms ir noteikti, modulis var atvērt TCP savienojumu ar privāto pakalpojumu. Zemāk dotā adrese ir piemērs no dokumentācijas diapazona; aizstājiet to ar savu un saglabājiet to pašu formu.
AT+CIPSTART="TCP","10.90.0.20",9000
AT+CIPSEND=18
{"t":21.4,"rh":48}
Šī AT komanda atver vienkāršu TCP ligzdu, un ligzda nav tunelis: nekas tajā nerada VPN un nekas nešifrē lietderīgo slodzi. Programmaparatūras TLS režīms ir atsevišķa funkcija ar savu komandu un savu sertifikātu apstrādi, un patvaļīgs UART modulis var neatbalstīt nevienu no tiem. Pārbaudiet savas programmaparatūras TCP/IP AT komandu uzziņu, nevis pieņemiet, ka iepriekš minētā sintakse uz to attiecas.
Lietderīgās slodzes garumam AT+CIPSEND ir jāatbilst tam, ko jūs faktiski sūtāt, citādi modulis gaidīs baitus, kas nekad neienāks, un savienojums izskatīsies iesprūdis. Šī kļūda izskatās pēc tīkla problēmas un gandrīz vienmēr ir vienības nobīde garumā.
Maršrutējiet savienojumu cauri vārtejai
Vārtejai vajadzīgs maršruts uz privāto galamērķi, atļauja pārsūtīt no ierīču tīkla tunelī un atgriešanās ceļš, kas sasniedz moduli. Ja attālā puse maršrutē atpakaļ uz ierīču apakštīklu, dizainam vajadzīgs apzināts tulkošanas noteikums, un šis noteikums maina avota identitāti, ko redz pakalpojums.
ip route get 10.90.0.20 sudo tcpdump -ni wg0 'host 10.90.0.20 and port 9000' sudo conntrack -L | grep 9000
Vispirms vērojiet atgriešanās ceļu. Pārsūtīts pakets, kas sasniedz pakalpojumu un nekad neatgriežas, modulī rada taimautu bez nekādas kļūdas vārtejā, kas liek cilvēkiem stundām skatīties uz Wi-Fi saiti. conntrack ieraksts pasaka, vai vārteja vispār redzēja atbildi.
Izlemiet, kur tunelis patiešām beidzas
Tunelis sākas vārtejā. Tas nešifrē UART saiti, un tas nepārvērš lokālā tīkla segmentu starp moduli un vārteju par tuneļa daļu. Visam, kam šajā segmentā vajadzīga aizsardzība, vajadzīgs savs mehānisms, un vienkāršais TCP šajā piemērā nav TLS.
Izlemiet arī, kas notiek, kad tunelis krīt. Ja piegādei jānotiek tikai caur VPN, pārsūtīšanas politika nedrīkst atļaut to pašu galamērķi pa alternatīvu ceļu, jo rezerves maršruts klusi atceļ prasību. Ierobežojiet atkārtotas savienošanas uzvedību, lai atvienots modulis nepārpludinātu seriālo saiti vai attālo pakalpojumu ar atkārtotiem mēģinājumiem.
Pierakstiet četras atbildes kopā: moduļa adresi, ligzdas mērķi, vārtejas maršrutu un to, kur sākas šifrēšana. Nākamajai personai, kas atkļūdos šo ierīci, būs vajadzīgas visas četras, un nevienu no tām nevar secināt tikai no programmaparatūras.