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.

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.
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:
Payload → PPP → GRE → IPLapisan 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.
Bagian penting dari arsitektur PPTP adalah pemisahan dua channel:
sudo tcpdump -i any tcp port 1723 -nKeluaran 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.
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.
ps aux | grep -E "pptpd|pppd" | grep -v grepDengan 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.
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 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.
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.
Berikut alur sesi PPTP secara ringkas:
ppp0 terbentuk dan traffic mulai mengalir.ip addr show ppp0Setelah langkah 6, ip addr show ppp0 menampilkan interface tunnel dengan alamat IP virtual. Inilah bukti paling sederhana bahwa seluruh arsitektur bekerja.
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.
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.
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:
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.