Mikroregilo kun UART-Wi-Fi-modulo ne devas implementi VPN por atingi servon malantaŭ ĝi. La modulo jam ruligas TCP/IP-stakon kaj elmetas ingojn tra la seria haveno, kaj pordego en la sama loka reto povas porti tiun trafikon tra la tunelo. La dezajno funkcias nur se vi povas respondi kvar demandojn laŭ ordo, do traktu ĝin kiel kontroliston: adreso, ingo, vojo, limo. Haltu ĉe la unua pordego, kiu malsukcesas, ĉar la postaj ne povas kompensi ĝin.

Donu unu taskon al ĉiu tavolo

La UART-ligilo portas AT-komandojn kaj utilan ŝarĝon inter la mikroregilo kaj la modulo. La modulo aliĝas al la Wi-Fi-reto kaj posedas la IP-konekton, inkluzive de sia fonta adreso. La pordego posedas la tunelon, la akreditaĵojn kaj la plusendan politikon. Teni tiujn taskojn apartaj estas tio, kio igas la dezajnon senerarigebla en ĉiu etapo.

La apartigo ankaŭ ŝanĝas kiel vi skribas la pordegan politikon. Fonteca regulo devus nomi la lokan retadreson de la modulo, ne imagan adreson por la mikroregilo malantaŭ la seria ligilo. La mikroregilo havas neniun propran IP-identecon en ĉi tiu dezajno, kaj ŝajnigi, ke ĝi havas, produktas regulon, kiu neniam kongruas.

Donu al la modulo stabilan adreson per iu ajn rezerva mekanismo, kiun la reto subtenas, aŭ metu la aparatojn en sian propran segmenton kaj lasu la pordegon kongruigi laŭ interfaco. Adreso el naĝejo, kiu ŝanĝiĝas post restarto, fine rompos politikon, kiu estis ĝusta kiam vi skribis ĝin.

Ĉu la pordego povas nomi la adreson de la modulo?

Antaŭ ol malfermiĝos iu ajn ingo, konfirmu, ke la modulo estas asociita, havas adreson, kaj ke la pordego vidas ĝin sur la atendata interfaco. Ĉi tio estas la pordego plej ema malsukcesi silente, ĉar la modulo volonte raportos konektoprovon, kiu neniam forlasis la lokan reton.

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

Unukonekta reĝimo tenas la komandosekvencon simpla, kaj ĝi estas la ĝusta komencpunkto por unu sensilo parolanta kun unu servo. Plurkonekta reĝimo ŝanĝas la sintakson de ĉiu posta komando, do decidu, en kiu vi estas, antaŭ ol kopii ekzemplon el alia firmvara versio.

Malfermu la ingon el la modulo

Kiam adreso kaj reĝimo estas fiksitaj, la modulo povas malfermi TCP-konekton al la privata servo. La adreso sube estas ekzemplo el dokumentada gamo; anstataŭigu ĝin per la via kaj konservu la saman formon.

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

Tiu AT-komando malfermas ordinaran TCP-ingon, kaj ingo ne estas tunelo: nenio en ĝi kreas VPN kaj nenio en ĝi ĉifras la utilan ŝarĝon. La TLS-reĝimo de la firmvaro estas aparta trajto kun propra komando kaj propra atestila traktado, kaj arbitra UART-modulo eble subtenas nek unu nek alian. Kontrolu la TCP/IP AT-komandan referencon por via firmvaro anstataŭ supozi, ke la supra sintakso validas por ĝi.

La utila ŝarĝlongo en AT+CIPSEND devas kongrui kun tio, kion vi efektive sendas, alie la modulo atendas bajtojn, kiuj neniam alvenas, kaj la konekto ŝajnos pendi. Tiu fiasko aspektas kiel reta problemo kaj preskaŭ ĉiam estas eraro de unu en la longo.

Vojigu la konekton tra la pordego

La pordego bezonas vojon al la privata celo, permeson plusendi el la aparata reto en la tunelon, kaj revenan vojon, kiu atingas la modulon. Se la fora flanko ne vojigas reen al la aparata subreto, la dezajno bezonas intencan tradukregulon, kaj tiu regulo ŝanĝas la fontan identecon, kiun la servo vidas.

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

Unue observu la revenan vojon. Plusendita pako, kiu atingas la servon kaj neniam revenas, produktas tempolimon ĉe la modulo sen ia ajn eraro ĉe la pordego, kio sendas homojn rigardi la Wi-Fi-ligilon dum horoj. La conntrack-enskribo diras al vi, ĉu la pordego entute vidis la respondon.

Decidu, kie la tunelo efektive finiĝas

La tunelo komenciĝas ĉe la pordego. Ĝi ne ĉifras la UART-ligilon, kaj ĝi ne igas la lokan segmenton inter modulo kaj pordego parto de la tunelo. Ĉio, kio bezonas protekton en tiu segmento, bezonas sian propran mekanismon, kaj ordinara TCP en ĉi tiu ekzemplo ne estas TLS.

Decidu ankaŭ, kio okazas, kiam la tunelo falas. Se livero devas esti nur per VPN, la plusenda politiko ne rajtas permesi la saman celon per alternativa vojo, ĉar rezerva vojo silente neniigas la postulon. Limigu la rekonektan konduton, por ke malkonektita modulo ne superŝutu la serian ligilon aŭ la foran servon per ripetoj.

Notu la kvar respondojn kune: la adreson de la modulo, la celon de la ingo, la pordegan vojon kaj kie komenciĝas la ĉifrado. La sekva persono, kiu senerarigos ĉi tiun aparaton, bezonos ĉiujn kvar, kaj neniu el ili estas deduktebla nur el la firmvaro.

Rilataj artikoloj