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.
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.
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
1 2 |
localip 192.168.1.220 remoteip 192.168.1.221-225 |
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
1 2 3 4 5 6 7 8 9 10 11 12 |
#här anger du normalt adressen till din router ms-dns 192.168.1.1 #Anger största packet som kan hanteras #Om du får problem med prestandan kan man behöva minska dessa mtu 1472 mru 1472 #stänga av BSD-kompression nobsdcomp # Inget IPX stöd (Novell Nätverk) noipx # need to be disabled refuse-eap |
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)
minska talet med 10 i taget (1462, 1452 …) tills du får följande svar
Ä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
1 |
sudo nano /etc/ppp/chap-secrets |
Lägg till användare, en per rad
användare[TAB]*[TAB]lösenord[TAB]*
exempel
1 2 3 4 |
# Secrets for authentication using CHAP # client server secret IP addresses kalle * hemligtpass * petter * annatpass * |
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
1 |
sudo sysctl -w net.ipv4.ip_forward=1 |
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
1 |
#net.ipv4.ip_forward=1 |
och ta bort brädgårdstecknet på raden så att det står
1 |
net.ipv4.ip_forward=1 |
spara filen och kör kommandot
1 |
sudo sysctl -p |
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
1 |
sudo systemctl enable pptpd |
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.
tryck Search, bläddra ner och klicka på länken för Point-to-Point Tunneling Protocol
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.
PPTP behöver startas vid varje omstart.
Vi behöver en sudo /etc/init.d/pptpd start nånstans som körs vid boot
Verkar som
sudo systemctl enable pptpd
gör tricket
Vet inte vilken dist du kör men om man kör raspian så görs det automatiskt när du installerar pptpd# sudo apt-get install pptpd
Reading package lists… Done
Building dependency tree
Reading state information… Done
The following extra packages will be installed:
bcrelay libpcap0.8 ppp
The following NEW packages will be installed:
bcrelay libpcap0.8 ppp pptpd
……
# sudo systemctl status pptpd
● pptpd.service – PoPToP Point to Point Tunneling Server
Loaded: loaded (/lib/systemd/system/pptpd.service; disabled)
Active: active (running) since Mon 2016-02-15 22:52:51 CET; 23min ago
Main PID: 3329 (pptpd)
CGroup: /system.slice/pptpd.service
└─3329 /usr/sbin/pptpd –fg
Redigerade detta svar då det verkar ha ändrat i Jessie eftersom den står i disabled så är det helt rätt att man måste ange
# sudo systemctl enable pptpd
för att den ska autostarta, ska ändra i beskrivningen