Hvordan kjøre din egen OpenVPN-server på en Raspberry PI

Hei alle sammen!

I denne korte artikkelen vil jeg forklare hvordan du konfigurerer din egen VPN-server (Virtual Private Network) på en Raspberry PI med OpenVPN. Etter at vi har konfigurert serveren, vil vi sette opp en obfuscation-server for å skjule trafikken vår, noe som indikerer at vi bruker en VPN. Dette vil hjelpe oss å unngå en form for sensur.

Hvorfor bruke VPN?

La oss først snakke om hvorfor du kanskje vil bruke en VPN-server:

  1. Unngå mann i midten angrep. Hvis du har en ondsinnet bruker i ditt lokale nettverk - til og med romkameraten din - kan personen overvåke ukryptert trafikk og tukle med den.
  2. Skjul internettaktiviteten din fra din ISP (Internet Service Provider) eller University, i mitt tilfelle.
  3. Fjern blokkering av tjenester. Mitt universitet blokkerer alle UDP-pakker (User Datagram Protocol). Dette betyr at jeg ikke kan bruke noe program som kommuniserer via UDP. Jeg kan ikke bruke e-postklienten min, spille spill eller til og med bruke Git!

Jeg bestemte meg for å sette opp en VPN på hjemme-internett mitt ved hjelp av en Raspberry Pi. På denne måten kan jeg koble til hjemmenettverket mitt mens jeg er på universitetet. Hvis du trenger en VPN-server i et annet land, kan du kjøpe en virtuell privat server på 5 $ / måned fra DigitalOcean. Du kan bruke henvisningskoblingen min for å få $ 10 avslag - det er to måneder med gratis VPN. Men du trenger ikke å bruke den hvis du ikke vil.

Installere OpenVPN

Dette trinnet er veldig enkelt, fordi vi vil bruke et skallskript for å gjøre det for deg. Så du må bare “trykke” neste og fullføre.

Installasjonen vil ta lang tid, avhengig av nøkkelstørrelsen du valgte. På Raspberry Pi 3 Model B tok det omtrent 3 timer.

Gå til dette depotet og følg deretter instruksjonene

Angristan / OpenVPN-installasjon

OpenVPN-install - Sett opp din egen OpenVPN-server på Debian, Ubuntu, Fedora CentOS og Arch Linux github.com

Hvis du ikke vet IP-adressen til serveren din, er det bare å sette 0.0.0.0. Jeg har valgt 443porten og TCP (Transmission Control Protocol) for protokollen.

Merk : Dette er veldig viktig fordi universitetet mitt bare tillater TCP / 80 og TCP / 443- porter, resten er ganske blokkert. Også Obfsproxy fungerer bare med TCP, så sørg for at du valgte TCP !

Etter at skriptet er ferdig, får du en .ovpn- fil. Det kan importeres til din favoritt VPN-klient, og alt skal fungere rett ut av boksen.

Tester tilkoblingen

Importer .ovpn-filen i VPN-klienten din, og endre ip 0.0.0.0til den lokale ip på Raspberry PI. Avhengig av nettverkskonfigurasjonen kan det være av skjemaet 192.168.*.*.

Merk: Dette fungerer bare hvis du er koblet til samme WiFi som Pi er.

Jeg har konfigurert ruteren min slik at PI alltid får en reservert IP-adresse. Du må kanskje sjekke ruterinnstillingene dine hvis du vil gjøre noe lignende.

Hvis forbindelsen lykkes, gratulerer, du har nå en VPN-server! Men du har ikke tilgang til det utenfra ... ennå.

Hvis du bare vil ha en OpenVPN-server uten obfuscation-proxyen, kan du hoppe til Port Forwarding .

Installasjon av forvirring proxy

Obfs4 er en krypterende proxy. Det forkledner internettrafikken din for å ligne støy. Noen som lurer på trafikken din, vet ikke hva du gjør, og det vil beskytte deg mot aktive sonderingsangrep som brukes av den store brannmuren i Kina.

Merk: Denne metoden fungerer ikke hvis motstanderen din bare tillater godkjent trafikk :(

La oss installere proxy-serveren nå.

0. Installer den nødvendige pakken:

apt-get update && apt-get install obfs4proxy
  1. Opprett en katalog som inneholder konfigurasjonen.
sudo mkdir -p /var/lib/tor/pt_state/obfs4

2. Opprett konfigurasjonsfilen.

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

I konfigurasjonsfilen vil du lime inn 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 adressen proxyen vil lytte etter nye forbindelser på. I mitt tilfelle er det det 0.0.0.0:444- hvorfor 444 og ikke 443? Vel, fordi jeg ikke vil endre OpenVPN-serverkonfigurasjonen som for øyeblikket lytter på 443. Dessuten vil jeg kartlegge denne adressen senere til 443 ved hjelp av Port Forwarding.

TOR_PT_ORPORT skal peke på OpenVPN-serveren. I mitt tilfelle kjører serveren min127.0.0.1:443

3. Opprett en SystemD-tjenestefil.

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

Lim deretter inn følgende innhold 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.

Forsikre deg om at OpenVPN kjører og kjør følgende kommandoer for å starte proxyen og aktivere den ved oppstart.

sudo systemctl start obfs4proxysudo systemctl enable obfs4proxy

5. Lagre sert Nøkkel

Etter at tjenesten har startet, kjør følgende kommando og lagre sert Nøkkel.

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ørsmål, slå meg opp på Twitter.