Förvandla en Raspberry Pi till en VPN för att komma åt ditt nätverk var som helst

Varför använda ett VPN för att komma åt ditt hem

Det finns många anledningar till att du vill komma åt ditt hemnätverk på distans, och det bästa sättet att göra det är med en VPN-server. Vissa routrar låter dig faktiskt ställa in en VPN-server direkt i routern, men i många fall kommer du att behöva konfigurera en själv.

Förvandla en Raspberry Pi till en VPN för att komma åt ditt nätverk var som helst

En Raspberry Pi är ett utmärkt sätt att åstadkomma detta. De kräver inte mycket energi för att köra, och de har tillräckligt med kraft för att köra en VPN-server. Du kan ställa in en bredvid din router och i princip glömma det.

När du har tillgång till ditt hemnätverk på distans kan du komma åt dina filer var som helst. Du kan köra dina hemdatorer på distans. Du kan till och med använda ditt hems VPN-anslutning från vägen. En inställning som denna låter din telefon, surfplatta eller bärbara dator agera precis som den var hemma var som helst.

Begränsat erbjudande: 3 månader GRATIS!

Skaffa ExpressVPN. Säkert och streamingvänligt.

30 dagars pengarna tillbaka-garanti

Ställ in Pi

Innan du kan börja konfigurera VPN måste du konfigurera din Raspberry Pi. Det är bäst att ställa in Pi med ett fodral och ett minneskort av anständig storlek, 16 GB borde vara mer än tillräckligt. Om möjligt, anslut din Pi till din router med en Ethernet-kabel. Det kommer att minimera eventuella nätverksförseningar.

Installera Raspbian

Det bästa operativsystemet att använda på din Pi är Raspbian. Det är standardvalet som lagts ut av Raspberry Pi-stiftelsen, och det är baserat på Debian, en av de säkraste och stabilaste Linux-versionerna som finns tillgängliga.

Gå till Rasbian nedladdningssida, och hämta den senaste versionen. Du kan använda ”Lite”-versionen här, eftersom du faktiskt inte behöver ett grafiskt skrivbord.

Begränsat erbjudande: 3 månader GRATIS!

Skaffa ExpressVPN. Säkert och streamingvänligt.

30 dagars pengarna tillbaka-garanti

Medan det laddas ner, skaffa den senaste versionen av Etsare för ditt operativsystem. När nedladdningen är klar, extrahera Raspbian-bilden. Öppna sedan Etcher. Välj Raspbian-bilden där du extraherade den. Välj ditt SD-kort (Sätt i det först). Skriv till sist bilden på kortet.

Lämna SD-kortet i din dator när det är klart. Öppna en filhanterare och bläddra till kortet. Du bör se ett par olika partitioner. Leta efter ”boot”-partitionen. Det är den med en ”kernel.img”-fil i den. Skapa en tom textfil på ”boot”-partitionen och kalla den ”ssh” utan filtillägg.

Du kan äntligen ansluta din Pi. Se till att du kopplar in den sist. Du kommer inte att behöva en skärm, tangentbord eller mus. Du kommer att få fjärråtkomst till Raspberry Pi via ditt nätverk.

Begränsat erbjudande: 3 månader GRATIS!

Skaffa ExpressVPN. Säkert och streamingvänligt.

30 dagars pengarna tillbaka-garanti

Ge Pi några minuter att ställa in sig själv. Öppna sedan en webbläsare och navigera till din routers hanteringsskärm. Hitta Raspberry Pi och notera dess IP-adress.

Oavsett om du använder Windows, Linux eller Mac, öppna OpenSSH. Anslut till Raspberry Pi med SSH.

$ ssh [email protected]

Använd självklart den faktiska IP-adressen för Pi. Användarnamnet är alltid pi, och lösenordet är hallon.

Konfigurera OpenVPN

OpenVPN är inte helt enkelt att ställa in som en server. Den goda nyheten är att du bara behöver göra det en gång. Så innan du gräver in, se till att Raspbian är helt uppdaterad.

$ sudo apt update
$ sudo apt upgrade

När uppdateringen är klar kan du installera OpenVPN och certifikatverktyget du behöver.

$ sudo apt install openvpn easy-rsa

Certifikatmyndigheten

För att autentisera dina enheter när de försöker ansluta till servern måste du konfigurera en certifikatutfärdare för att skapa signeringsnycklar. Dessa nycklar ser till att endast dina enheter kommer att kunna ansluta till ditt hemnätverk.

Skapa först en katalog för dina certifikat. Flytta in i den katalogen.

$ sudo make-cadir /etc/openvpn/certs
$ cd /etc/openvpn/certs

Titta runt efter OpenSSL-konfigurationsfiler. Länka sedan den senaste till openssl.cnf.

$ ls | grep -i openssl
$ sudo ln -s openssl-1.0.0.cnf openssl.cnf

I samma ”certs”-mapp finns en fil som heter ”vars.” Öppna den filen med din textredigerare. Nano är standard, men installera gärna Vim, om du är mer bekväm med det.

Redigera Vars-filen

