Inhoudsopgave:

Raspberry Pi VPN-gateway: 6 stappen
Raspberry Pi VPN-gateway: 6 stappen

Video: Raspberry Pi VPN-gateway: 6 stappen

Video: Raspberry Pi VPN-gateway: 6 stappen
Video: Как настроить VPN на маршрутизаторе | NordVPN 2024, November
Anonim
Raspberry Pi VPN-gateway
Raspberry Pi VPN-gateway

Update-2018-01-07:

  • Bijgewerkte ontbrekende zaken en aangebrachte wijzigingen die nodig zijn voor de huidige versie van Raspian.
  • Ook een specifieke handleiding voor NordVPN gemaakt.

Er zijn een paar verschillende toepassingen voor VPN. Of je wilt je privacy en privégegevens beschermen tegen nieuwsgierige blikken of je moet bronnen uit een ander land halen. Sourcing uit een ander land kan erg handig zijn om toegang te krijgen tot diensten die niet in uw land worden aangeboden. Er zijn tegenwoordig een aantal VPN-services en de meeste bieden gebruiksvriendelijke software voor uw computer en apps voor uw tablet of telefoon. Maar als je andere apparaten hebt die niet worden ondersteund door de software die je over de VPN wilt gaan? Bouw vervolgens een gateway die u internettoegang geeft via de VPN.

Als u naar uw basisnetwerkconfiguratie kijkt, heeft u een "standaardgateway" die wordt gebruikt voor elk ip-adres dat zich niet in uw huidige subnet bevindt (zeer vereenvoudigd). Dus als u een gateway instelt die internetverkeer via een bestaande VPN-verbinding kan routeren, kan elk apparaat met netwerkfunctionaliteit profiteren van de VPN-tunnel.

Mijn belangrijkste gebruiksscenario in mijn appartement in San Francisco is een VPN-tunnel naar mijn geboorteland Zweden, zodat ik Zweedse afspeelkanalen kan streamen op mijn mediaspelers en smart-tv. Dit is een vrij algemeen gebruik voor de meeste mensen die een VPN-tunnel nodig hebben. Omdat mijn mediaspelers en smart-tv's niet worden ondersteund door de VPN-software, heb ik er een uit een Raspberry Pi gebouwd.

Je kunt er een kopen voor minder dan $ 40 op Amazon. Ik raad je echter aan om ook een hoesje en een degelijke stroomadapter te kopen. Voor dit instructable heb je nodig:

  • Raspberry Pi 2 of 3
  • Een zaak van uw gading
  • Een degelijke stroomadapter
  • Een netwerkkabel

Stap 1: Uw VPN-service kiezen

Uw VPN-service kiezen
Uw VPN-service kiezen

Het belangrijkste bij het selecteren van een VPN-service is dat deze voldoet aan uw eisen. Voor deze use case had ik een VPN-service nodig met een Zweeds exit-punt, dat is het belangrijkste aangezien ik de Zweedse services nodig heb om ervan overtuigd te zijn dat ik in Zweden ben. In de loop der jaren heb ik verschillende leveranciers gebruikt en hieronder staan de dingen waar ik rekening mee houd bij het selecteren van de VPN-leverancier voor de specifieke use case:

Gratis test

Ik wil een gratis testperiode of een kleine hoeveelheid testdata om een idee te krijgen van de software of app. Ook wil ik de prestaties en de algehele ervaring testen voordat ik ervoor betaal. Het is ook leuk om te controleren of mijn idee werkt voordat ik ga betalen.

Privacy

Als de implementatie voor privacykwesties is, is het echt belangrijk wat het privacybeleid vermeldt. Het is ook belangrijk vanuit welk land het bedrijf opereert en welke wetten uw privacy beschermen. De echt privacygevoelige gebruikers zouden eens moeten kijken naar een dienst die stelt dat er geen verkeerslogs worden opgeslagen en anonieme betalingen via bijvoorbeeld Bitcoin toestaat.

Toegestaan verkeer

Er kunnen beperkingen zijn aan het type verkeer dat u mag uitvoeren. De meer serieuze leveranciers blokkeren meestal peer-to-peer-verkeer. Dit is niet alleen om juridische problemen te voorkomen, maar om de prestaties voor alle gebruikers te kunnen behouden. Er zijn echter veel goede leveranciers die peer-to-peer mogelijk maken en toch een service van hoge kwaliteit leveren. Maar als dat niet uw belangrijkste recuirment is, raad ik u aan een service te selecteren die peer-to-peer niet toestaat.

