Kako pokrenuti vlastiti OpenVPN poslužitelj na Raspberry PI

Pozdrav svima!

U ovom kratkom članku objasnit ću vam kako postaviti vlastiti VPN (Virtual Private Network) poslužitelj na Raspberry PI s OpenVPN. Nakon što postavimo poslužitelj, postavit ćemo poslužitelj za prikrivanje kako bismo prikrili svoj promet koji pokazuje da koristimo VPN. To će nam pomoći da izbjegnemo neki oblik cenzure.

Zašto koristiti VPN?

Prvo, razgovarajmo o tome zašto biste možda željeli koristiti VPN poslužitelj:

  1. Izbjegavajte čovjeka u napadima. Ako u vašoj lokalnoj mreži imate zlonamjernog korisnika - čak i vašeg sustanara - ta osoba može nadzirati vaš nešifrirani promet i petljati se u njega.
  2. Sakrijte svoje internetske aktivnosti od svog ISP-a (davatelja internetskih usluga) ili sveučilišta, u mom slučaju.
  3. Deblokirajte usluge. Moje sveučilište blokira sve UDP (User Datagram Protocol) pakete. To znači da ne mogu koristiti nijednu aplikaciju koja komunicira putem UDP-a. Ne mogu koristiti svoj klijent e-pošte, igrati igre ili čak koristiti Git!

Odlučio sam postaviti VPN na svom kućnom internetu pomoću Raspberry Pi-a. Na taj se način mogu povezati s matičnom mrežom dok sam na sveučilištu. Ako vam je potreban VPN poslužitelj u drugoj zemlji, možete kupiti virtualni privatni poslužitelj od 5 USD mjesečno od DigitalOcean. Možete upotrijebiti moju referalnu vezu kako biste dobili 10 USD popusta - to su dva mjeseca besplatnog VPN-a. Ali ne morate ga koristiti ako ne želite.

Instaliranje OpenVPN-a

Ovaj je korak zaista jednostavan, jer ćemo se za vas koristiti skriptom ljuske. Dakle, jednostavno morate sljedeći put "pritisnuti" i završiti.

Instalacija će potrajati dugo, ovisno o veličini tipke koju ste odabrali. Na mom Raspberry Pi 3 Model B trebalo je oko 3 sata.

Idite na ovo spremište i slijedite upute

Angristan / OpenVPN-install

OpenVPN-install - Postavite vlastiti OpenVPN poslužitelj na Debian, Ubuntu, Fedora CentOS i Arch Linux github.com

Ako ne znate IP adresu svog poslužitelja, samo stavite 0.0.0.0. Odabrao 443sam port i TCP (protokol kontrole prijenosa) za protokol.

Napomena : Ovo je vrlo važno jer moje sveučilište dopušta samo TCP / 80 i TCP / 443 portove, ostali su prilično blokirani. Također Obfsproxy radi samo s TCP-om, zato provjerite jeste li odabrali TCP !

Nakon završetka skripte dobit ćete datoteku .ovpn . Može se uvesti u vaš omiljeni VPN klijent, a sve bi trebalo raditi izvan okvira.

Testiranje veze

Uvezite .ovpn datoteku u svoj VPN klijent i promijenite ip 0.0.0.0u lokalni ip vašeg Raspberry PI. Ovisno o vašoj mrežnoj konfiguraciji, može biti oblika 192.168.*.*.

Napomena: Ovo će raditi samo ako ste povezani na isti WiFi kao što je i Pi.

Konfigurirao sam usmjerivač tako da PI uvijek dobiva rezerviranu IP adresu. Možda ćete morati provjeriti postavke usmjerivača ako želite učiniti nešto slično.

Ako je veza uspješna, čestitamo, sada imate VPN poslužitelj! Ali ne možete mu pristupiti izvana ... još uvijek.

Ako želite samo OpenVPN poslužitelj bez zamijenjenog proxyja, tada možete preskočiti na Prosljeđivanje priključaka .

Skrivanje određenih poteza proxy Instalacija

Obfs4 je kodirajući proxy. Prikriva vaš internetski promet da bi izgledao poput buke. Netko tko uhodi vaš promet, zapravo neće znati što radite i zaštitit će vas od aktivnih napada sondiranja koje koristi Veliki kineski vatrozid.

Napomena: Ova metoda neće raditi ako vaš protivnik dopušta samo promet s bijele liste :(

Instalirajmo sada proxy poslužitelj.

0. Instalirajte potreban paket:

apt-get update && apt-get install obfs4proxy
  1. Stvorite direktorij koji će sadržavati konfiguraciju.
sudo mkdir -p /var/lib/tor/pt_state/obfs4

2. Stvorite konfiguracijsku datoteku.

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

U konfiguracijsku datoteku zalijepit ćete sljedeće stvari:

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 is the address on which the proxy will listen for new connections. In my case it is it 0.0.0.0:444 — why 444 and not 443? Well, because I don’t want to change the OpenVPN server configuration which is currently listening on 443. Also, I will map this address later to 443 using Port Forwarding.

TOR_PT_ORPORT should point to the OpenVPN server. In my case, my server runs on 127.0.0.1:443

3. Create a SystemD service file.

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

Then paste the following contents into it:

[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 the Obfuscation proxy.

Now, make sure that OpenVPN is running and run the following commands in order to start the proxy and enable it to start on boot.

sudo systemctl start obfs4proxysudo systemctl enable obfs4proxy

5. Save the cert KEY

After the service has started, run the following command and save the cert KEY.

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/

If you have any questions hit me up on Twitter.