Ibland kan det vara bra att kunna komma åt sitt lokala nät hemma från andra platser. Detta kan man göra genom att köra VPN (Virtual private network) är en teknik som skapar en “tunnel” eller rör mellan 2 datorer. Informationen som överförs mellan dessa är krypterad och förhindrar avlyssning i publika nät, t.ex wi-fi nät utan inloggning som skickar all trafik mellan dator och accesspunkt okrypterat.  En ytterligare funktion som man kan använda VPN-anslutningar till är att ansluta sin egen dator som är ansluten utanför t.ex ditt privata nät hemma, tunneln skapar en direktlänk in rakt genom brandväggen på routern och gör att den externa datorn uppfattas som om det var ansluten på det lokala nätet hemma. En fördel med att använda VPN istället för att öppna portar i routern/brandväggen för t.ex ssh till en dator innanför är att åtkomsten är kopplas till en inloggning med användare och lösenord.

Det först man behöver göra är att installer pptpd tjänsten med kommandot

sudo apt-get install pptpd

Innan vi fortsätter måste man bestämma vilka IP-nummer som ska användas av VPN-tjänsten. Logga in på din router och kontrollera inställningarna för DHCP.

router-setup

 

Längst ner i bilden set man DHCP inställningarna, den delar ut IP-nummer mellan 192.168.1.2 t.o.m 192.168.1.40. 192.168.1.1 är routerns eget ip och Subnet Masken visar att routern accepterar IP-nummer mellan 192.168.1.1 och 192.168.1.254. Om dina inställningar nyttjar hela utrymmet dvs Ending IP address är 254 så kan man minska den till ett lägre värden då du knappast kommer att ha över 200 datorer kopplade samtidigt på ditt nätverk.

Nu är det dax att konfigurerar vilka IP-nummer som vi ska använda, man behöver 1 nummer för pptp anslutningen och sedan 1 nummer för varje samtidig anslutningen som man vill ha. Minimum är alltså 2 IP-nummer, i exemplet ger jag VPN tjänsten 5 IP-nummer för anslutning. Det är viktigt att man inte använder IP-nummer som finns i området som DHCP-server delar ut eftersom det kan leda till att två maskiner får samma nummer.

Många routers har även en funktion att se vilka IP-nummer som är upptagna.

router-attached

Där man man hitta maskiner som är uppsatta med statisk ip och har IP-nummer utanför DHCP området.

Inställningen för vilka IP-nummer som man ska använda gör man i filen /etc/pptpd.conf, kör

sudo nano /etc/pptpd.conf

gå till slutet av filen och lägg till följande rader

spara filen.

 Observera!! IP-adresserna beror på hur din router är konfigurerad. En tumregel är att de 3 första siffrorna är samma så om din router har 192.168.100.1 så byt ut alla 192.168.1 mot 192.168.100 i exemplen

Nu ska ett par optioner ställas in i filen /etc/ppp/pptpd-options, kör

sudo nano /etc/ppp/pptpd-options

gå till slutet av filen och lägg till följande rader

uppdatering 2015-04-30, lagt till refuse-eap för att de ska fungera bättre

spara filen.

Hur kollar man att MTU/MRU inställningarna är rätt?

Det är ganska enkelt kör följande kommando

ping -l -f 1472 www.dn.se

Får du föjande fel (använde 1490 för att visa vilket fel man får när paketen är för stora)

mtu-frag

minska talet med 10 i taget (1462, 1452 …) tills du får följande svar

mtu-ok

Ändra i /etc/ppp/pptpd-options och ändra raderna med mru och mtu till det värde som du fick fram på testen.

Det som är kvar att göra på serverna är att sätta upp vilka användare som får ansluta sig till VPN-server. Öppna filen /etc/ppp/chap-secrets med

Lägg till användare, en per rad
användare[TAB]*[TAB]lösenord[TAB]*

exempel

spara filen och starta om pptpd tjänsten med

sudo /etc/init.d/pptpd restart

För att anslutningen ska nå vidare från VPN-datorn så måste man aktivera att packet får skickas mellan VPN anslutningen och det lokala nätverket.  I kärnan finns en speciell flagga för det. Man kan kontroller om vidarebefodran av paket “ipv4 forwarding” (som det heter på Engelska) är aktivt eller ej med kommadot

cat /proc/sys/net/ipv4/ip_forward

1 betyder att vidarebefodran är aktiv, 0 att den är avstäng. För att aktivera den tillfälligt (tills omstart) kan man ange kommandot

För att göra förändringen permanent måste man ändra inställningen i filen /etc/sysctl.conf med kommandot

sudo nano /etc/sysctl.conf

Leta rätt på raden som innehåller

och ta bort brädgårdstecknet på raden så att det står

spara filen och kör kommandot

för att aktivera.

uppdatering 2016-02-15, lagt till kommando för att pptpd ska starta automatiskt eftersom det verkar vara borttaget i Jessie

Nu är alla inställningar på servern färdiga, nu återstår det att konfigurera routern så att den släpper igenom VPN-trafik till Raspberry PI servern. För att pptp ska fungera måste man skicka TCP paket på porten 1723 vidare och även acceptera GRE paket (IP/47). För den som inte vet hur man gör det finns en bra sida (på Engelska)  med beskrivning för de flesta märken av routrar, http://portforward.com/

När du fått upp sidan väljer du märke om modell som överensstämmer med den du har.

portforward-select

 

tryck Search, bläddra ner och klicka på länken för Point-to-Point Tunneling Protocol

portforward-pptp

 

så får du en steg för steg beskrivning om hur man går tillväga, IP-nummret som ska anges är IP:n för Raspberry PI.

Tyvärr så fungerar detta inte i bl.a Telias mobilnät då man börjar med NAT/NAPT så för att kunna köra VPN via mobilnätet krävs att man använder sig av L2TP VPN istället.

Det kommer tre artiklar i samma serie, en om hur man sätter upp en L2TP VPN, en hur man använder sig av dynamiska DNS tjänster och så jag har även valt att göra en separat artikel om hur man sätter upp klienter för antingen full eller partiell VPN routning.