Sådan kører du din egen OpenVPN-server på en Raspberry PI

Hej allesammen!

I denne korte artikel vil jeg forklare, hvordan du opsætter din egen VPN-server (Virtual Private Network) på en Raspberry PI med OpenVPN. Når vi har konfigureret serveren, opretter vi en obfuscation-server for at skjule vores trafik, hvilket indikerer, at vi bruger en VPN. Dette vil hjælpe os med at undgå en eller anden form for censur.

Hvorfor bruge en VPN?

Lad os først tale om, hvorfor du måske vil bruge en VPN-server:

  1. Undgå mand i midten angreb. Hvis du har en ondsindet bruger på dit lokale netværk - selv din værelseskammerat - er den person i stand til at overvåge din ukrypterede trafik og manipulere med den.
  2. Skjul din internetaktivitet for din internetudbyder (internetudbyder) eller universitet, i mit tilfælde.
  3. Fjern blokering af tjenester. Mit universitet blokerer alle UDP-pakker (User Datagram Protocol). Dette betyder, at jeg ikke kan bruge nogen applikation, der kommunikerer via UDP. Jeg kan ikke bruge min e-mail-klient, spille spil eller endda bruge Git!

Jeg besluttede at konfigurere en VPN på mit hjeminternet ved hjælp af en Raspberry Pi. På denne måde kan jeg oprette forbindelse til mit hjemmenetværk, mens jeg er på universitetet. Hvis du har brug for en VPN-server i et andet land, kan du købe en virtuel privat server på 5 $ / måned fra DigitalOcean. Du kan bruge mit henvisningslink for at få $ 10 i rabat - det er to måneders gratis VPN. Men du behøver ikke bruge det, hvis du ikke vil.

Installation af OpenVPN

Dette trin er virkelig let, fordi vi bruger et shell-script til at gøre det for dig. Så du skal bare ”trykke” næste og afslutte.

Installationen tager lang tid afhængigt af den valgte nøglestørrelse. På min Raspberry Pi 3 Model B tog det cirka 3 timer.

Gå til dette arkiv, og følg derefter instruktionerne

Angristan / OpenVPN-installation

OpenVPN-installation - Opret din egen OpenVPN-server på Debian, Ubuntu, Fedora CentOS og Arch Linux github.com

Hvis du ikke kender IP-adressen på din server, skal du bare sætte det 0.0.0.0. Jeg har valgt 443porten og TCP (Transmission Control Protocol) til protokollen.

Bemærk : Dette er meget vigtigt, fordi mit universitet kun tillader TCP / 80- og TCP / 443- porte, resten er stort set blokeret. Også Obfsproxy fungerer kun med TCP, så sørg for at du valgte TCP !

Når scriptet er færdigt, får du en .ovpn- fil. Det kan importeres til din foretrukne VPN-klient, og alt skal fungere ud af kassen.

Test af forbindelsen

Importer .ovpn-filen i din VPN-klient, og skift ip 0.0.0.0til den lokale ip på din Raspberry PI. Afhængigt af din netværkskonfiguration kan det være af formularen 192.168.*.*.

Bemærk: Dette fungerer kun, hvis du har forbindelse til den samme WiFi som Pi er.

Jeg har konfigureret min router, så PI får altid en reserveret IP-adresse. Du skal muligvis tjekke dine routerindstillinger, hvis du vil gøre noget lignende.

Hvis forbindelsen lykkes, tillykke, du har nu en VPN-server! Men du kan ikke få adgang til det udefra ... endnu.

Hvis du kun vil have en OpenVPN-server uden obfuscation-proxyen, kan du springe til portvideresendelse .

Installering af obfuscation- proxy

Obfs4 er en krypterende proxy. Det forklæder din internettrafik til at ligne støj. En person, der snopper på din trafik, ved ikke rigtig, hvad du laver, og det vil beskytte dig mod aktive sonderingsangreb, der bruges af den kinesiske store firewall.

