Membangun Server VPN di GNU/Linux Ubuntu 16.04 dengan pptp

Membangun Server VPN di GNU/Linux Ubuntu 16.04 dengan pptp

(Gambar thumbnail diambil dari freevpnservers.com)

Apa itu VPN ?. VPN merupakan singkatan dari Virtual Private Network. Ada baiknya jika ingin membaca dan mengetahui secara detil teori pada VPN bisa cek mencari pada link berikut duckduckgo.com. Sekilas melihat sudah cukup banyak pembahasan dan pengertian dari VPN. Jika ingin lebih detil lagi maka membaca RFC dari VPN dari IETF merupakan salah satu jalan untuk memahaminya. Mari kita tengok lebih lanjut.

Salah satu manfaat yang diperoleh dengan menggunakan VPN adalah memudahkan bagi kita untuk bekerja secara remote dari manapun dengan tetap menjadi satu kelas jaringan di kantor kita. Terutama bagi mereka para sysadmin yang bekerja tapi tidak selalu ngantor (seperti saya dulu dan sekarang). VPN juga bisa menjadi salah satu solusi apabila pengambil kebijakan melakukan pemblokiran situs yang biasa kita kunjungi (e.g: reddit.com).

Untuk menginstal perangkat lunak VPN server pada UNIX-like bisa menggunakan dua buah aplikasi open source. Pertama adalah OpenVPN sedangkan yang kedua adalah pptp. Artikel ini membahas bagaimana melakukan instalasi dan konfigurasi secara ringkas pptp. Lingkungan pengembangan saya menggunakan server GNU/Linux Ubuntu 16.04.1. Pembaca bisa membaca artikel ini Cara Instalasi GNU/Linux Lubuntu sebagai alternatif dari GNU/Linux Ubuntu. Apa bedanya GNU/Linux Ubuntu dengan GNU/Linux Lubuntu bisa cek artikel Mengenal GNU/Linux Lubuntu. Cek versi GNU/Linux kita dengan kode berikut:

andrey@cloudia:~$ lsb_releasa -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 16.04.1 LTS
Release:        16.04
Codename:       xenial

Selanjutnya lakukan instalasi pptpd:

Langkah 1: Instalasi dan Konfigurasi pptp

andrey@cloudia:~$ sudo apt install pptpd

Lebih lengkap bisa cek Gambar 1 berikut ini.

Gambar 1. Instalasi pptpd

Langkah selanjutnya adalah melakukan konfigurasi berkas /etc/pptpd.conf. Agar dapat berfungsi dengan baik dan saling terkoneksi antara alamat IP yang lokal dan yang remote maka dua buah parameter ini perlu diganti dengan alamat yang sesuai.

# isi berkas dari pptpd.conf

localip 10.0.0.1
remoteip 10.0.0.2-10.0.0.10

Parameter localip digunakan untuk menetapkan alamat IP yang akan digunakan pada server, adapun parameter remoteip ini adalah alamat IP yang akan kita gunakan agar dapat saling berkomunikasi antara alamat IP VPN server dengan komputer kita.

Setelah selesai mengisi berkas pada /etc/pptpd.conf, selanjutnya adalah melakukan konfigurasi user dan password untuk masuk ke dalam VPN server. Berkas yang perlu dikonfigurasi adalah /etc/ppp/chap-secrets. Buka berkas pada /etc/ppp/chap-secrets dengan editor kesukaan anda. Berikut adalah isinya.

# Secrets for authentication using CHAP
# client        server  secret                  IP addresses

Perhatikan baris kedua terdapat 4 buah kolom; client, server, secret, IP addresses. Ini adalah 4 parameter yang digunakan. Berikut contohnya.

budi pptpd cappucino *

Saya akan jelaskan maksud dari isinya. Parameter “budi” (tanpa koma) itu adalah client yakni username yang digunakan untuk masuk. Kemudian parameter service diisi pptpd dan secret disini adalah password yang digunakan untuk masuk ke dalam VPN server. Parameter ini kita gunakan “cappucino” (tanpa koma). Terakhir adalah tanda “*” (tanpa koma). Tanda bintang ini bermakna bahwa komputer kita bisa menggunakan alamat IP manapun yang diberikan pada parameter remoteip (ingat konfigurasi berkas /etc/pptpd.conf sebelumnya).

Langkah 2: Konfigurasi DNS server

Agar kita dapat mengakses website melalui komputer kita yang telah terhubung ke VPN server maka kita harus membuat sebuah aturan konfigurasi DNS yang terdapat di berkas /etc/ppp/pptpd-options. Dengan menggunakan editor kesayangan anda carilah parameter “ms-dns” (tanpa petik). Isikan sebagai berikut

ms-dns 8.8.8.8
ms-dns 8.8.4.4

Dua buah ini harus dihilangkan tanda pagar di depannya. Gambar 2 berikut lebih memperjelas.