Hitta KEY_SIZE variabel först. Den är inställd på 2048 som standard. Ändra det till 4096.

export KEY_SIZE=4096

Huvudblocket som du behöver hantera upprättar information om din certifikatutfärdare. Det hjälper om denna information är korrekt, men allt du kan komma ihåg är bra.

export KEY_COUNTRY="US"
export KEY_PROVINCE="CA"
export KEY_CITY="SanFrancisco"
export KEY_ORG="Fort-Funston"
export KEY_EMAIL="[email protected]"
export KEY_OU="MyOrganizationalUnit"
export KEY_NAME="HomeVPN"

När du har allt, spara och avsluta.

Det där Easy-RSA-paketet som du installerade tidigare innehåller många skript som hjälper dig att ställa in allt du behöver. Du behöver bara köra dem. Börja med att lägga till ”vars”-filen som en källa. Det kommer att ladda alla variabler som du just ställt in.

$ sudo source ./vars

Rensa sedan upp nycklarna. Du har inga, så oroa dig inte för meddelandet som talar om att dina nycklar kommer att raderas.

$ sudo ./clean-install

Skapa certifikatutfärdare

Slutligen, bygg din certifikatutfärdare. Du har redan ställt in standardinställningarna, så du kan bara acceptera standardinställningarna som den presenterar. Kom ihåg att ställa in ett starkt lösenord och svara ”ja” på de två sista frågorna, efter lösenordet.

$ sudo ./build-ca

Gör några nycklar

Bygg servernyckeln

Du gick igenom allt det där med att konfigurera en certifikatutfärdare så att du kan signera nycklar. Nu är det dags att göra några. Börja med att bygga nyckeln för din server.

$ sudo ./build-key-server server

Bygg Diffie-Hellman

Bygg sedan Diffie-Hellman PEM. Det är vad OpenVPN använder för att säkra dina klientanslutningar till servern.

$ sudo openssl dhparam 4096 > /etc/openvpn/dh4096.pem

Den sista nyckeln du behöver från och med nu kallas en HMAC-nyckel. OpenVPN använder denna nyckel för att signera varje enskilt paket med information som utbyts mellan klienten och servern. Det hjälper till att förhindra vissa typer av attacker på anslutningen.

$ sudo openvpn --genkey --secret /etc/openvpn/certs/keys/ta.key

Serverkonfiguration

Du har nycklarna. Nästa del i att ställa in OpenVPN är själva serverkonfigurationen. Tack och lov är det inte så mycket du behöver göra här. Debian tillhandahåller en baskonfiguration som du kan använda för att komma igång. Så börja med att hämta den konfigurationsfilen.

$ sudo gunzip -c /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz > /etc/openvpn/server.conf

Använd din textredigerare igen för att öppna upp /etc/openvpn/server.conf. Det första du behöver hitta är ca, cert, och nyckel- filer. Du måste ställa in dem så att de matchar de faktiska platserna för filerna du skapade, som är alla in /etc/openvpn/certs/keys.

OpenVPN Server Config Keys

ca /etc/openvpn/certs/keys/ca.crt
cert /etc/openvpn/certs/keys/server.crt
key /etc/openvpn/certs/keys/server.key  # This file should be kept secret

Hitta dh inställningen och ändra den så att den matchar Diffie-Hellman .pem som du skapade.

dh dh4096.pem

Ställ in sökvägen för din HMAC-nyckel också.

tls-auth /etc/openvpn/certs/keys/ta.key 0

Hitta chiffer och se till att den matchar exemplet nedan.

cipher AES-256-CBC

Nästa par alternativ finns där, men de kommenteras ut med en ;. Ta bort semikolonen framför varje alternativ för att aktivera dem.

push "redirect-gateway def1 bypass-dhcp"

push "dhcp-option DNS 208.67.222.222"
push "dhcp-option DNS 208.67.220.220"

Leta efter användare och grupp alternativ. Avkommentera dem och ändra användare till ”openvpn.”

user openvpn
group nogroup

Slutligen är dessa två sista rader inte i standardkonfigurationen. Du måste lägga till dem i slutet av filen.

OpenVPN Server Config Auth

Ställ in autentiseringssammanfattningen för att ange starkare kryptering för användarautentisering.

# Authentication Digest
auth SHA512

Begränsa sedan ciprarna som OpenVPN kan använda till bara starkare. Detta hjälper till att begränsa möjliga attacker på svaga chiffer.

# Limit Ciphers
tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-128-GCM-SHA256:TLS-DHE-RSA-WITH-AES-256-CBC-SHA:TLS-DHE-RSA-WITH-CAMELLIA-256-CBC-SHA:TLS-DHE-RSA-WITH-AES-128-CBC-SHA:TLS-DHE-RSA-WITH-CAMELLIA-128-CBC-SHA

Det är allt för konfiguration. Spara filen och avsluta.

Starta servern

Innan du kan starta upp servern måste du göra det openvpn användare som du angav.

$ sudo adduser --system --shell /usr/sbin/nologin --no-create-home openvpn

Det är en speciell användare bara för att köra OpenVPN, och den kommer inte att göra något annat.

Starta nu servern.

