VPN-ni UART Wi-Fi moduli orqasiga qo'ying, uning ichiga emas
UART Wi-Fi moduliga TCP soket kerak, tunnel esa shlyuzga tegishli. Uning manzilini nomlang, qaytish yo'lini ochiq tuting va shifrlash qayerdan boshlanishini biling.
UART Wi-Fi moduli bo'lgan mikrokontroller uning orqasidagi xizmatga yetish uchun VPN joriy qilishi shart emas. Modul allaqachon TCP/IP stekini ishlatadi va ketma-ket port orqali soketlarni taqdim etadi, xuddi shu lokal tarmoqdagi shlyuz esa bu trafikni tunneldan o'tkaza oladi. Loyiha faqat to'rtta savolga ketma-ket javob bera olganingizda ishlaydi, shuning uchun uni tekshiruv ro'yxati deb biling: manzil, soket, marshrut, chegara. Muvaffaqiyatsiz bo'lgan birinchi darvozada to'xtang, chunki keyingilari uni qoplay olmaydi.
Har bir qatlamga bitta vazifa bering
UART aloqasi mikrokontroller va modul o'rtasida AT buyruqlari va foydali yukni tashiydi. Modul Wi-Fi tarmog'iga qo'shiladi va o'z manba manzili bilan birga IP ulanishiga ega bo'ladi. Shlyuz tunnelga, hisob ma'lumotlariga va uzatish siyosatiga ega. Aynan bu vazifalarni alohida saqlash loyihani har bir bosqichda tuzatishga yaroqli qiladi.
Ajratish shlyuz siyosatini qanday yozishingizni ham o'zgartiradi. Manba qoidasi modulning lokal tarmoq manzilini nomlashi kerak, ketma-ket aloqa orqasidagi mikrokontroller uchun o'ylab topilgan manzilni emas. Bu loyihada mikrokontrollerning o'z IP identifikatsiyasi yo'q, bor deb ko'rsatish esa hech qachon mos kelmaydigan qoida yaratadi.
Modulga tarmoq qo'llab-quvvatlaydigan har qanday rezervlash mexanizmi orqali barqaror manzil bering yoki qurilmalarni o'z segmentiga joylashtiring va shlyuz interfeys bo'yicha moslashtirsin. Qayta yuklashdan keyin o'zgaradigan havza manzili yozganingizda to'g'ri bo'lgan siyosatni oxir-oqibat buzadi.
Shlyuz modulning manzilini nomlay oladimi?
Har qanday soket ochilishidan oldin modul ulanganini, manzili borligini va shlyuz uni kutilgan interfeysda ko'rayotganini tasdiqlang. Bu eng ko'p jim ravishda muvaffaqiyatsiz bo'ladigan darvoza, chunki modul lokal tarmoqdan hech qachon chiqmagan ulanish urinishini mamnuniyat bilan xabar qiladi.
AT+CWMODE=1 AT+CWJAP="lab-wifi","passphrase" AT+CIPSTA? AT+CIPMUX=0
Bitta ulanish rejimi buyruqlar ketma-ketligini sodda saqlaydi va bitta xizmat bilan gaplashadigan bitta sensor uchun to'g'ri boshlanish nuqtasidir. Ko'p ulanish rejimi har bir keyingi buyruqning sintaksisini o'zgartiradi, shuning uchun boshqa proshivka versiyasidan namuna ko'chirishdan oldin qaysi rejimda ekanligingizni aniqlang.
Soketni moduldan oching
Manzil va rejim belgilangach, modul xususiy xizmatga TCP ulanishini ocha oladi. Quyidagi manzil hujjat diapazonidan olingan namuna; uni o'zingiznikiga almashtiring va shaklini saqlang.
AT+CIPSTART="TCP","10.90.0.20",9000
AT+CIPSEND=18
{"t":21.4,"rh":48}
O'sha AT buyrug'i oddiy TCP soketini ochadi, soket esa tunnel emas: unda hech narsa VPN yaratmaydi va hech narsa foydali yukni shifrlamaydi. Proshivkaning TLS rejimi o'z buyrug'i va o'z sertifikat ishlashiga ega alohida xususiyat bo'lib, ixtiyoriy UART moduli ikkalasini ham qo'llab-quvvatlamasligi mumkin. Yuqoridagi sintaksis unga tegishli deb hisoblash o'rniga proshivkangiz uchun TCP/IP AT buyruqlari ma'lumotnomasini ko'ring.
AT+CIPSEND dagi foydali yuk uzunligi siz haqiqatda yuboradigan narsaga mos kelishi kerak, aks holda modul hech qachon kelmaydigan baytlarni kutadi va ulanish osilib qolgandek ko'rinadi. Bu muvaffaqiyatsizlik tarmoq muammosiga o'xshaydi va deyarli har doim uzunlikdagi bitta birlik xatosi.
Ulanishni shlyuz orqali o'tkazing
Shlyuzga xususiy manzilga marshrut, qurilmalar tarmog'idan tunnelga uzatishga ruxsat va modulga yetadigan qaytish yo'li kerak. Agar uzoq tomon qurilmalar quyi tarmog'iga qaytib marshrutlamasa, loyihaga ataylab qilingan tarjima qoidasi kerak bo'ladi va bu qoida xizmat ko'radigan manba identifikatsiyasini o'zgartiradi.
ip route get 10.90.0.20 sudo tcpdump -ni wg0 'host 10.90.0.20 and port 9000' sudo conntrack -L | grep 9000
Avval qaytish yo'lini kuzating. Xizmatga yetib, hech qachon qaytmaydigan uzatilgan paket shlyuzda hech qanday xatosiz modulda vaqt tugashini keltiradi va bu odamlarni soatlab Wi-Fi aloqasiga qarashga majbur qiladi. conntrack yozuvi shlyuz javobni umuman ko'rganini aytadi.
Tunnel aslida qayerda tugashini hal qiling
Tunnel shlyuzda boshlanadi. U UART aloqasini shifrlamaydi va modul bilan shlyuz orasidagi lokal tarmoq segmentini tunnelning qismiga aylantirmaydi. O'sha segmentda himoya kerak bo'lgan har narsa o'z mexanizmiga muhtoj, va bu misoldagi oddiy TCP TLS emas.
Tunnel qulaganida nima bo'lishini ham hal qiling. Agar yetkazib berish faqat VPN orqali bo'lishi kerak bo'lsa, uzatish siyosati xuddi shu manzilga muqobil yo'l bilan ruxsat bermasligi kerak, chunki zaxira marshrut talabni jimgina bekor qiladi. Qayta ulanish xatti-harakatini cheklang, toki uzilgan modul ketma-ket aloqani yoki uzoq xizmatni qayta urinishlar bilan to'ldirmasin.
To'rtta javobni birga yozib qo'ying: modul manzili, soket maqsadi, shlyuz marshruti va shifrlash qayerdan boshlanishi. Bu qurilmani keyin tuzatadigan odamga to'rttasi ham kerak bo'ladi va hech birini faqat proshivkadan chiqarib bo'lmaydi.