Gambar 2. Konfigurasi DNS

Selanjutnya lakukan perintah berikut untuk menjalankan pptpd server.

service pptpd restart

Kemudian cek apakah program pptpd ini telah berjalan dengan perintah berikut.

ps ax | grep pptpd

Atau bisa juga dengan mengecek port yang terbuka pada komputer VPN server kita dengan perintah berikut.

netstat -nat | grep 1723

Kenapa angka 1723 ?. Angka tersebut merupakan nomor port yang dgunakan untuk membuka port 1723 pada server VPN kita. Contoh hasil lebih detil dapat dilihat Gambar 3 berikut ini.

Gambar 3. Port

Langkah 3: Konfigurasi IP Forward di Kernel

Langkah ketiga ini termasuk penting karena berfungsi untuk melanjutkan paket data yang ada di komputer VPN server ke komputer lokal kita. Konfigurasi berkas sysctl di /etc/sysctl.conf. Program sysctl digunakan untuk melakukan modifikasi parameter pada kernel. Ketikkan kode berikut pada shell.

sysctl -a

Maka akan muncul semua parameter kernel yang ada. Kita akan mengubah parameter net.ipv4.ip_forward yang tadinya bernilai 0 (yang berarti tidak diaktifkan) menjadi bernilai 1. Secara permanen kita bisa ubah dan taruh parameter kernel yang kita inginkan pada berkas /etc/sysctl.conf.

net.ipv4.ip_forward=1

Apabila kita berhasil mengubah / menambahkan parameter kernel tersebut secara permanen, selanjutnya adalah mengaktifkannya dengan mengetikkan perintah berikut:

sysctl -p

Contoh lebih lengkap bisa cek Gambar 4 berikut.

Gambar 4. Kernel parameter

Langkah 4 : Aturan NAT untuk iptables

Langkah terakhir dalam konfigurasi server VPN adalah dengan membuat aturan NAT (Network Address Translation) dengan iptables dan menyimpannya.

sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE && iptables-save
sudo iptables –table nat –append POSTROUTING –out-interface ppp0 -j MASQUERADE
sudo iptables -I INPUT -s 10.0.0.0/8 -i ppp0 -j ACCEPT
sudo iptables –append FORWARD –in-interface eth0 -j ACCEPT

Saya akan jelaskan secara ringkas sebagai berikut. Baris pertama dari aturan iptables digunakan untuk menterjemahkan alamat IP lokal yang kita gunakan menjadi IP publik pada server. Kemudian baris 2-4 berfungsi agar sesama IP lokal yang terkoneksi melalui VPN bisa saling berkomunikasi. Sampai disini telah selesai konfigurasi server VPN kita. Selanjutnya adalah melakukan uji coba apakah komputer kita bisa terhubung dengan VPN yang telah kita konfigurasi.

Lakukan pengujian dengan mencobanya koneksi dari komputer kita ke server VPN. Program VPN client yang digunakan bebas bisa apa saja. Karena saya menggunakan Windows 8.1 maka saya menggunakan program bawaannya. Silakan buka Control Panel => Network and Sharing Center => Set up a new connection or network => Connect to a workplace => No, Create a new connection => Use my Internet connection (VPN)

Masukkan alamat IP dari server VPN kita kemudian nama Destination Name. Destination Name hanya sebuah label yang bisa kita isi secara bebas sebagai sebuah nama koneksi. Selanjutnya pilih tombol Create dan selesai. Connect dengan server VPN kita dan lihat apakah berhasil. Apakah kita berhasil terkoneksi dengan server VPN dengan melihat melalui berkas log yang ada di /var/log/syslog. Contoh sebagai berikut

Jan 17 22:07:48 cloudia pppd[10159]: Plugin /usr/lib/pptpd/pptpd-logwtmp.so loaded.
Jan 17 22:07:48 cloudia pppd[10159]: pppd 2.4.7 started by root, uid 0
Jan 17 22:07:48 cloudia pppd[10159]: Using interface ppp0
Jan 17 22:07:48 cloudia pppd[10159]: Connect: ppp0 <–> /dev/pts/1
Jan 17 22:07:51 cloudia pppd[10159]: peer from calling number 133.27.81.77 authorized
Jan 17 22:07:52 cloudia kernel: [484974.151220] PPP MPPE Compression module registered
Jan 17 22:07:52 cloudia pppd[10159]: MPPE 128-bit stateless compression enabled
Jan 17 22:07:54 cloudia pppd[10159]: found interface eth1 for proxy arp
Jan 17 22:07:54 cloudia pppd[10159]: local IP address 10.130.43.154
Jan 17 22:07:54 cloudia pppd[10159]: remote IP address 10.130.43.155

Komputer kita telah terkoneksi dengan server VPN yang telah kita konfigurasi. Selamat mencoba.

Leave a Reply

Your email address will not be published. Required fields are marked *