Cara menjalankan server OpenVPN Anda sendiri di Raspberry PI

Halo semuanya!

Dalam artikel singkat ini saya akan menjelaskan cara mengatur server VPN (Virtual Private Network) Anda sendiri pada Raspberry PI dengan OpenVPN. Setelah kami menyiapkan server, kami akan menyiapkan server obfuscation untuk menyamarkan lalu lintas kami yang menunjukkan bahwa kami menggunakan VPN. Ini akan membantu kami menghindari beberapa bentuk penyensoran.

Mengapa menggunakan VPN?

Pertama, mari kita bahas mengapa Anda mungkin ingin menggunakan server VPN:

  1. Hindari serangan man in the middle. Jika Anda memiliki pengguna jahat di jaringan lokal Anda - bahkan teman sekamar Anda - orang tersebut dapat memantau lalu lintas Anda yang tidak terenkripsi dan merusaknya.
  2. Sembunyikan aktivitas internet Anda dari ISP (Penyedia Layanan Internet) atau Universitas Anda, dalam kasus saya.
  3. Buka blokir layanan. Universitas saya memblokir semua paket UDP (User Datagram Protocol). Ini berarti saya tidak dapat menggunakan aplikasi apa pun yang berkomunikasi melalui UDP. Saya tidak dapat menggunakan klien email saya, bermain game, atau bahkan menggunakan Git!

Saya memutuskan untuk mengatur VPN di internet rumah saya menggunakan Raspberry Pi. Dengan cara ini saya dapat terhubung ke jaringan rumah saya selama saya di Universitas. Jika Anda membutuhkan server VPN di negara lain, Anda dapat membeli server pribadi virtual $ 5 / bulan dari DigitalOcean. Anda dapat menggunakan tautan rujukan saya untuk mendapatkan diskon $ 10 - itu adalah dua bulan VPN gratis. Tetapi Anda tidak harus menggunakannya jika Anda tidak mau.

Menginstal OpenVPN

Langkah ini sangat mudah, karena kami akan menggunakan skrip shell untuk melakukannya untuk Anda. Jadi, Anda hanya perlu "menekan" berikutnya dan menyelesaikannya.

Penginstalan akan memakan waktu lama, tergantung pada ukuran kunci yang Anda pilih. Di Raspberry Pi 3 Model B saya, butuh waktu sekitar 3 jam.

Silakan buka repositori ini dan kemudian ikuti instruksi

Angristan / OpenVPN-instal

OpenVPN-install - Siapkan server OpenVPN Anda sendiri di Debian, Ubuntu, Fedora CentOS, dan Arch Linux github.com

Jika Anda tidak tahu alamat IP server Anda, masukkan saja 0.0.0.0. Saya telah memilih 443untuk port dan TCP (Transmission Control Protocol) untuk protokol.

Catatan : Ini sangat penting karena universitas saya hanya mengizinkan port TCP / 80 dan TCP / 443 , sisanya diblokir. Juga Obfsproxy hanya bekerja dengan TCP, jadi pastikan Anda memilih TCP !

Setelah skrip selesai, Anda akan mendapatkan file .ovpn . Itu dapat diimpor ke klien VPN favorit Anda, dan semuanya akan bekerja di luar kotak.

Menguji koneksi

Impor file .ovpn di klien VPN Anda dan ubah ip 0.0.0.0ke ip lokal Raspberry PI Anda. Bergantung pada konfigurasi jaringan Anda, mungkin bentuknya 192.168.*.*.

Catatan: Ini hanya akan berfungsi jika Anda terhubung ke WiFi yang sama dengan Pi.

Saya telah mengkonfigurasi router saya sehingga PI selalu mendapatkan alamat IP yang dicadangkan. Anda mungkin harus memeriksa pengaturan router jika ingin melakukan hal serupa.

Jika koneksi berhasil, selamat, Anda sekarang memiliki server VPN! Tapi, Anda belum bisa mengaksesnya dari luar….

Jika Anda hanya menginginkan server OpenVPN tanpa proxy obfuscation, Anda dapat melompat ke Port Forwarding .

Pemasangan Proxy Obfuscation

Obfs4 adalah proxy pengacak. Ini menyamarkan lalu lintas internet Anda agar terlihat seperti kebisingan. Seseorang yang mengintip lalu lintas Anda tidak akan benar-benar tahu apa yang Anda lakukan, dan itu akan melindungi Anda dari serangan penyelidikan aktif yang digunakan oleh Great Firewall of China.

Catatan: Metode ini tidak akan berfungsi jika musuh Anda hanya mengizinkan lalu lintas yang masuk daftar putih :(

Mari instal server proxy sekarang.

0. Instal paket yang diperlukan:

apt-get update && apt-get install obfs4proxy
  1. Buat direktori yang akan menampung konfigurasi.
sudo mkdir -p /var/lib/tor/pt_state/obfs4

2. Buat file konfigurasi.

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

Di file konfigurasi, Anda akan menempelkan hal-hal berikut:

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 adalah alamat di mana proxy akan mendengarkan koneksi baru. Dalam kasus saya itu 0.0.0.0:444- mengapa 444 dan bukan 443? Nah, karena saya tidak ingin mengubah konfigurasi server OpenVPN yang saat ini mendengarkan pada 443. Selain itu, saya akan memetakan alamat ini nanti menjadi 443 menggunakan Port Forwarding.

TOR_PT_ORPORT harus mengarah ke server OpenVPN. Dalam kasus saya, server saya berjalan127.0.0.1:443

3. Buat file layanan SystemD.

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

Kemudian tempel konten berikut ke dalamnya:

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

Sekarang, pastikan OpenVPN sedang berjalan dan jalankan perintah berikut untuk memulai proxy dan mengaktifkannya untuk memulai saat boot.

sudo systemctl start obfs4proxysudo systemctl enable obfs4proxy

5. Simpan sertifikat KUNCI

Setelah layanan dimulai, jalankan perintah berikut dan simpan sertifikat KEY.

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

The key is of the form Bridge obfs4 : GERPRINT> cert=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.