Membuat Raspberry Pi menjadi VPN Router

· 4 min read

Beberapa waktu lalu saya menerima email dengan judul Windscribe Router, prinsip dasarnya adalah sebuah router fisik yang dapat digunakan sebagai Hotspot yang terhubung dengan server VPN.

Kali ini kita akan membuat Raspberry PI supaya menjadi VPN Router.

Konsep utama , Raspberry PI akan kita seting supaya login sebagai Client OpenVPN dan menjadi internet Gateway.

Login sebagai OpenVPN Client di Raspberry PI
Aktifkan fungsi port forward di Raspberry PI
Tambahkan bridge untuk menghubungkan eth0 dan wlan0 di Raspberry PI
Ganti alamat Gateway pada perangkat yang akan terhubung ke internet dengan IP Raspberry PI

Konfigurasi Raspberry PI sebagai Client OpenVPN

Saya membuat server OpenVPN dengan mempergunakan certificate supaya tidak memerlukan username atau password ketika terhubung. Jika mempergunakan server OpenVPN yang memakai fungsi autentifikasi user dan password, maka silakan disesuaikan 🙂

Install openvpn dengan mengetik perintah apt-get install openvpn

Buat file konfigurasi di Raspberry PI di /etc/openvpn/client.conf dengan isi berikut :

client
dev tun
proto udp
remote 45.141.xxx.xxx 1194
ca /etc/openvpn/ca.crt
cert /etc/openvpn/client.crt
key /etc/openvpn/client.key
resolv-retry infinite
nobind
persist-key
persist-tun
comp-lzo
verb 3
auth-nocache
remote-cert-tls server

Dalam konfigurasi client ini, kita mempergunakan file ca.crt, client.crt, dan client.key yang didownload dari server vpn dan disimpan di Raspberry PI pada /etc/openvpn

* chmod 600 /etc/openvpn/client.key

Untuk melakukan koneksi ke server VPN, dapat dilakukan dengan perintah:

systemctl start openvpn@client

Untuk melihat status koneksi VPN, kita bisa memberikan perintah :

systemctl enable openvpn@client

Untuk melihat status koneksi VPN, kita bisa memberikan perintah :

systemctl status openvpn@client

Untuk melihat hasil deteksi IP dari Raspberry PI bisa dengan memakai perintah curl -S ifconfig.co yang jika sukses akan memunculkan ip server openvpn

Konfigurasi Port Forwarding di Raspberry PI

Uncomment baris net.ipv4.ip_forward=1 pada file /etc/sysctl.conf
Seting masquerade supaya traffic dilewatkan melalui tun0

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

Simpan iptables dengan perintah:
iptables-save > /etc/iptables.ipv4.nat

Supaya iptables dimuat ulang saat boot, maka tambahkan baris ini pada file /etc/rc.local :
iptables-restore < /etc/iptables.ipv4.nat

Konfigurasi Bridge pada Raspberry PI

Konfigurasi bridge agar akses internet antara eth0 dan wlan0 dihubungkan :

sudo apt-get install bridge-utils
sudo brctl addbr br0
sudo brctl addif br0 eth0

Tambahkan baris tersebut pada /etc/network/interfaces kemudian reboot

auto br0
iface br0 inet manual
bridge_ports eth0 wlan0

Jika tidak ada masalah, maka berikut adalah contoh hasil ifconfig :

ifconfig
br0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
ether b8:27:eb:df:5b:df txqueuelen 1000 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

eth0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
inet 192.168.1.50 netmask 255.255.255.0 broadcast 192.168.1.255
ether b8:27:eb:df:5b:df txqueuelen 1000 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (Local Loopback)
RX packets 2 bytes 78 (78.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 2 bytes 78 (78.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

tun0: flags=4305<UP,POINTOPOINT,RUNNING,NOARP,MULTICAST> mtu 1500
inet 10.8.0.6 netmask 255.255.255.255 destination 10.8.0.5
inet6 fe80::746f:3fe7:9346:a1f prefixlen 64 scopeid 0x20<link>
unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 txqueuelen 100 (UNSPEC)
RX packets 37 bytes 14663 (14.3 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 43 bytes 8405 (8.2 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

wlan0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.1.60 netmask 255.255.255.0 broadcast 192.168.1.255
ether 00:0f:00:5b:e9:92 txqueuelen 1000 (Ethernet)
RX packets 138 bytes 36353 (35.5 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 146 bytes 41172 (40.2 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

Dalam tutorial ini, IP Raspberry Pi adalah :
– 192.168.1.50 : LAN
– 192.168.1.60 : WiFi
– 10.8.0.6 : IP yang didapatkan setelah terhubung ke server openvpn

Seting Gateway pada perangkat lain

Berikut adalah contoh cara seting Gateway pada Laptop, karena Laptop saya memakai Wifi, maka setelah terhubung ke jaringan Wifi, saya hanya perlu merubah ip Gateway saja.

IPv4 Address : 192.168.1.210
IPv4 Subnet prefix length : 24
IPv4 Gateway : 192.168.1.60 (ip wifi Raspberry pi)
IPv4 DNS Servers : 8.8.8.8

Dalam tutorial ini, contoh pengaturan IPnya adalah :
– IP Laptop saya set manual ke 192.168.1.210
– Subnet prefix jika mempergunakan 255.255.255.0 maka diisi dengan prefix length 24
– Gateway diisi dengan IP Raspberry PI, dalam contoh ini adalah 192.168.1.60
– Preferred DNS saya memakai 8.8.8.8, bisa juga memakai dns lain

Setelah selesai melakukan perubahan pada konfigurasi IP Laptop, maka selanjutnya kita buka situs ipsaya.com untuk memerika apakah IP sudah berubah atau belum.

Gambar diatas adalah hasil deteksi dari browser tanpa mempergunakan Proxy ataupun menjalankan VPN di Laptop.

 

  • Semoga bermanfaat….
    Ditulis oleh Erawan Arif Nugroho, pada 3 November 2019