$ sudo systemctl start openvpn
$ sudo systemctl start [email protected]

Kontrollera att de båda är igång

$ sudo systemctl status openvpn*.service

Om allt ser bra ut, aktivera dem vid start.

$ sudo systemctl enable openvpn
$ sudo systemctl enable [email protected]

Klientinställningar

Din server är nu konfigurerad och igång. Därefter måste du ställa in din klientkonfiguration. Det här är konfigurationen som du kommer att använda för att ansluta dina enheter till din server. Återgå till certifikat mapp och förbered dig för att bygga klientnycklarna. Du kan välja att bygga separata nycklar för varje klient eller en nyckel för alla klienter. För hemmabruk bör en nyckel vara bra.

$ cd /etc/openvpn/certs
$ sudo source ./vars
$ sudo ./build-key client

Processen är nästan identisk med servern, så följ samma procedur.

Klientkonfiguration

Konfigurationen för klienter är mycket lik den för servern. Återigen, du har en färdig mall att basera din konfiguration på. Du behöver bara modifiera den för att matcha servern.

Byt till klient katalog. Packa sedan upp provkonfigurationen.

$ cd /etc/openvpn/client
$ sudo cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf /etc/openvpn/client/client.ovpn

Öppna upp client.ovpn fil med din textredigerare. Hitta sedan avlägsen alternativ. Om du antar att du inte redan använder ett VPN, söker Google ”Vad är min IP.” Ta adressen som den visar och ställ in avlägsen IP-adress till den. Lämna portnumret.

remote 107.150.28.83 1194 #That IP ironically is a VPN

OpenVPN Client Config Keys

Ändra certifikaten för att återspegla de du skapade, precis som du gjorde med servern.

ca ca.crt
cert client.crt
key client.key

Hitta användaralternativen och avkommentera dem. Det går bra att köra klienterna som ingen.

user nobody
group nogroup

Avkommentera tls-auth alternativ för HMAC.

tls-auth ta.key 1

OpenVPN Client Ciphers

Leta sedan efter chiffer alternativet och se till att det matchar servern.

cipher AES-256-CBC

Lägg sedan till autentiseringssammanfattningen och chifferbegränsningarna längst ner i filen.

# Authentication Digest
auth SHA512

# Cipher Restrictions
tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-128-GCM-SHA256:TLS-DHE-RSA-WITH-AES-256-CBC-SHA:TLS-DHE-RSA-WITH-CAMELLIA-256-CBC-SHA:TLS-DHE-RSA-WITH-AES-128-CBC-SHA:TLS-DHE-RSA-WITH-CAMELLIA-128-CBC-SHA

När allt ser rätt ut sparar du filen och avslutar. Använda sig av tjära för att packa ihop konfigurationen och certifikaten, så att du kan skicka dem till klienten.

$ sudo tar cJf /etc/openvpn/clients/client.tar.xz -C /etc/openvpn/certs/keys ca.crt client.crt client.key ta.key -C /etc/openvpn/clients/client.ovpn

Överför det paketet till klienten hur du än väljer. SFTP, FTP och en USB-enhet är alla bra alternativ.

Port Forwarding

Port Forwarding

För att något av detta ska fungera måste du konfigurera din router för att vidarebefordra inkommande VPN-trafik till Pi. Om du redan använder ett VPN måste du se till att du inte ansluter på samma port. Om du är det, ändra porten på din klient- och serverkonfiguration.

Anslut till din routers webbgränssnitt genom att skriva in dess IP-adress i din webbläsare.

Varje router är olika. Ändå borde de alla ha någon form av denna funktionalitet. Hitta den på din router.

Inställningen är i princip densamma på varje router. Ange start- och slutportarna. De bör vara samma som varandra och den som du ställer in i dina konfigurationer. Sedan, för IP-adressen, ställ in den till din Raspberry Pis IP. Spara dina ändringar.

Anslut till klienten

Alla kunder är olika, så det finns ingen universell lösning. Om du använder Windows behöver du Windows OpenVPN-klient.

På Android kan du öppna din tarball och överföra nycklarna till din telefon. Installera sedan OpenVPN-appen. Öppna appen och koppla in informationen från din konfigurationsfil. Välj sedan dina nycklar.

På Linux måste du installera OpenVPN ungefär som du gjorde för servern.

$ sudo apt install openvpn

Byt sedan till /etc/openvpn, och packa upp tarballen som du skickade över.

$ cd /etc/openvpn
$ sudo tar xJf /path/to/client.tar.xz

Byt namn på klientfilen.

$ sudo mv client.ovpn client.conf

Starta inte klienten ännu. Det kommer att misslyckas. Du måste först aktivera portvidarebefordran på din router.

Avslutande tankar

Du bör nu ha en fungerande inställning. Din klient kommer att ansluta direkt via din router till Pi. Därifrån kan du dela och ansluta över ditt virtuella nätverk, så länge alla enheter är anslutna till VPN. Det finns ingen gräns, så du kan alltid ansluta alla dina datorer till Pi VPN.

Lämna en kommentar

Din e-postadress kommer inte publiceras.