Un microcontrolador amb un mòdul Wi-Fi UART no ha d’implementar una VPN per arribar a un servei que hi ha darrere. El mòdul ja executa una pila TCP/IP i exposa sòcols pel port sèrie, i una passarel·la a la mateixa LAN pot portar aquest trànsit pel túnel. El disseny només funciona si podeu respondre quatre preguntes en ordre, així que tracteu-lo com una llista de verificació: adreça, sòcol, ruta, frontera. Atureu-vos a la primera porta que falli, perquè les següents no la poden compensar.

Assigneu una feina per capa

L’enllaç UART transporta ordres AT i càrrega útil entre el microcontrolador i el mòdul. El mòdul s’uneix a la xarxa Wi-Fi i posseeix la connexió IP, inclosa la seva adreça d’origen. La passarel·la posseeix el túnel, les credencials i la política de reenviament. Mantenir aquestes feines separades és el que fa el disseny depurable a cada etapa.

La separació també canvia com escriviu la política de la passarel·la. Una regla d’origen ha d’anomenar l’adreça LAN del mòdul, no una adreça imaginària per al microcontrolador que hi ha darrere de l’enllaç sèrie. El microcontrolador no té cap identitat IP pròpia en aquest disseny, i fingir que en té produeix una regla que mai coincideix.

Doneu al mòdul una adreça estable amb qualsevol mecanisme de reserva que admeti la xarxa, o poseu els dispositius al seu propi segment i deixeu que la passarel·la coincideixi per interfície. Una adreça del pool que canvia després d’un reinici acabarà trencant una política que era correcta quan la vau escriure.

Pot la passarel·la anomenar l’adreça del mòdul?

Abans que s’obri cap sòcol, confirmeu que el mòdul està associat, que té adreça i que la passarel·la el veu a la interfície esperada. Aquesta és la porta que falla en silenci més sovint, perquè el mòdul informarà ben content d’un intent de connexió que mai no ha sortit de la LAN.

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

El mode d’una sola connexió manté simple la seqüència d’ordres, i és el punt de partida correcte per a un sensor que parla amb un sol servei. El mode de diverses connexions canvia la sintaxi de cada ordre posterior, així que decidiu en quin sou abans de copiar un exemple d’una altra versió de firmware.

Obriu el sòcol des del mòdul

Amb una adreça i un mode fixats, el mòdul pot obrir una connexió TCP al servei privat. L’adreça de sota és un exemple d’un rang de documentació; substituïu-la per la vostra i manteniu la mateixa forma.

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

Aquesta ordre AT obre un sòcol TCP simple, i un sòcol no és un túnel: res no hi crea una VPN i res no hi xifra la càrrega útil. El mode TLS del firmware és una funció separada amb la seva pròpia ordre i la seva pròpia gestió de certificats, i un mòdul UART arbitrari potser no admet ni una cosa ni l’altra. Consulteu la referència d’ordres AT de TCP/IP del vostre firmware en lloc de suposar que la sintaxi de dalt s’hi aplica.

La longitud de la càrrega útil a AT+CIPSEND ha de coincidir amb el que envieu realment, o el mòdul esperarà bytes que no arriben mai i la connexió semblarà penjada. Aquesta fallada sembla un problema de xarxa i gairebé sempre és un error d’una unitat en la longitud.

Encamineu la connexió per la passarel·la

La passarel·la necessita una ruta cap a la destinació privada, permís per reenviar de la xarxa de dispositius al túnel i un camí de tornada que arribi al mòdul. Si el costat remot no encamina de tornada a la subxarxa de dispositius, el disseny necessita una regla de traducció deliberada, i aquesta regla canvia la identitat d’origen que veu el servei.

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

Vigileu primer el camí de tornada. Un paquet reenviat que arriba al servei i no torna mai produeix un temps d’espera al mòdul sense cap error a la passarel·la, cosa que fa que la gent miri l’enllaç Wi-Fi durant hores. L’entrada de conntrack us diu si la passarel·la va veure la resposta.

Decidiu on acaba realment el túnel

El túnel comença a la passarel·la. No xifra l’enllaç UART, i no converteix el segment LAN entre mòdul i passarel·la en part del túnel. Tot el que necessiti protecció en aquest segment necessita el seu propi mecanisme, i el TCP simple d’aquest exemple no és TLS.

Decidiu també què passa quan cau el túnel. Si el lliurament ha de ser només per VPN, la política de reenviament no ha de permetre la mateixa destinació per una via alternativa, perquè una ruta de reserva anul·la el requisit en silenci. Limiteu el comportament de reconnexió perquè un mòdul desconnectat no inundi l’enllaç sèrie ni el servei remot amb reintents.

Anoteu les quatre respostes juntes: l’adreça del mòdul, l’objectiu del sòcol, la ruta de la passarel·la i on comença el xifratge. La propera persona que depuri aquest dispositiu necessitarà totes quatre, i cap no es pot inferir només del firmware.

Articles relacionats