OpenVPN-asiakas Raspberrylle

Jos tarvitsee tekemisiinsä kiinteää IP-osoitetta, niin on joko ostettava VPN-palvelu tai mieluummin rakennettava itse. Pelkkä VPN ei kuitenkaan auta, sillä siihen on myös päästävä kirjautumaan. Käytännössä kaikille muille löytyy suoraan helppo käyttöliittymä, mutta ei linuxeille. Toki tuohon on liitettävä disclaimer, että en tiedä miten asiat hoituvat työpöytätaolla, sillä minulle linux on aina yhtäkuin Ubuntun shell. Toki shellistä pääsee liittymään VPN:ään, mutta se vaatii hieman käsitöitä.

Nämä ohjeet käsittelevät nimenomaan liittymistä OpenVPN serveriin. Jos käytät jotain muuta VPN-palvelua, niin niistä löytynee omat ohjeensa miten asiakas (client) liittyy niihin.

Teen kaiken Ubuntu 20.04:ssä, mutta ohjeet lienevät kohtuullisen suurin osin sopivia tai helposti sovellettavissa muihinkin jakeluihin. Mutta jos tämä ei toimi juuri sinun distrossasi, niin Google auttanee.

Ohjeet löytyvät kategoriasta Raspberry Pi siitä yksinkertaisesta syystä, että asensin tämän nimenomaan Raspin tarpeisiin. Tietenkään ohjeet eivät muutu vaikka asentaisin OpenVPN:n asiakaskäytön mihin tahansa Ubuntu-boksiin. Windowsissa toimivaa WSL:ää en ole kuitenkaan kokeillut, mutta koska siinä ympäristössä on muutenkin syytä käyttää nimenomaan Windowsin asiakasohjelmaa, niin samapa tuo.

Minulla on käytössä ulkoinen VPN, mutta kaikki tehdään aivan samalla tavalla vaikka Raspberryssä itsessään pyörisi OpneVPN. Tosin en ymmärrä miksi kukaan haluaisi asentaa kotiverkon Raspberryyn OpenVPN-serverin.

Ympäristön asettaminen

OpenVPN:n käyttö vaatii sudo-oikeuksia, joka ei liene kotiverkossa mikään sen suurempi ongelma. Silloin asiakassäädöt kannattaa tehdä suoraan rootin tilille. Mutta kotonakaan sudo-oikeuksia ei kannattaisi jakaa kaikille, vaan ainoastaan heille, jotka sitä aidosti tarvitsevat. Siksi kierrän hieman säännöntapaisia ja asensin OpenVPN clientin jokaiselle tunnukselle erikseen ja sallin sen käytön ilman sudon salasanakyselyä.

Asennuksen voi toki tehdä kerta toisensa jälkeen alusta alkaen, mutta helpommalla pääsee, kun kopioi yhden tehdyn jokaiselle tunnukselle. Jos käyttää eri .ovpn tiedostoa per henkilö, niin sitten vaihtaa vain sen.

 

  • Asennetaan OpenVPN asiakas-ohjelma ja DNS-juttuja varten omansa:

apt install openvpn openvpn-systemd-resolved

  • Ensin tehdään hakemisto asetuksia varten:

mkdir -p ~/.vpn-client/files

  • Kopioidaan asetusten pohja:

cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf ~/.vpn-client/base.conf

  • Muokataan asetukset kohdalleen:

nano ~/.vpn-client/base.conf

Muuta kohtaan remote my-server-1 1194 VPN-serverisi IP-osoite. Tarkista, että portti on oikein. Kohdan pitäisi näyttää jotenkin tältä: remote 111.22.33.4 1194.

Ota pois kommentointi, eli poista puolipilkut ; riveiltä user nobody ja group nogroup.

Kommentoi rivit, eli laitat alkuun puolipisteen ;
;ca ca.crt
;cert client.crt
;key client.key

;tls-auth ta.key 1

Käy vilkaisemassa OpenVPN-serverin asetuksista /etc/openvpn/server/server.conf mitkä ovat cipher ja auth tiedot. Korvaa niillä oleva cipher asetus. Minulla ne olivat:

cipher AES-256-CBC
auth SHA512

Lisää nämä tiedoston loppuun:

key-direction 1

script-security 2
up /etc/openvpn/update-systemd-resolved
down /etc/openvpn/update-systemd-resolved
down-pre
dhcp-option DOMAIN-ROUTE .

Tallenna ja poistu.

  • Siirrä OpenVPN-serverin tekemä asiakastiedosto jotain.ovpn haluamallasi tavalla hakemistoon ~/.vpn-client/files. Minulla sellainen on valmiina OpenVPN-serverin /root hakemistossa, joten siirrän sen sieltä rsync-komennolla.

rsync -avz -e ssh root@225.225.225.225:/root/tunnus.ovpn ~/.vpn-client/files/

En ole koskaan varmistanut onko omistajuuden vaihtaminen sinänä pakollista tai edes tarpeellista, mutta olen tehnyt sen silti:

chown -R tunnus:tunnus ~/.vpn-client

  • Sallitaan käyttö ilman sudon salasanakyselyä:

sudo visudo

Lisää vaikka tiedoston loppuun tämä:

# Sallitaan openvpn ilman sudoa
%sudo ALL=NOPASSWD: /usr/sbin/openvpn

Homma oli siinä ja toivottavasti toimii.

OpenVPN:n käyttö shellissä

Kytkeytyminen VPN:ään on helppoa:

sudo openvpn --config ~/.vpn-client/files/tunnus.ovpn

Koska OpenVPN ei jää taustalle pyörimään, niin käyttöä varten pitää aukaista uusi shell-ikkuna. PuTTY:ssä se on helppoa, kun klikkaa ikkunan otsikkoriviä oikealla hiiren korvalla ja valitsee Duplicate session.

Kun VPN:n käyttö riittää, niin tuttu ctrl-c katkaisee yhteyden.

Koska asiat saa tehdä helpostikin, niin tehdään tuolle alias:

echo "alias vpn='sudo openvpn --config ~/.vpn-client/files/tunnus.ovpn'" >> ~/.bash_aliases && . ~/.bashrc

 

Jakke Lehtonen

Teen B2B-markkinoille sisällöntuottoa sekä UX-testauksia. Samaan liittyy myös koulutukset yrityksille ja webmaailman kanssa muutoin painiville. Serverien sielunelämää on joutunut ohessa opettelmaan. Toinen puoli toiminnasta on koirien ravitsemuksen ja ruokinnan suunnittelua sekä varsinkin omistajien kouluttamista hoitamaan koiriaan oikein ja vielä paremmin. Profiili: Jakke Lehtonen

Keskustele foorumilla Meta/KATISKA