Gegevenslimiet

Gebruik nooit een service die een datalimiet houdt voor hun betalende gebruikers. Dit zal op het slechtst mogelijke moment opraken, precies zoals de gegevens op je telefoon net voor het grappige gedeelte in een videoclip!

Landen verlaten

Afhankelijk van de use case heeft dit een ander belang. Voor een use case als de mijne, waar ik in een bepaald land terecht moet komen, moet dat natuurlijk op de lijst staan. Ik moet ook kunnen selecteren in welk land ik vertrek. Er zijn diensten waar je het land van vertrek niet kunt selecteren, blijf daar uit de buurt. U kunt terechtkomen in een land met slechte prestaties of privacywetten. Zelfs als je geen specifiek land nodig hebt, moet je toch een dienst selecteren met een paar verschillende landen om van te laten zien om er een te vinden met goede prestaties.

Type software en ondersteuning

Dit is een van de belangrijkste redenen waarom ik de voorkeur geef aan diensten met een gratis test. Er zijn zoveel providers met slechte software die bugs bevatten, onveilig zijn of gewoon niet werken. Voor een Raspberry Pi implementatie heb ik een provider nodig die OpenVPN ondersteunt.

Mijn selectie

Voor deze build ging ik met Tunnel Bear. Er wordt een gratis test tot 500 GB aangeboden, zodat ik kon testen of ik daadwerkelijk kon streamen voordat ik iets betaalde. Ze zijn gevestigd in Canada, dat naast Zweden enkele van de strengste privacywetten ter wereld heeft. Geen datalimiet op betaalde service en ik mag ook meerdere apparaten tegelijk hebben aangesloten. Dus bescherming voor mijn telefoon, tablet en computer tijdens het reizen op onbeveiligde wifi is ook geregeld. Exit-knooppunt in Zweden wordt ondersteund, het wordt feitelijk geleverd via Bahnhof, dat bekend staat om zijn sterke privacy in Zweden. Voor de betaalde abonnementen bieden ze OpenVPN-ondersteuning. Ze doen het niet voor de gratis test, maar het was genoeg om dat vanaf mijn laptop uit te voeren om er zeker van te zijn dat de streamingdiensten werkten.

Stap 2: Installeer de Raspberry Pi

Voor dergelijke implementaties gebruik ik het Raspbian Lite-besturingssysteem. Omdat ik de GUI helemaal niet nodig heb. U kunt de nieuwste release hier krijgen.

Ik gebruik Win32DiskImager om het.img-bestand op de SD-kaart voor de Raspberry Pi te laden.

Zodra de Raspberry Pi is opgestart, kijk ik in de DHCP-lijst van mijn router om het IP-adres te krijgen en maak vervolgens verbinding via SSH met Putty. Standaard gebruikersnaam en wachtwoord zijn pi/raspberry

Eenmaal verbonden, voer ik de raspi-config-tool uit om de basisinstellingen te wijzigen.

sudo raspi-config

De belangrijkste dingen om voor te zorgen in deze configuratie zijn:

  • Bestandssysteem uitvouwen
  • Verander wachtwoord

Je kunt desgewenst ook de hostnaam van je Raspberry Pi wijzigen. Mijn DHCP heeft zeer lange huurcontracten en ik kan ook een specifiek adres reserveren. Als je die mogelijkheid niet hebt, moet je de Raspberry Pi configureren om een statisch IP-adres te gebruiken. Aangezien andere apparaten dit als hun standaard gateway zullen gebruiken, is het belangrijk dat het hetzelfde IP-adres blijft gebruiken. Hier is een bericht dat ik heb geschreven over het instellen van een statisch IP-adres in Raspbian Jessie.

Dan moeten we alles upgraden naar de nieuwste versie:

sudo apt-get updatesudo apt-get upgrade sudo apt-get dist-upgrade

Stap 3: Installeer OpenVPN

Installeer OpenVPN
Installeer OpenVPN

Nu moeten we OpenVPN op de Raspberry Pi installeren.

