UART Wi-Fi модулу бар микроконтроллер анын артындагы кызматка жетүү үчүн VPN киргизүүсүнүн кереги жок. Модуль буга чейин эле TCP/IP стектерин иштетип, сериялык порт аркылуу сокеттерди сунуштайт, ал эми ошол эле жергиликтүү тармактагы шлюз бул трафикти туннелден өткөрө алат. Долбоор төрт суроого ирети менен жооп бере алганда гана иштейт, ошондуктан аны текшерүү тизмеси катары кабыл алыңыз: дарек, сокет, маршрут, чек. Биринчи ийгиликсиз дарбазада токтоңуз, анткени кийинкилери аны ордун толтура албайт.

Ар бир катмарга бир милдет бериңиз

UART байланышы микроконтроллер менен модулдун ортосунда AT буйруктарын жана пайдалуу жүктү ташымалдайт. Модуль Wi-Fi тармагына кошулат жана өзүнүн булак дареги менен кошо IP байланышына ээ. Шлюз туннелге, каттоо маалыматтарына жана жөнөтүү саясатына ээ. Ушул милдеттерди өзүнчө кармоо долбоорду ар бир баскычта оңдоого мүмкүндүк берет.

Бөлүү шлюз саясатын кантип жазарыңызды да өзгөртөт. Булак эрежеси модулдун жергиликтүү тармак дарегин аташы керек, сериялык байланыштын артындагы микроконтроллер үчүн ойлоп табылган даректи эмес. Бул долбоордо микроконтроллердин өзүнүн IP инсандыгы жок, ал эми бар деп көрсөтүү эч качан дал келбеген эреже жаратат.

Модулга тармак колдогон каалаган резервдөө механизми аркылуу туруктуу дарек бериңиз, же түзмөктөрдү өзүнүн сегментине жайгаштырып, шлюзге интерфейс боюнча дал келтирүүгө жол бериңиз. Кайра жүктөөдөн кийин өзгөргөн пул дареги бир кезде туура болгон саясатты бузат.

Шлюз модулдун дарегин атай алабы?

Каалаган сокет ачылганга чейин модулдун туташканын, дареги бар экенин жана шлюз аны күтүлгөн интерфейстен көрүп турганын ырастаңыз. Бул эң көп үнсүз ийгиликсиздикке учураган дарбаза, анткени модул жергиликтүү тармактан эч качан чыкпаган туташуу аракети жөнүндө кубаныч менен билдирет.

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

Бир туташуу режими буйруктар ырааттуулугун жөнөкөй кармайт жана бир кызмат менен сүйлөшкөн бир сенсор үчүн туура баштапкы чекит. Көп туташуу режими кийинки ар бир буйруктун синтаксисин өзгөртөт, ошондуктан башка firmware версиясынан мисал көчүрүүдөн мурун кайсы режимде экениңизди аныктаңыз.

Сокетти модулдан ачыңыз

Дарек жана режим аныкталгандан кийин модул жеке кызматка TCP байланышын ача алат. Төмөнкү дарек документтик диапазондон алынган мисал; аны өзүңүздүкү менен алмаштырып, формасын сактаңыз.

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

Ал AT буйругу жөнөкөй TCP сокетин ачат, ал эми сокет туннел эмес: анда эч нерсе VPN жаратпайт жана эч нерсе пайдалуу жүктү шифрлабайт. Firmware'дин TLS режими өз буйругу жана өз сертификат иштетүүсү бар өзүнчө өзгөчөлүк, ал эми каалаган UART модулу экөөнү тең колдобошу мүмкүн. Жогорку синтаксис ага тиешелүү деп болжолдоонун ордуна firmware'иңиз үчүн TCP/IP AT буйруктар маалыматнаамасын караңыз.

AT+CIPSEND ичиндеги жүктүн узундугу чындыгында жөнөткөнүңүзгө туура келиши керек, антпесе модул эч качан келбеген байттарды күтүп, байланыш илинип тургандай көрүнөт. Бул ийгиликсиздик тармак көйгөйүнө окшош жана дээрлик дайыма узундуктагы бирдик катасы.

Байланышты шлюз аркылуу өткөрүңүз

Шлюзге жеке багытка маршрут, түзмөктөр тармагынан туннелге өткөрүүгө уруксат жана модулга жеткен кайтуу жолу керек. Эгер алыскы тарап түзмөктөрдүн ички тармагына кайра маршруттабаса, долбоорго атайын жасалган которуу эрежеси керек, ал эми бул эреже кызмат көргөн булак инсандыгын өзгөртөт.

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

Алгач кайтуу жолун байкаңыз. Кызматка жетип, эч качан кайтпаган жөнөтүлгөн пакет шлюзде эч кандай катасыз модулда убакыт чегин жаратат, бул адамдарды саат бою Wi-Fi байланышына каратууга мажбурлайт. conntrack жазуусу шлюз жоопту такыр көрдүбү же жокпу айтат.

Туннел чындыгында кайда бүтөрүн чечиңиз

Туннел шлюзден башталат. Ал UART байланышын шифрлабайт жана модул менен шлюздун ортосундагы жергиликтүү тармак сегментин туннелдин бөлүгүнө айландырбайт. Ошол сегментте коргоо керек болгон нерсенин өз механизми болушу керек, ал эми бул мисалдагы жөнөкөй TCP — TLS эмес.

Туннел кулаганда эмне болорун да чечиңиз. Эгер жеткирүү VPN аркылуу гана болушу керек болсо, жөнөтүү саясаты ошол эле багытка альтернативалуу жол менен уруксат бербеши керек, анткени камдык маршрут талапты үнсүз жокко чыгарат. Кайра туташуу жүрүм-турумун чектеңиз, ошондо ажыраган модул сериялык байланышты же алыскы кызматты кайталанма аракеттер менен толтурбайт.

Төрт жоопту чогуу жазыңыз: модулдун дареги, сокеттин багыты, шлюздун маршруту жана шифрлоо кайдан башталат. Бул түзмөктү кийин оңдой турган адамга төртөө тең керек болот, ал эми алардын эч бирин firmware'ден гана чыгаруу мүмкүн эмес.

Тектеш макалалар