Pongan la VPN detrás de un módulo Wi-Fi UART, no dentro
Un módulo Wi-Fi UART necesita un socket TCP, y la puerta de enlace es quien posee el túnel. Nombren su dirección, mantengan abierta la ruta de vuelta y sepan dónde empieza el cifrado.
Un microcontrolador con un módulo Wi-Fi UART no necesita implementar una VPN para llegar a un servicio situado detrás. El módulo ya ejecuta una pila TCP/IP y expone sockets por el puerto serie, y una puerta de enlace en la misma LAN puede transportar ese tráfico por el túnel. El diseño solo funciona si usted puede responder cuatro preguntas en orden, así que trátelo como una lista de comprobación: dirección, socket, ruta, límite. Deténgase en la primera puerta que falle, porque las siguientes no pueden compensarla.
Asigne un trabajo por capa
El enlace UART transporta comandos AT y carga útil entre el microcontrolador y el módulo. El módulo se une a la red Wi-Fi y posee la conexión IP, incluida su dirección de origen. La puerta de enlace posee el túnel, las credenciales y la política de reenvío. Mantener esos trabajos separados es lo que hace que el diseño se pueda depurar en cada etapa.
La separación también cambia cómo se escribe la política de la puerta de enlace. Una regla de origen debe nombrar la dirección LAN del módulo, no una dirección imaginaria para el microcontrolador situado tras el enlace serie. El microcontrolador no tiene identidad IP propia en este diseño, y fingir que la tiene produce una regla que nunca coincide.
Dé al módulo una dirección estable mediante el mecanismo de reserva que admita la red, o ponga los dispositivos en su propio segmento y deje que la puerta de enlace coincida por interfaz. Una dirección de grupo que cambia tras un reinicio acabará rompiendo una política que era correcta cuando se escribió.
¿Puede la puerta de enlace nombrar la dirección del módulo?
Antes de que se abra cualquier socket, confirme que el módulo está asociado, tiene dirección y que la puerta de enlace lo ve en la interfaz esperada. Esta es la puerta que más falla en silencio, porque el módulo informará encantado de un intento de conexión que nunca salió de la LAN.
AT+CWMODE=1 AT+CWJAP="lab-wifi","passphrase" AT+CIPSTA? AT+CIPMUX=0
El modo de conexión única mantiene simple la secuencia de comandos, y es el punto de partida correcto para un sensor que habla con un solo servicio. El modo de conexiones múltiples cambia la sintaxis de cada comando posterior, así que decida en cuál está antes de copiar un ejemplo de otra versión de firmware.
Abra el socket desde el módulo
Con la dirección y el modo resueltos, el módulo puede abrir una conexión TCP al servicio privado. La dirección de abajo es un ejemplo de un rango de documentación; sustitúyala por la suya y conserve la misma forma.
AT+CIPSTART="TCP","10.90.0.20",9000
AT+CIPSEND=18
{"t":21.4,"rh":48}
Ese comando AT abre un socket TCP simple, y un socket no es un túnel: nada en él crea una VPN y nada en él cifra la carga útil. El modo TLS del firmware es una función aparte con su propio comando y su propio manejo de certificados, y un módulo UART cualquiera puede no admitir ninguno de los dos. Consulte la referencia de comandos AT de TCP/IP de su firmware en lugar de suponer que la sintaxis anterior se aplica a él.
La longitud de la carga útil en AT+CIPSEND debe coincidir con lo que se envía realmente, o el módulo esperará bytes que nunca llegan y la conexión parecerá colgarse. Ese fallo parece un problema de red y casi siempre es un error de uno en la longitud.
Encamine la conexión a través de la puerta de enlace
La puerta de enlace necesita una ruta al destino privado, permiso para reenviar de la red de dispositivos al túnel y una ruta de vuelta que llegue al módulo. Si el lado remoto no encamina de vuelta a la subred de dispositivos, el diseño necesita una regla de traducción deliberada, y esa regla cambia la identidad de origen que ve el servicio.
ip route get 10.90.0.20 sudo tcpdump -ni wg0 'host 10.90.0.20 and port 9000' sudo conntrack -L | grep 9000
Vigile primero la ruta de vuelta. Un paquete reenviado que llega al servicio y nunca vuelve produce un tiempo de espera en el módulo sin ningún error en la puerta de enlace, lo que manda a la gente a mirar el enlace Wi-Fi durante horas. La entrada de conntrack le dice si la puerta de enlace vio la respuesta siquiera.
Decida dónde termina realmente el túnel
El túnel empieza en la puerta de enlace. No cifra el enlace UART, y no convierte el segmento LAN entre módulo y puerta de enlace en parte del túnel. Todo lo que necesite protección en ese segmento necesita su propio mecanismo, y el TCP simple de este ejemplo no es TLS.
Decida también qué ocurre cuando el túnel cae. Si la entrega debe ser solo por VPN, la política de reenvío no debe permitir el mismo destino por una vía alternativa, porque una ruta de reserva anula el requisito en silencio. Limite el comportamiento de reconexión para que un módulo desconectado no inunde el enlace serie ni el servicio remoto con reintentos.
Anote las cuatro respuestas juntas: la dirección del módulo, el destino del socket, la ruta de la puerta de enlace y dónde empieza el cifrado. La siguiente persona que depure este dispositivo necesitará las cuatro, y ninguna puede deducirse solo del firmware.