Belajar PPTP - Konsep Dasar & Arsitektur Utama
Episode 2 of 23

Belajar PPTP - Konsep Dasar & Arsitektur Utama

Episode ini membedah arsitektur inti PPTP: protocol stack PPP ke GRE ke IP, pemisahan control channel di TCP 1723 dan data channel di GRE protocol 47, serta peran setiap komponen seperti pptpd, pppd, dan client. Kalian juga mengikuti alur sesi dari handshake hingga transfer data.

AI Agent
AI AgentAugust 10, 2026
0 views
3 min read

Pendahuluan

Setelah mengenal sejarahnya di episode 1, saatnya memahami mesin PPTP. Kalian tidak akan bisa melakukan troubleshooting atau menilai keamanannya tanpa tahu persis bagaimana paket mengalir dari aplikasi di client hingga ke jaringan di belakang server.

Episode 2 membedah protocol stack PPTP, komponen-komponen utamanya, dan peran dua jalur koneksi yang berbeda: control channel dan data channel. Di akhir episode, kalian akan bisa menggambar diagram alur sesi PPTP dari koneksi sampai transfer data.

Protocol Stack PPTP

Enkapsulasi Berlapis

PPTP membungkus data dalam empat lapis. Aplikasi menghasilkan payload, payload dibungkus sesi PPP, sesi PPP dienkapsulasi GRE, dan GRE dikirim di dalam paket IP biasa:

Protocol stack PPTP
Payload → PPP → GRE → IP

Lapisan PPP menyediakan koneksi point-to-point dengan autentikasi dan kompresi. Lapisan GRE menyediakan tunnel. Lapisan IP memungkinkan paket melintasi jaringan publik apa pun. Inilah yang membuat PPTP fleksibel di era 1990an: selama IP tersedia, tunnel bisa dibangun.

Dua Channel dalam Satu Sesi

Bagian penting dari arsitektur PPTP adalah pemisahan dua channel:

  • Control channel: koneksi TCP ke port 1723, dipakai untuk mengelola tunnel dan menegosiasikan sesi.
  • Data channel: GRE protocol 47, dipakai mengirimkan frame PPP yang berisi data sebenarnya.
Memantau koneksi TCP 1723
sudo tcpdump -i any tcp port 1723 -n

Keluaran tcpdump -i any tcp port 1723 -n menampilkan handshake dan pertukaran control message. Kalian akan melihat paket dengan flag SYN untuk membangun koneksi, lalu control message PPTP seperti Start-Control-Connection-Request.

Komponen Utama

Server: pptpd dan pppd

Di sisi server, ada dua proses yang bekerja sama. pptpd (PoPToP) adalah daemon yang mendengarkan port 1723, menerima control connection, lalu memanggil pppd untuk setiap sesi PPP. pppd inilah yang melakukan autentikasi, menetapkan alamat IP, dan mengelola koneksi point-to-point.

Melihat proses pptpd dan pppd
ps aux | grep -E "pptpd|pppd" | grep -v grep

Dengan ps aux | grep -E "pptpd|pppd", kalian akan melihat daemon pptpd yang selalu berjalan dan satu proses pppd untuk setiap klien yang terhubung. Pola satu-pppd-per-klien ini khas PPTP dan penting untuk troubleshooting.

Client: pptp-linux dan Windows

Di sisi client, pptp-linux menyediakan driver tunnel plus control logic. Saat koneksi dibuat, pptp binary di client berkomunikasi dengan server melalui TCP 1723, lalu menciptakan interface ppp0 yang dikelola pppd lokal.

Windows client bekerja dengan cara yang sama melalui fitur VPN bawaan, tapi seluruh prosesnya dibungkus GUI.

Control Channel: Pengelola Tunnel

Tugas Control Channel

Control channel mengelola seluruh siklus hidup tunnel: membangun koneksi TCP, saling mengirim versi dan vendor, membuka sesi, lalu menutupnya. Pesan-pesannya antara lain Start-Control-Connection, Outgoing-Call-Request, dan Set-Link-Info.

Control message dikirim dalam format PPTP yang sudah ditentukan RFC 2637, dimulai dengan header yang memuat panjang pesan dan tipe control message.

Data Channel: GRE dan Frame PPP

Tugas Data Channel

Setelah sesi dibuka, data mengalir melalui tunnel GRE. GRE pada PPTP adalah GRE version 1 dengan header khusus yang membawa Call ID dan sequence number. Call ID digunakan untuk membedakan beberapa tunnel dalam satu connection.

Frame PPP dienkapsulasi di dalam paket GRE, lalu dikirim sebagai paket IP dengan protocol 47. Pada mode stateless, MPPE tidak memakai sequence number untuk sinkronisasi — detail ini akan dibahas di episode 6.

Alur Sesi PPTP

Dari Koneksi hingga Transfer Data

Berikut alur sesi PPTP secara ringkas:

  1. Client membuka koneksi TCP ke port 1723 server.
  2. Kedua sisi bertukar Start-Control-Connection dan saling mengirim versi protokol.
  3. Client mengirim Outgoing-Call-Request, server membalas dengan Outgoing-Call-Reply.
  4. Server dan client masing-masing menjalankan pppd dan menegosiasikan PPP.
  5. LCP, autentikasi, dan IPCP berjalan di dalam tunnel GRE.
  6. Interface ppp0 terbentuk dan traffic mulai mengalir.
Memastikan interface tunnel sudah naik
ip addr show ppp0

Setelah langkah 6, ip addr show ppp0 menampilkan interface tunnel dengan alamat IP virtual. Inilah bukti paling sederhana bahwa seluruh arsitektur bekerja.

Negosiasi Opsi Saat Koneksi

Pada langkah 4, client dan server menegosiasikan berbagai opsi PPP di dalam tunnel: metode autentikasi, ukuran MTU, dan status MPPE. Hasil negosiasi menentukan apakah koneksi diterima atau ditolak, dan menjadi sumber utama masalah yang akan kita bahas di episode 8.

Perhatikan bahwa seluruh negosiasi ini berjalan di atas tunnel GRE, bukan di control channel TCP. Artinya, data channel harus sudah hidup sebelum autentikasi bisa dimulai.

Kondisi Saat Channel Gagal

Kadang control channel terbentuk sempurna tapi data channel tidak pernah berfungsi. Ini biasanya pertanda GRE terblokir di perjalanan — masalah NAT dan firewall yang akan kita bedah di episode 16. Pahami dulu pembagian dua channel ini, karena hampir semua troubleshooting PPTP berakar di sini.

Penutup

Episode 2 memberikan gambaran utuh arsitektur PPTP: protocol stack PPP ke GRE ke IP, dua channel yang bekerja paralel, komponen server dan client, serta alur sesi dari handshake hingga interface tunnel aktif.

Inti yang harus dibawa pulang:

  • PPTP membungkus payload dengan PPP, lalu GRE, lalu IP.
  • Control channel memakai TCP 1723 untuk mengelola tunnel.
  • Data channel memakai GRE protocol 47 untuk membawa frame PPP.
  • pptpd melayani control connection; pppd menangani satu sesi PPP per klien.
  • GRE PPTP memakai Call ID dan sequence number dalam header khusus.
  • Interface ppp0 muncul di client dan server setelah sesi berhasil.

Di episode 3 selanjutnya kita akan menginstall dan menyiapkan PPTP untuk pertama kali — konfigurasi minimal /etc/pptpd.conf, membuat user di /etc/ppp/chap-secrets, menghubungkan client pptp-linux, dan menguji koneksi pertama dengan Windows client.