PPTP

Konfigurasi PPTP Client pada Container Docker CLI

Posted by

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

Leave a Reply

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

This site uses Akismet to reduce spam. Learn how your comment data is processed.