VPN'yi UART Wi-Fi modülünün arkasına koyun, içine değil
UART Wi-Fi modülü bir TCP soketine ihtiyaç duyar ve tünelin sahibi ağ geçididir. Adresini adlandırın, dönüş yolunu açık tutun ve şifrelemenin nerede başladığını bilin.
UART Wi-Fi modülü olan bir mikrodenetleyici, arkasındaki bir hizmete ulaşmak için VPN uygulamak zorunda değildir. Modül zaten bir TCP/IP yığını çalıştırır ve seri port üzerinden soketler sunar; aynı LAN'daki bir ağ geçidi bu trafiği tünelden geçirebilir. Tasarım yalnızca dört soruya sırayla yanıt verebiliyorsanız çalışır, bu yüzden bunu bir kontrol listesi olarak görün: adres, soket, yol, sınır. Başarısız olan ilk kapıda durun, çünkü sonrakiler onu telafi edemez.
Her katmana bir görev verin
UART bağlantısı, mikrodenetleyici ile modül arasında AT komutlarını ve yükü taşır. Modül Wi-Fi ağına katılır ve kaynak adresi dahil IP bağlantısına sahiptir. Ağ geçidi tünele, kimlik bilgilerine ve yönlendirme politikasına sahiptir. Bu görevleri ayrı tutmak, tasarımı her aşamada hata ayıklanabilir kılan şeydir.
Ayrılık, ağ geçidi politikasını yazma biçiminizi de değiştirir. Kaynak kuralı, seri bağlantının arkasındaki mikrodenetleyici için hayali bir adresi değil, modülün LAN adresini adlandırmalıdır. Mikrodenetleyicinin bu tasarımda kendi IP kimliği yoktur ve varmış gibi davranmak hiçbir zaman eşleşmeyen bir kural üretir.
Modüle, ağın desteklediği herhangi bir rezervasyon mekanizmasıyla sabit bir adres verin ya da cihazları kendi segmentlerine koyun ve ağ geçidinin arayüze göre eşleşmesine izin verin. Yeniden başlatmadan sonra değişen havuz adresi, yazdığınızda doğru olan bir politikayı eninde sonunda bozar.
Ağ geçidi modülün adresini adlandırabilir mi?
Herhangi bir soket açılmadan önce modülün bağlı olduğunu, bir adresi bulunduğunu ve ağ geçidinin onu beklenen arayüzde gördüğünü doğrulayın. En sık sessizce başarısız olan kapı budur, çünkü modül LAN'dan hiç çıkmamış bir bağlantı denemesini memnuniyetle bildirir.
AT+CWMODE=1 AT+CWJAP="lab-wifi","passphrase" AT+CIPSTA? AT+CIPMUX=0
Tek bağlantı modu komut dizisini basit tutar ve tek bir hizmetle konuşan tek bir sensör için doğru başlangıç noktasıdır. Çoklu bağlantı modu sonraki her komutun sözdizimini değiştirir, bu yüzden başka bir ürün yazılımı sürümünden örnek kopyalamadan önce hangisinde olduğunuza karar verin.
Soketi modülden açın
Adres ve mod belirlendikten sonra modül özel hizmete bir TCP bağlantısı açabilir. Aşağıdaki adres bir dokümantasyon aralığından alınmış örnektir; yerine kendinizinkini koyun ve aynı biçimi koruyun.
AT+CIPSTART="TCP","10.90.0.20",9000
AT+CIPSEND=18
{"t":21.4,"rh":48}
O AT komutu sıradan bir TCP soketi açar ve soket bir tünel değildir: içinde hiçbir şey VPN oluşturmaz ve hiçbir şey yükü şifrelemez. Ürün yazılımının TLS modu kendi komutu ve kendi sertifika işleyişi olan ayrı bir özelliktir ve rastgele bir UART modülü ikisini de desteklemeyebilir. Yukarıdaki sözdiziminin onun için geçerli olduğunu varsaymak yerine ürün yazılımınızın TCP/IP AT komut başvurusuna bakın.
AT+CIPSEND içindeki yük uzunluğu gerçekte gönderdiğinizle eşleşmelidir, yoksa modül hiç gelmeyen baytları bekler ve bağlantı asılı kalmış gibi görünür. Bu arıza bir ağ sorunu gibi görünür ve neredeyse her zaman uzunlukta bir birimlik hatadır.
Bağlantıyı ağ geçidinden geçirin
Ağ geçidinin özel hedefe bir yolu, cihaz ağından tünele yönlendirme izni ve modüle ulaşan bir dönüş yolu olmalıdır. Uzak taraf cihaz alt ağına geri yönlendirme yapmıyorsa tasarımın kasıtlı bir çeviri kuralına ihtiyacı vardır ve bu kural, hizmetin gördüğü kaynak kimliğini değiştirir.
ip route get 10.90.0.20 sudo tcpdump -ni wg0 'host 10.90.0.20 and port 9000' sudo conntrack -L | grep 9000
Önce dönüş yolunu izleyin. Hizmete ulaşıp hiç geri dönmeyen yönlendirilmiş bir paket, ağ geçidinde hiçbir hata olmadan modülde zaman aşımı yaratır ve insanları saatlerce Wi-Fi bağlantısına bakmaya iter. conntrack kaydı, ağ geçidinin yanıtı görüp görmediğini söyler.
Tünelin gerçekte nerede bittiğine karar verin
Tünel ağ geçidinde başlar. UART bağlantısını şifrelemez ve modül ile ağ geçidi arasındaki LAN segmentini tünelin parçası yapmaz. O segmentte koruma gereken her şey kendi mekanizmasına ihtiyaç duyar ve bu örnekteki sıradan TCP, TLS değildir.
Tünel düştüğünde ne olacağına da karar verin. Teslimat yalnızca VPN üzerinden olacaksa, yönlendirme politikası aynı hedefe alternatif bir yoldan izin vermemelidir, çünkü yedek bir rota gerekliliği sessizce geçersiz kılar. Yeniden bağlanma davranışını sınırlayın ki bağlantısı kesilen modül seri bağlantıyı ya da uzak hizmeti yeniden denemelerle doldurmasın.
Dört yanıtı birlikte yazın: modülün adresi, soketin hedefi, ağ geçidinin rotası ve şifrelemenin başladığı yer. Bu cihazda sonra hata ayıklayacak kişi dördüne de ihtiyaç duyacak ve hiçbiri yalnızca ürün yazılımından çıkarılamaz.