sudo apt-get install openvpn

Dan moeten we ervoor zorgen dat de service goed start.

sudo systemctl openvpn inschakelen

Wanneer de installatie is voltooid, moeten we de OpenVPN-configuratiebestanden en certificaten naar de box kopiëren. Deze wordt u verstrekt door uw VPN-provider. In mijn geval vond ik met TunnelBear daar een blogpost over Linux-ondersteuning. Op die pagina staat een link naar een zipbestand met alles wat we nodig hebben.

Het bestand bevat de certificaatbestanden en een.opvn-configuratiebestand voor elk land waarnaar u kunt tunnelen. Je hebt alle certificaatbestanden en het.opvn-configuratiebestand nodig voor het land van je keuze, in mijn geval Zweden. Pak de benodigde bestanden uit en gebruik winscp om de bestanden naar uw Raspberry Pi te uploaden. Dezelfde gebruikersnaam/wachtwoord als gebruikt voor SSH brengt je naar /home/pi, zet de bestanden daar gewoon neer.

Daarna gaan we terug naar de SSH-terminal en verplaatsen we de bestanden naar de OpenVPN-map. Het eerste commando is om er zeker van te zijn dat we in de map /home/pi staan.

cd /home/pi

sudo mv * /etc/openvpn/

Nu moeten we enkele wijzigingen aan de bestanden aanbrengen. Eerst moeten we het configuratiebestand hernoemen van.ovpn naar.conf. Elk bestand dat eindigt op.conf in de map /etc/openvpn wordt automatisch gestart wanneer de OpenVPN-daemon wordt gestart. Eerst moeten we in die map komen.

cd /etc/openvpn

Daarna veranderen we de naam van het configuratiebestand. Je kunt het een naam geven die je wilt, zolang het maar eindigt op.conf. Ik gebruik liever bestandsnamen zonder spaties, in dit geval ga ik voor swe.conf.

sudo mv *.ovpn swe.conf

Dan hebben we een authenticatiebestand nodig met daarin de gebruikersnaam en het wachtwoord die voor de VPN-tunnel worden gebruikt. Open een teksteditor en schrijf de gebruikersnaam en het wachtwoord op aparte regels. We zullen dit bestand auth.txt noemen.

sudo nano auth.txt

De inhoud zou als dit voorbeeld moeten zijn:

gebruikersnaam

wachtwoord

Gebruik vervolgens CTRL + O om naar het bestand te schrijven en CTRL + X om de nano-teksteditor af te sluiten. We moeten ook het auth.txt-bestand met onze inloggegevens beschermen.

sudo chmod 600 /etc/openvpn/auth.txt

Vervolgens moeten we het configuratiebestand bewerken om er zeker van te zijn dat alle paden correct zijn en een verwijzing naar het nieuw gemaakte auth.txt-bestand toevoegen.

sudo nano swe.conf

De regels die moeten worden gewijzigd, verwijzen naar andere bestanden, het moeten absolute paden zijn. In dit voorbeeld is dit wat we zoeken:

ca CACertificate.crt

cert UserCertificate.crt sleutel PrivateKey.key

We veranderen ze in absolute paden als volgt:

ca /etc/openvpn/CACertificate.crt

cert /etc/openvpn/UserCertificate.crt sleutel /etc/openvpn/PrivateKey.key

Vervolgens voegen we aan het einde van het bestand een verwijzing naar het auth.txt-bestand toe, zoals dit:

auth-user-pass /etc/openvpn/auth.txt

We gebruiken opnieuw CTRL + O om het bestand op te slaan en vervolgens CTRL + X om nano af te sluiten. Nu kunnen we de OpenVPN-daemon opnieuw opstarten en zien dat de tunnel werkt.

sudo-service openvpn opnieuw opstarten

Als je het commando ifconfig uitvoert, zou je een tun0-adapter moeten zien naast je eth0- en lo-adapters als de tunnel actief is. U kunt ook de opdracht deze opdracht uitvoeren om uw openbare IP-adres te controleren:

wget https://ipinfo.io/ip -qO -

Als u problemen ondervindt bij het opstarten van de tunnel, probeer dan eerst uw Raspberry Pi opnieuw op te starten en controleer vervolgens de configuratie op fouten.

