Objavljeno:

Dostop do HomeAssistant preko VPN

Problem: v lokalnem omrežju je postavljen HomeAssistant, ki je dostopen preko spletnega vmesnika, na njem pa teče tudi medijski strežnik (ki ga v HomeAssistantu najdemo pod Media sources), za katerega bi želeli, da omogoča souporabo datotek preko omrežja. HomeAssistant je iz varnostnh razlogov dostopen samo preko lokalnega omrežja. Ker ni dostopen preko interneta, na njem tudi ne moremo poganjati VPN strežnika. Kljub temu pa bi želeli, da je dostop do spletnega vmesnika in souporabe datotek dostopen napravam “v divjini”. Torej mobilnim telefonom in računalnikom v drugih omrežjih. Rešitev? Uporaba VPN in posredniškega strežnika na ločeni napravi. Kako? Berite dalje.

Kot rečeno, je rešitev uporaba posebne naprave, mini računalnika, ki je povezan v VPN omrežje (Wireguard, OpenVPN ali kaj tretjega), ki služi kot vmesnik med napravami v VPN omrežju in napravami v našem lokalnem omrežju. Za to napravo smo izbrali napravico OrangePi PC Plus, na kateri teče Armbian Linux operacijski sistem. Na to napravo smo namestili OpenVPN in Wireguard odjemalca (naprava je povezana na dve različni VPN omrežji) ter omogočili ssh dostop.

Še nekaj pojasnil za lažje razumevanje omrežne arhitekture: LAN omrežje ima IP naslove v območju 192.168.200.0/24, VPN omrežje pa ima IP naslove v območju 10.10.6.0/24.

Nastavitev Nginx posredniškega strežnika

Najprej je na napravo treba namestiti nginx spletni strežnik nato pa urediti datoteko z nastavitvami spletnega strežnika: sudo nano /etc/nginx/sites-enabled/default.

Vpišemo naslednje nastavive:

# Redirection to HomeAssistant on LAN

server {
	listen 8123 default_server;
	listen [::]:8123 default_server;

	root /var/www/html;
	index index.html index.htm;
	server_name _;
        location / {
                # Enter the LAN IP of your local HomeAssistant device:
                proxy_pass http://192.168.200.xxx:8123/;
                proxy_http_version 1.1;
                proxy_set_header Upgrade $http_upgrade;
                proxy_set_header Connection 'upgrade';
                proxy_set_header Host $host;
                proxy_cache_bypass $http_upgrade;
                proxy_redirect     off;
        }
}

Datoteko shranimo in preverimo če so nastavitve pravilne (sudo nginx -t) ter ponovno zaženemo Nginx spletni strežnik (sudo service nginx restart), po potrebi pa tudi omogočimo njegov samodejni zagon ob ponovnem zagonu sistema (sudo service nginx enable).

Če bomo sedaj iz VPN omrežja odprli spletno stran te Armbian naprave (npr. http://10.10.6.2:8123/), bo naš spletni zahtevek posredovan na HomeAssistant napravo v LAN omrežju. S tem je spletni vmesnik HomeAssistant naprave postal dostopen napravam v VPN omrežju, saj Armbian naprava služi kot nekakšen posrednik med obema omrežjema. Če imamo npr. na telefonu stalno vključenega VPN odjemalca, lahko sedaj do lokalne HomeAssistant naprave varno dostopamo od koderkoli.

Prvi del problema smo tako rešili. Sledi nastavitev dostopa do medijskega strežnika.

Nastavitev dostopa do medijskega strežnika preko SFTP

Eden izmed najbolj znanih protokolov za izmenjavo datotek v lokalnih omrežjih je tim SMB protokol, znan tudi kot Samba protokol. Storitev SMB teče na preko TCP vratih 445 in 139 in načeloma bi lahko na Armbian napravi uredili samo posredovanje teh vrat iz VPN v LAN omrežje. Žal SMB protokol do različice 3.0 ne podpira šifriranja, na kasnejših različicah pa ga je potrebno posebej vključiti in konfigurirati. Zato je bolj smiselno, da omogočimo dostop do deljene mape preko SFTP protokola (Secure File Transfer Protocol), ki omogoča močno šifriranje. Žal pa HomeAssistant ne omogoča SFTP dostopa.

Rešitev? Nastavitev SFTP dostopa do HomeAssistanta preko Armbian naprave in Sambe!

Prvi korak je namestitev podpore deljenja datotek na medijskem strežniku na napravi HomeAssistant preko omrežja. Pri tem bomo uporabili dodatek Samba share.

Samba share je storitev, ki omogoča deljenje datotek preko omrežja in sicer med sistemi Windows in Linux preko omrežja. Deljenje datotek poteka preko SMB/CIFS protokola (Server Message Block/Common Internet File System), ki je standardni protokol za deljenje datotek v okolju Windows.

V HomeAssistantu gremo najprej na Settings - Add-ons ter namestimo dodatek Samba share.

Nato v zavihku Configuration tega zavihka vnesemo uporabniško ime, geslo in delovno skupino ter določimo dovoljena omrežja ter (po potrebi) nedostopne datoteke. Dodatek nato ponovno zaženemo.

Zdaj bi morala biti v LAN omrežju že vidna skupna deljena mapa na napravi HomeAssistant. Potrebno jo je le še narediti dostopno iz VPN omrežja.

To naredimo tako, da na Armbian napravi najprej namestimo podporo za SMB/CIFS protokol: sudo apt install cifs-utils.

Na tej Linux napravi sedaj v posebno datoteko vpišemo uporabniško ime in geslo za dostop do mape v skupni uporabi na napravi HomeAssistant:

sudo nano /root/.smbcredentials

Vanjo vpišemo uporabniško ime in geslo iz Samba share dodatka iz HomeAssistant:

username=smb_username
password=smb_password

Nastavimo (zaklenemo) ustrezne pravice na tej mapi: chmod 400 /root/.smbcredentials ter ustvarimo lokalno mapo na katero bomo priklopili deljeno mapo na HomeAssistant: sudo mkdir /media/homeassistant.

Sedaj oddaljeno deljeno mapo ročno priklopimo (pišemo seveda ustrezen IP naslov HomeAssistant naprave):

sudo mount -t cifs -o rw,vers=3.0,credentials=/root/.smbcredentials,file_mode=0777,dir_mode=0777 //192.168.200.xxx/media /media/homeassistant

Če želimo, da se bo ta Samba share mapa samodejno povezala ob vsakem zagonu Armbian naprave, pa je potrebno podatke za povezavo vpisati v datoteko /etc/fstab.

Če se sedaj na Armbian napravo povežemo preko SFTP protokola in odjadramo na mapo /media/homeassistant, bomo tako pravzaprav videli vsebino Media sources mape na HomeAssistantu!

Na ta način lahko datoteke preko vmesne Armbian naprave preprosto prenašamo iz VPN omrežja preko SFTP in nato naprej na LAN omrežje preko SMB/CIFS. S tem pa smo uspešno rešili tudi naš drugi problem.

Kategorije: Odprta koda, Informacijska tehnologija
Ključne besede: HomeAssistant