Set de VPN efter in UART-Wi-Fi-module, net derbinnen
In UART-Wi-Fi-module hat in TCP-socket nedich, en de gateway hat de tunnel. Neam syn adres, hâld it werompaad iepen en wês wis wêr’t de fersifering begjint.
In mikrokontrôler mei in UART-Wi-Fi-module hoecht gjin VPN te ymplementearjen om in tsjinst efter ien te berikken. De module draait al in TCP/IP-stapel en biedt sockets oer de searje-poarte oan, en in gateway op itselde LAN kin dat ferkear troch de tunnel fiere. It ûntwerp wurket allinnich as jo fjouwer fragen yn folchoarder beäntwurdzje kinne, behannelje it dus as in kontrôlelijst: adres, socket, rûte, grins. Stop by de earste poarte dy’t mislearret, want de lettere kinne dy net kompensearje.
Jou elke laach ien taak
De UART-ferbining ferfiert AT-opdrachten en payload tusken de mikrokontrôler en de module. De module ferbynt him mei it Wi-Fi-netwurk en hat de IP-ferbining, ynklusyf syn boarne-adres. De gateway hat de tunnel, de oanmeldgegevens en it trochstjoerbelied. It skieden fan dy taken is wat it ûntwerp op elke stap debugber makket.
De skieding feroaret ek hoe’t jo it gateway-belied skriuwe. In boarneregel moat it LAN-adres fan de module neame, net in betocht adres foar de mikrokontrôler efter de searje-ferbining. De mikrokontrôler hat gjin eigen IP-identiteit yn dit ûntwerp, en dwaan as hat er ien, makket in regel dy’t nea oerienkomt.
Jou de module in fêst adres fia hokker reservaasjemeganisme it netwurk ek stipet, of set de apparaten op har eigen segmint en lit de gateway oerienkomme op ynterface. In poeladres dat nei in werstart feroaret, sil úteinlik in belied brekke dat korrekt wie doe’t jo it skreauwen.
Kin de gateway it adres fan de module neame?
Foardat der in socket iepene wurdt, befêstigje jo dat de module ferbûn is, in adres hat, en dat de gateway dy op de ferwachte ynterface sjocht. Dit is de poarte dy’t it faakst stil mislearret, want de module sil grif in ferbiningpoging melde dy’t it LAN nea ferlitten hat.
AT+CWMODE=1 AT+CWJAP="lab-wifi","passphrase" AT+CIPSTA? AT+CIPMUX=0
De modus mei ien ferbining hâldt de opdrachtrige ienfâldich, en it is it juste begjinpunt foar ien sensor dy’t mei ien tsjinst praat. De modus mei meardere ferbiningen feroaret de syntaksis fan elke lettere opdracht, beslút dus yn hokker jo binne foardat jo in foarbyld út in oare firmware-ferzje kopiearje.
Iepenje de socket fan de module ôf
Mei adres en modus fêststeld, kin de module in TCP-ferbining nei de private tsjinst iepenje. It adres hjirûnder is in foarbyld út in dokumintaasje-berik; ferfang it troch jo eigen en hâld deselde foarm.
AT+CIPSTART="TCP","10.90.0.20",9000
AT+CIPSEND=18
{"t":21.4,"rh":48}
Dy AT-opdracht iepenet in gewoane TCP-socket, en in socket is gjin tunnel: neat deryn makket in VPN en neat deryn fersiferet de payload. De TLS-modus fan de firmware is in aparte funksje mei syn eigen opdracht en syn eigen sertifikaatbehear, en in willekeurige UART-module stipet miskien gjin fan beide. Sjoch yn ‘e TCP/IP AT-opdrachtreferinsje fan jo firmware ynstee fan oan te nimmen dat de syntaksis hjirboppe dêrfoar jildt.
De payloadlingte yn AT+CIPSEND moat oerienkomme mei wat jo eins stjoere, oars wachtet de module op bytes dy’t nea komme en liket de ferbining te hingjen. Dat fâl liket in netwurkprobleem en is hast altyd in flater fan ien yn ‘e lingte.
Routearje de ferbining troch de gateway
De gateway hat in rûte nei de private bestimming nedich, tastimming om fan it apparaatnetwurk yn ‘e tunnel troch te stjoeren, en in werompaad dat de module berikt. As de fiere kant net werom routearret nei it apparaat-subnet, hat it ûntwerp in bewuste oersettingsregel nedich, en dy regel feroaret de boarne-identiteit dy’t de tsjinst sjocht.
ip route get 10.90.0.20 sudo tcpdump -ni wg0 'host 10.90.0.20 and port 9000' sudo conntrack -L | grep 9000
Let earst op it werompaad. In trochstjoerd pakket dat de tsjinst berikt en nea weromkomt, jout in time-out by de module sûnder ien flater op de gateway, wat minsken oeren nei de Wi-Fi-ferbining sjen lit. De conntrack-yngong fertelt jo oft de gateway it antwurd oait seach.
Beslút wêr’t de tunnel eins einiget
De tunnel begjint by de gateway. Hy fersiferet de UART-ferbining net, en hy makket it LAN-segmint tusken module en gateway gjin diel fan ‘e tunnel. Alles wat op dat segmint beskerming nedich hat, hat syn eigen meganisme nedich, en gewoane TCP yn dit foarbyld is gjin TLS.
Beslút ek wat der bart as de tunnel falt. As levering allinnich fia de VPN mei, mei it trochstjoerbelied deselde bestimming net fia in alternatyf paad tastean, want in fallback-rûte ûnderminet de eask stil. Behein it werferbineningsgedrach sadat in loskeppele module de searje-ferbining of de fiere tsjinst net oerstreamt mei nije pogingen.
Skriuw de fjouwer antwurden byinoar: it adres fan de module, it socket-doel, de gateway-rûte en wêr’t de fersifering begjint. De folgjende persoan dy’t dit apparaat debugt, hat alle fjouwer nedich, en gjinien is allinnich út ‘e firmware ôf te lieden.