Stap 4: Routering instellen

Nu moeten we IP-forwarding inschakelen. Het zorgt ervoor dat het netwerkverkeer van de ene netwerkinterface naar binnen kan stromen en de andere uit. In wezen een router maken.

sudo /bin/su -c "echo -e '\n#Enable IP Routing\nnet.ipv4.ip_forward = 1' > /etc/sysctl.conf"

Als je sudo sysctl -p uitvoert, zou je dit op het scherm moeten zien staan:

net.ipv4.ip_forward = 1

Nu is routering ingeschakeld en kan het verkeer door de Raspberry Pi, over de tunnel en het internet op.

Stap 5: Firewall en NAT instellen

Omdat we verschillende clients aan de binnenkant hebben die toegang hebben tot internet via één openbaar IP-adres, moeten we NAT gebruiken. Het staat voor netwerkadresvertaling en houdt bij welke client welk verkeer heeft aangevraagd wanneer de informatie over de tunnel terugkeert. We moeten ook wat beveiliging instellen rond de Raspberry Pi zelf en de tunnel.

sudo iptables -t nat -A POSTROUTING -o tun0 -j MASQUERADE

NAT inschakelen.

sudo iptables -A FORWARD -i eth0 -o tun0 -j ACCEPTEREN

Toestaan dat verkeer van eth0 (intern) over tun0 (tunnel) gaat.

sudo iptables -A FORWARD -i tun0 -o eth0 -m state --state GERELATEERD, GEVESTIGD -j ACCEPTEREN

Toestaan dat verkeer van tun0 (tunnel) teruggaat over eth0 (intern). Aangezien we de status GERELATEERD, GEVESTIGD specificeren, is deze beperkt tot een verbinding die wordt gestart vanaf het interne netwerk. Extern verkeer blokkeren dat een nieuwe verbinding probeert te maken.

sudo iptables -A INPUT -i lo -j ACCEPTEREN

Het eigen loopback-verkeer van de Raspberry Pi toestaan.

sudo iptables -A INPUT -i eth0 -p icmp -j ACCEPT

Toestaan dat computers op het lokale netwerk de Raspberry Pi pingen.

sudo iptables -A INPUT -i eth0 -p tcp --dport 22 -j ACCEPTEREN

SSH toestaan vanaf het interne netwerk.

sudo iptables -A INPUT -m state --state GEVESTIGD, GERELATEERD -j ACCEPTEREN

Toestaan dat al het verkeer dat door de Raspberry Pi wordt geïnitieerd, terugkeert. Dit is hetzelfde staatshoofd als eerder.

sudo iptables -P VOORUIT DROP

sudo iptables -P INPUT DROP sudo iptables -L

Als het verkeer niet overeenkomt met een van de opgegeven regels, wordt het verwijderd.

sudo apt-get install iptables-persistent

sudo systemctl netfilter-persistent inschakelen

De eerste regel installeert een stukje code waardoor de iptable-regels die we zojuist hebben gemaakt, blijvend zijn tussen herstarts. De tweede slaat de regels op nadat u ze hebt gewijzigd. Deze keer is het genoeg om de eerste uit te voeren. Als u de regels wijzigt, voert u de tweede uit om op te slaan. Iptable-regels zijn van kracht zodra u ze toevoegt. Als u het verknoeit en de toegang verliest, start u gewoon opnieuw op en degene die nog niet zijn opgeslagen, worden teruggezet.

Stap 6: Conclusie

Nu kunt u deze tunnel gebruiken vanaf elk apparaat of elke computer op hetzelfde netwerk. Verander gewoon de standaard gateway naar het IP-adres van uw Raspberry Pi. In mijn geval gebruiken beide Kodi-mediacentra (een slaapkamer en een woonkamer) deze verbinding, zodat ik mijn Zweedse afspeelkanalen kan streamen. Natuurlijk zijn er ook andere dingen waar je dit voor kunt gebruiken.

Houd er rekening mee dat, afhankelijk van de VPN-leverancier die je hebt gekozen en de snelheid van je internetverbinding, er trage prestaties kunnen zijn.

Als je vragen hebt of wilt dat ik iets verduidelijk, laat het me dan weten in de comments! Ga voor meer technische berichten naar mijn blog Hackviking!

Aanbevolen: