WireGuard VPN – Pripojenie vzdialených IoT zariadení k domácej sieti


Mám smart home zariadenia v garáži, ktorá nie je na rovnakom mieste ako moja hlavná domáca sieť. Garáž má 4G router (Teltonika) a potreboval som pripojiť jej zariadenia k Home Assistant bežiacemu na Raspberry Pi doma. Riešením bol WireGuard VPN.

Architektúra

Garáž (Teltonika 4G router)
  └── WireGuard klient (10.0.0.3)
        ↕ šifrovaný tunel
VPS (verejná IP)
  └── WireGuard server (10.0.0.1)

Domáce RPi (10.0.0.2)
  └── WireGuard klient

Používam lacný VPS ako WireGuard hub, pretože domáce RPi je za bežným domácim routerom (bez statickej IP) a garáž je za 4G CGNAT. VPS s verejnou IP rieši oba problémy.

Prečo VPS ako hub?

Oba koncové body (doma a garáž) sú za NAT, ktorú nemôžeme ovládať. VPS s verejnou IP slúži ako miesto stretnutia. Oba klienti sa pripoja k VPS a traffic sa smeruje medzi nimi.

Nastavenie WireGuard cez Docker

Na domácom RPi spustite WireGuard v Dockeri:

wireguard:
  image: lscr.io/linuxserver/wireguard:latest
  environment:
    - SERVERURL=ip-vasho-vps
    - SERVERPORT=51820
    - PEERS=doma,garaz
    - INTERNAL_SUBNET=10.0.0.0
  ports:
    - "51820:51820/udp"
  sysctls:
    - net.ipv4.conf.all.src_valid_mark=1

Kontajner automaticky generuje QR kódy a konfiguračné súbory pre každého klienta.

OTA aktualizácie cez WireGuard

Praktická výhoda: ESP32 senzory v garáži môžem aktualizovať bezdrôtovo cez VPN tunel. ESPHome OTA aktualizácie fungujú cez WireGuard tunel akoby zariadenie bolo na lokálnej sieti.

docker exec esphome esphome upload /config/garaz-senzory.yaml \
  --device 192.168.10.113

Výsledok

Všetky zariadenia v garáži (ESP32 senzory, IP kamera) sú prístupné z Home Assistant akoby boli na lokálnej sieti. ESPHome zariadenia sú online, kamerové streamy sú dostupné a OTA aktualizácie fungujú bezproblémovo.