Bemærk: Denne metode fungerer ikke, hvis din modstander kun tillader hvidlistet trafik :(

Lad os installere proxyserveren nu.

0. Installer den påkrævede pakke:

apt-get update && apt-get install obfs4proxy
  1. Opret en mappe, der indeholder konfigurationen.
sudo mkdir -p /var/lib/tor/pt_state/obfs4

2. Opret konfigurationsfilen.

sudo nano /var/lib/tor/pt_state/obfs4/obfs4.config

I konfigurationsfilen indsætter du følgende ting:

TOR_PT_MANAGED_TRANSPORT_VER=1TOR_PT_STATE_LOCATION=/var/lib/tor/pt_state/obfs4TOR_PT_SERVER_TRANSPORTS=obfs4TOR_PT_SERVER_BINDADDR=obfs4-0.0.0.0:444TOR_PT_ORPORT=127.0.0.1:443

TOR_PT_SERVER_BINDADDR er den adresse, som proxyen vil lytte efter nye forbindelser på. I mit tilfælde er det det 0.0.0.0:444- hvorfor 444 og ikke 443? Nå, fordi jeg ikke vil ændre konfigurationen af ​​OpenVPN-serveren, som i øjeblikket lytter til 443. Jeg vil også kortlægge denne adresse senere til 443 ved hjælp af Port Forwarding.

TOR_PT_ORPORT skal pege på OpenVPN-serveren. I mit tilfælde kører min server127.0.0.1:443

3. Opret en SystemD-servicefil.

sudo nano /etc/systemd/system/obfs4proxy.service

Indsæt derefter følgende indhold i det:

[Unit]Description=Obfsproxy Server[Service]EnvironmentFile=/var/lib/tor/pt_state/obfs4/obfs4.configExecStart=/usr/bin/obfs4proxy -enableLogging true -logLevelStr INFO[Install]WantedBy=multi-user.target

4. Start obfuscation-proxyen.

Sørg nu for, at OpenVPN kører, og kør følgende kommandoer for at starte proxyen og aktivere den til at starte ved opstart.

sudo systemctl start obfs4proxysudo systemctl enable obfs4proxy

5. Gem certifikatnøglen

Når tjenesten er startet, skal du køre følgende kommando og gemme certifikatnøglen.

cat /var/lib/tor/pt_state/obfs4/obfs4_bridgeline.txt

The key is of the form Bridge obfs4 : GERPRINT> c ert=KEY iat-mode=0 . You will need it when you’re connecting to the VPN.

6. Testing the connections.

Open up your VPN client and change the ip from 443 to 444 in order to connect to the proxy instead of the OpenVPN server.

After that, find the Pluggable Transport option in your OpenVPN client and see if it supports obfs4.

If everything works, then you’re all set! Congratulations! Only a few more things to tweak before using this VPN from the outside world.

Port Forwarding

In order to access the OpenVPN server from the outside world we need to unblock the ports, because they are most likely blocked. As you remember, I have reserved my PI’s IP address on my router to always be 192.168.1.125 so it doesn’t change if the PI disconnects or if the router reboots.

This way I have defined the following rules in my Port Forwarding table:

The outside port 443 will point to the obfuscation’s server port 444. If you don’t have an obfuscation server, then leave 443->443.

The port 25 will point to the PI’s SSH port 22. This is only for my own convenience.

In case I want to access the OpenVPN server directly without the obfuscation proxy, I have created a rule 444->443

The service port is the OUTSIDE port that will be used with your PUBLIC IP address. To find your public IP, use a service like whatsmyip.com.

The internal port is the INSIDE port. It can be used only when you are connected to the network.

Note: The first rule is saying redirect all the connections from PUBLIC_IP:443 to 192.168.1.125:444

Testing

  1. Find your public IP and replace your old IP with the public IP in the .ovpn file or in the VPN client.
  2. Connect to the VPN.

That’s it.

Dynamic DNS

In most cases, your IP will change because it’s a dynamic IP. A way to overcome this is to create a small program on the PI that saves your IP and sends you an email every day or so. You may also store the IP in an online database such as Firebase.

My router has Dynamic DNS setting. This way I can use a service provider like NoIP and get a domain like example.no-ip.com that will always point to my public IP address.

Other Resources:

  • A Childs Garden Of Pluggable Transports
  • Viscosity-Obsfurcation/
  • //www.pluggabletransports.info/transports/

Hvis du har spørgsmål, slå mig op på Twitter.