Umístěte VPN za UART Wi-Fi modul, ne dovnitř něj
UART Wi-Fi modul potřebuje TCP socket, tunel vlastní brána. Pojmenujte její adresu, držte návratovou cestu otevřenou a vězte, kde začíná šifrování.
Mikrokontroler s UART Wi-Fi modulem nemusí implementovat VPN, aby dosáhl služby za ním. Modul už běží na zásobníku TCP/IP a vystavuje sockety přes sériový port a brána ve stejné místní síti může tento provoz přenést tunelem. Návrh funguje jen tehdy, když dokážete v pořadí odpovědět na čtyři otázky, takže k němu přistupujte jako ke kontrolnímu seznamu: adresa, socket, trasa, hranice. Zastavte se u první brány, která selže, protože ty další to nemohou nahradit.
Přiřaďte každé vrstvě jednu úlohu
Spojení UART přenáší příkazy AT a užitečné zatížení mezi mikrokontrolerem a modulem. Modul se připojuje k síti Wi-Fi a vlastní IP spojení včetně své zdrojové adresy. Brána vlastní tunel, přihlašovací údaje a politiku předávání. Právě oddělení těchto úloh dělá návrh laditelným v každé fázi.
Oddělení také mění to, jak píšete politiku brány. Zdrojové pravidlo má pojmenovat adresu modulu v místní síti, ne vymyšlenou adresu mikrokontroleru za sériovým spojením. Mikrokontroler v tomto návrhu nemá vlastní IP identitu a předstírání, že ji má, vytváří pravidlo, které nikdy neodpovídá.
Dejte modulu stabilní adresu přes jakýkoli rezervační mechanismus, který síť podporuje, nebo umístěte zařízení do vlastního segmentu a nechte bránu párovat podle rozhraní. Adresa z fondu, která se po restartu změní, nakonec rozbije politiku, jež byla správná, když jste ji psali.
Může brána pojmenovat adresu modulu?
Než se otevře jakýkoli socket, potvrďte, že modul je přidružený, má adresu a že ho brána vidí na očekávaném rozhraní. Tohle je brána, která nejčastěji selhává tiše, protože modul ochotně nahlásí pokus o připojení, který místní síť nikdy neopustil.
AT+CWMODE=1 AT+CWJAP="lab-wifi","passphrase" AT+CIPSTA? AT+CIPMUX=0
Režim jednoho spojení udržuje posloupnost příkazů jednoduchou a je správným výchozím bodem pro jeden senzor, který mluví s jednou službou. Režim více spojení mění syntaxi každého dalšího příkazu, takže se rozhodněte, ve kterém jste, než zkopírujete příklad z jiné verze firmwaru.
Otevřete socket z modulu
Když je adresa i režim stanoven, modul může otevřít TCP spojení k soukromé službě. Adresa níže je příklad z dokumentačního rozsahu; nahraďte ji svou a zachovejte stejný tvar.
AT+CIPSTART="TCP","10.90.0.20",9000
AT+CIPSEND=18
{"t":21.4,"rh":48}
Tento příkaz AT otevírá obyčejný TCP socket a socket není tunel: nic v něm nevytváří VPN a nic v něm nešifruje užitečné zatížení. Režim TLS firmwaru je samostatná funkce s vlastním příkazem a vlastní správou certifikátů a libovolný UART modul nemusí podporovat ani jedno. Podívejte se do reference příkazů AT pro TCP/IP svého firmwaru, místo abyste předpokládali, že se na něj výše uvedená syntaxe vztahuje.
Délka užitečného zatížení v AT+CIPSEND musí odpovídat tomu, co skutečně odesíláte, jinak bude modul čekat na bajty, které nikdy nedorazí, a spojení bude vypadat zaseknuté. Taková závada vypadá jako síťový problém a téměř vždy jde o chybu o jedničku v délce.
Veďte spojení přes bránu
Brána potřebuje trasu k soukromému cíli, povolení předávat ze sítě zařízení do tunelu a návratovou cestu, která dorazí k modulu. Pokud vzdálená strana nesměruje zpět do podsítě zařízení, návrh potřebuje záměrné pravidlo překladu a toto pravidlo mění zdrojovou identitu, kterou služba vidí.
ip route get 10.90.0.20 sudo tcpdump -ni wg0 'host 10.90.0.20 and port 9000' sudo conntrack -L | grep 9000
Sledujte nejprve návratovou cestu. Předaný paket, který dorazí ke službě a nikdy se nevrátí, způsobí v modulu časový limit bez jakékoli chyby na bráně, což lidi pošle na hodiny zkoumat Wi-Fi spojení. Záznam v conntracku vám řekne, zda brána odpověď vůbec viděla.
Rozhodněte, kde tunel skutečně končí
Tunel začíná na bráně. Nešifruje spojení UART a nedělá ze segmentu místní sítě mezi modulem a bránou součást tunelu. Vše, co na tomto segmentu potřebuje ochranu, potřebuje vlastní mechanismus, a obyčejné TCP v tomto příkladu není TLS.
Rozhodněte také, co se stane, když tunel spadne. Pokud doručení musí jít jen přes VPN, politika předávání nesmí povolit stejný cíl alternativní cestou, protože záložní trasa požadavek tiše ruší. Omezte chování při opětovném připojení, aby odpojený modul nezahltil sériové spojení ani vzdálenou službu opakovanými pokusy.
Zapište čtyři odpovědi společně: adresu modulu, cíl socketu, trasu brány a místo, kde začíná šifrování. Další člověk, který bude toto zařízení ladit, bude potřebovat všechny čtyři a žádnou z nich nelze odvodit jen z firmwaru.