Laita VPN UART Wi-Fi -moduulin taakse, älä sen sisään
UART Wi-Fi -moduuli tarvitsee TCP-soketin, ja tunneli on yhdyskäytävän. Nimeä sen osoite, pidä paluupolku auki ja tiedä, mistä salaus alkaa.
Mikrokontrolleri, jossa on UART Wi-Fi -moduuli, ei tarvitse toteuttaa VPN:ää päästäkseen sen takana olevaan palveluun. Moduuli ajaa jo TCP/IP-pinoa ja tarjoaa soketit sarjaportin kautta, ja samassa lähiverkossa oleva yhdyskäytävä voi kuljettaa tämän liikenteen tunnelin läpi. Suunnittelu toimii vain, jos pystyt vastaamaan neljään kysymykseen järjestyksessä, joten käsittele sitä tarkistuslistana: osoite, soketti, reitti, raja. Pysähdy ensimmäiseen porttiin, joka epäonnistuu, sillä myöhemmät eivät voi korvata sitä.
Anna jokaiselle kerrokselle yksi tehtävä
UART-linkki kuljettaa AT-komentoja ja hyötykuormaa mikrokontrollerin ja moduulin välillä. Moduuli liittyy Wi-Fi-verkkoon ja omistaa IP-yhteyden lähdeosoitteensa mukaan lukien. Yhdyskäytävä omistaa tunnelin, tunnistetiedot ja edelleenlähetyskäytännön. Juuri näiden tehtävien erottaminen tekee suunnittelusta viritettävän joka vaiheessa.
Erottaminen muuttaa myös tapaa, jolla kirjoitat yhdyskäytävän käytäntöä. Lähdesäännön pitäisi nimetä moduulin lähiverkko-osoite, ei kuvitteellista osoitetta sarjalinkin takana olevalle mikrokontrollerille. Mikrokontrollerilla ei ole omaa IP-identiteettiä tässä suunnittelussa, ja sen teeskenteleminen tuottaa säännön, joka ei koskaan täsmää.
Anna moduulille vakaa osoite millä tahansa varausmekanismilla, jota verkko tukee, tai sijoita laitteet omaan segmenttiinsä ja anna yhdyskäytävän täsmätä rajapinnan mukaan. Uudelleenkäynnistyksen jälkeen vaihtuva pooliosoite rikkoo lopulta käytännön, joka oli oikein, kun kirjoitit sen.
Voiko yhdyskäytävä nimetä moduulin osoitteen?
Ennen kuin mikään soketti avautuu, varmista, että moduuli on liittynyt, sillä on osoite ja että yhdyskäytävä näkee sen odotetulla rajapinnalla. Tämä on portti, joka epäonnistuu useimmin äänettömästi, koska moduuli mielellään raportoi yhteysyrityksestä, joka ei koskaan lähtenyt lähiverkosta.
AT+CWMODE=1 AT+CWJAP="lab-wifi","passphrase" AT+CIPSTA? AT+CIPMUX=0
Yhden yhteyden tila pitää komentosarjan yksinkertaisena, ja se on oikea lähtökohta yhdelle anturille, joka puhuu yhdelle palvelulle. Moniyhteystila muuttaa jokaisen myöhemmän komennon syntaksia, joten päätä, kummassa olet, ennen kuin kopioit esimerkin toisesta laiteohjelmistoversiosta.
Avaa soketti moduulista
Kun osoite ja tila on selvitetty, moduuli voi avata TCP-yhteyden yksityiseen palveluun. Alla oleva osoite on esimerkki dokumentaatioalueelta; korvaa se omallasi ja pidä sama muoto.
AT+CIPSTART="TCP","10.90.0.20",9000
AT+CIPSEND=18
{"t":21.4,"rh":48}
Tuo AT-komento avaa tavallisen TCP-soketin, eikä soketti ole tunneli: mikään siinä ei luo VPN:ää eikä mikään salaa hyötykuormaa. Laiteohjelmiston TLS-tila on erillinen ominaisuus, jolla on oma komentonsa ja oma varmenteiden käsittelynsä, eikä mielivaltainen UART-moduuli välttämättä tue kumpaakaan. Tarkista laiteohjelmistosi TCP/IP:n AT-komentoviite sen sijaan, että olettaisit yllä olevan syntaksin pätevän siihen.
Hyötykuorman pituuden AT+CIPSEND-kohdassa on vastattava sitä, mitä todella lähetät, muuten moduuli odottaa tavuja, jotka eivät koskaan saavu, ja yhteys näyttää jumittuneen. Tämä vika näyttää verkko-ongelmalta ja on lähes aina yhden yksikön virhe pituudessa.
Reititä yhteys yhdyskäytävän kautta
Yhdyskäytävä tarvitsee reitin yksityiseen kohteeseen, luvan välittää laiteverkosta tunneliin ja paluupolun, joka saavuttaa moduulin. Jos etäpuoli ei reititä takaisin laitealiverkkoon, suunnittelu tarvitsee tarkoituksellisen käännössäännön, ja se sääntö muuttaa lähdeidentiteettiä, jonka palvelu näkee.
ip route get 10.90.0.20 sudo tcpdump -ni wg0 'host 10.90.0.20 and port 9000' sudo conntrack -L | grep 9000
Tarkkaile ensin paluupolkua. Välitetty paketti, joka saavuttaa palvelun eikä koskaan palaa, tuottaa moduulissa aikakatkaisun ilman mitään virhettä yhdyskäytävässä, mikä saa ihmiset tuijottamaan Wi-Fi-linkkiä tunteja. conntrack-merkintä kertoo, näkikö yhdyskäytävä vastauksen lainkaan.
Päätä, mihin tunneli todella päättyy
Tunneli alkaa yhdyskäytävässä. Se ei salaa UART-linkkiä eikä tee moduulin ja yhdyskäytävän välisestä lähiverkkosegmentistä osaa tunnelista. Kaikki, mikä tarvitsee suojausta tuossa segmentissä, tarvitsee oman mekanisminsa, eikä tämän esimerkin tavallinen TCP ole TLS:ää.
Päätä myös, mitä tapahtuu, kun tunneli putoaa. Jos toimitus saa tapahtua vain VPN:n kautta, edelleenlähetyskäytäntö ei saa sallia samaa kohdetta vaihtoehtoista polkua pitkin, koska varareitti kumoaa vaatimuksen äänettömästi. Rajaa uudelleenyhdistämiskäyttäytyminen, jotta irrotettu moduuli ei tulvi sarjalinkkiä tai etäpalvelua uusintayrityksillä.
Kirjaa neljä vastausta yhteen: moduulin osoite, soketin kohde, yhdyskäytävän reitti ja mistä salaus alkaa. Seuraava tätä laitetta virittävä tarvitsee kaikki neljä, eikä niistä yhtäkään voi päätellä pelkästä laiteohjelmistosta.