PPTP adalah kependekan dari Point-toPoint Tunneling Protocol yang merupakan bahasa yang membuat komputer dapat berkomunikasi antara satu dengan yang lainnya dengan berdasarkan aturan-aturan tertentu. Aturan komunikasi tersebut memungkinkan terjadinya komunikasi pribadi yang lebih luas dengan cara melakukan tunneling yang dilakukan melewati jaringan publik yang tidak aman dan berperan sebagai VPN.
PPTP dibuat pada 1999 dan merupakan salah satu protokol VPN paling tua. Meskipun begitu sampai sekarang masih ada orang yang menggunakan PPTP. Protokol ini dikembangkan Microsoft dan sudah digunakan oleh sistem operasi Windows 95. Sekarang hampir semua perangkat, platform seluler, serta dekstop sudah mendukung protokol PPTP.
Untuk postingan kali ini saya ingin membahas bagaimana cara konfigurasi PPTP disisi client dengan device menggunakan container Docker dengan image Ubuntu 20.04
Adapun sebelum konfigurasi PPTP pada client, pastikan PPTP Server nya sudah tersedia, atau jika belum, untuk konfigurasi PPTP Servernya, bisa dilihat pada link berikut : Konfigurasi PPTP Server pada Ubuntu
Langsung saja kita masuk ke langkah-langkah konfigurasi PPTP Client pada container
1. Install Docker pada host, kebetulan host nya saya menggunakan Ubuntu 18.04, panduan instalasi docker-ce bisa dilihat di link berikut https://www.digitalocean.com/community/tutorials/how-to-install-and-use-docker-on-ubuntu-18-04
2. Secara default, docker menggunakan network bridge, salah satu masalah yang terjadi jika menggunakan network bridge untuk PPTP ini yaitu network bridge tidak mendukung protokol GRE yang dibutuhkan pada PPTP sehingga dipastikan container dengan network bridge tidak akan bisa koneksi ke PPTP server. Solusi yang tersedia yaitu bisa menggunakan network host atau bisa juga menggunakan Macvlan, jadi kita gunakan macvlan saja, create dahulu network macvlan nya
docker network create -d macvlan --subnet=192.168.8.0/24 --gateway=192.168.8.250 -o parent=ens160 pub_net
Catatan :
subnet : isi dengan subnet network yang sama dengan host, misal IP host 192.168.8.20/24, maka subnet untuk macvlan diset 192.168.8.0/24
gateway : isi dengan gateway yang sama dengan host
parent : isi sesuai dengan nama interface yang ada pada host, bisa dicek melalui command ifconfig
3. Selanjutnya create container sebagai PPTP Client
docker run -dit --net=pub_net --ip=192.168.8.63 --restart always -e "IP_PPTP_SERVER=192.123.123.123" -e "USERNAME_PPTP=client1" -e "PASSWORD_PPTP=rahasiapptpd1" --name=pptp-client --hostname=pptp-client1 --cap-add=NET_ADMIN --device=/dev/ppp --privileged=true -v /dev:/dev -v /lib/modules:/lib/modules rzpratama/pptp-client-ubuntu:20.04
Catatan : Silakan ubah dan sesuaikan value pada environment berikut, sesuai dengan konfigurasi pada PPTP Server masing-masing
IP_PPTP_SERVER=
USERNAME_PPTP=
PASSWORD_PPTP=
4. Jika proses create container sudah selesai, selanjutnya cek status container tersebut apakah sudah running atau belum, sekalian cek container ID nya dengan menggunakan docker ps
root@hostclient:/srv# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
1cd18ed1a5aa rzpratama/pptp-client-ubuntu:20.04 "/bin/sh -c 'sed -i …" 13 seconds ago Up 10 seconds pptp-client
5. Pada container tersebut, sudah di set autoconnect ke PPTP server jika value pada environment sesuai dengan kredential yang ada pada PPTP server, untuk mengecek apakah sudah terkoneksi ke PPTP atau belum, bisa dicek dengan command berikut pada host
docker exec -it 1cd18ed1a5aa ifconfig
Berikut hasilnya, sudah muncul interface baru yaitu ppp0, dengan IP 172.16.11.11
root@hostclient1:/srv# docker exec -it 1cd18ed1a5aa ifconfig eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 192.168.8.63 netmask 255.255.255.0 broadcast 192.168.8.255 ether 02:42:c0:a8:08:3f txqueuelen 0 (Ethernet) RX packets 61 bytes 5784 (5.7 KB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 19 bytes 1600 (1.6 KB) 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 loop txqueuelen 1000 (Local Loopback) 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 ppp0: flags=4305<UP,POINTOPOINT,RUNNING,NOARP,MULTICAST> mtu 1496 inet 172.16.11.11 netmask 255.255.255.255 destination 172.16.11.1 ppp txqueuelen 3 (Point-to-Point Protocol) RX packets 6 bytes 84 (84.0 B) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 6 bytes 102 (102.0 B) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
6. Selanjutnya test ping ke internet dan cek IP publik yang muncul, pastikan yang muncul yaitu IP publik dari PPTP Server
root@hostclient:/srv# docker exec -it 1cd18ed1a5aa ping google.com PING google.com (216.239.38.120): 56 data bytes 64 bytes from 216.239.38.120: icmp_seq=0 ttl=112 time=17.392 ms 64 bytes from 216.239.38.120: icmp_seq=1 ttl=112 time=16.317 ms 64 bytes from 216.239.38.120: icmp_seq=2 ttl=112 time=17.160 ms root@hostclient:/srv# docker exec -it 1cd18ed1a5aa curl ifconfig.co 192.123.123.123
Jika hal diatas sudah berhasil, maka konfigurasi PPTP Client pada Container Docker sudah selesai
Mungkin cukup sekian, semoga bermanfaat
Rizky Pratama. Tinggal di Bekasi, Jawa Barat. Seorang IT di salah satu perusahaan IT. Pengguna Mac, Linux dan Windows
Selain sebagai penulis di blog ini, saya juga penulis di blog saya yang lain, yaitu https://pratama.biz.id