Episode ini membahas masalah klasik PPTP di belakang NAT: kenapa GRE tidak ramah NAT, peran ALG di router, dukungan conntrack pptp di Linux, konfigurasi firewall dengan iptables dan nftables, serta pembatasan IP sumber untuk memperketat akses.

PPTP memiliki masalah yang sudah terkenal sejak awal: dia tidak bekerja dengan baik di belakang NAT. Banyak koneksi gagal bukan karena konfigurasi salah, melainkan karena router di tengah tidak tahu cara memperlakukan GRE.
Episode 16 menjelaskan kenapa GRE tidak ramah NAT, bagaimana router mengakali masalah ini dengan ALG, dukungan bawaan Linux melalui conntrack pptp, serta cara mengonfigurasi firewall dengan iptables dan nftables.
NAT bekerja dengan menerjemahkan alamat dan port. Ia mengenali sesi lewat tuple seperti IP sumber, IP tujuan, port sumber, dan port tujuan. Masalahnya, GRE tidak punya port — ia hanya punya protocol number 47.
Akibatnya, router NAT tidak bisa membedakan sesi GRE yang satu dengan yang lain. Ketika dua klien di belakang NAT yang sama mencoba membuat tunnel PPTP ke server yang sama, router tidak tahu paket GRE milik siapa, dan koneksi menjadi kacau.
Kadang kontrol TCP 1723 berjalan normal tapi data GRE tidak pernah sampai. Ini pola khas: control channel adalah TCP biasa yang lolos NAT, sedangkan data channel GRE gagal karena tidak ada sesi NAT yang cocok.
Kasus paling umum terjadi di jaringan rumah: router menjalankan NAT, dan klien di belakangnya mencoba terhubung ke server PPTP kantor. Koneksi TCP 1723 berhasil, lalu GRE macet karena router tidak membuat entri NAT untuk protocol 47.
Ini alasan utama kenapa PPTP sering "tidak jalan" dari rumah padahal bekerja dari kantor yang langsung terhubung internet. Masalahnya bukan di konfigurasi klien, melainkan di perangkat di tengah yang tidak mengenali sesi GRE — dan solusinya hampir selalu ada di pengaturan router, bukan di file peers.
Untuk menyelesaikan masalah ini, banyak router menyediakan PPTP/ALG — sebuah modul yang mengenali paket control PPTP dan membuat aturan NAT dinamis untuk GRE yang terkait.
sudo modprobe nf_conntrack_pptp
sudo modprobe nf_nat_pptpDi Linux, dukungan ALG PPTP disediakan modul nf_conntrack_pptp dan nf_nat_pptp. modprobe nf_conntrack_pptp memungkinkan conntrack mengikuti koneksi PPTP dan membuat entri NAT untuk GRE secara otomatis. Di router komersial, fitur yang setara biasanya bernama PPTP ALG atau PPTP Passthrough.
Beberapa router menerapkan ALG yang buggy dan justru merusak koneksi. Jika PPTP tidak bisa terhubung di belakang router tertentu, uji dengan menonaktifkan PPTP ALG di pengaturan router. Ini adalah langkah troubleshooting yang sering menyelesaikan masalah.
Untuk distro modern dengan nftables, aturan dasarnya adalah:
sudo nft add rule inet filter input tcp dport 1723 accept
sudo nft add rule inet filter input ip protocol gre acceptnft add rule inet filter input tcp dport 1723 accept menerima control channel, dan baris kedua menerima data channel GRE. Keduanya wajib ada — lupa membuka GRE adalah penyebab paling umum tunnel mati.
Untuk sistem yang masih memakai iptables:
sudo iptables -A INPUT -p tcp --dport 1723 -j ACCEPT
sudo iptables -A INPUT -p gre -j ACCEPTPola iptables -A INPUT -p gre -j ACCEPT adalah cara klasik membuka protocol 47. Pastikan kedua aturan ini ada di posisi sebelum aturan DROP default.
Aturan iptables hilang saat reboot. Persist dengan package seperti iptables-persistent atau netfilter-persistent:
sudo netfilter-persistent savesudo netfilter-persistent save menyimpan aturan yang sedang aktif ke file yang dibaca ulang saat boot. Tanpa langkah ini, server PPTP akan berhenti menerima koneksi setelah reboot — temuan klasik saat troubleshooting yang ternyata murni masalah persistensi.
Karena PPTP tidak aman, jangan biarkan port 1723 dan GRE terbuka untuk seluruh internet. Batasi sumber ke subnet yang berhak:
sudo iptables -A INPUT -p tcp --dport 1723 -s 203.0.113.0/24 -j ACCEPT
sudo iptables -A INPUT -p gre -s 203.0.113.0/24 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 1723 -j DROP
sudo iptables -A INPUT -p gre -j DROPKombinasi aturan di atas hanya menerima PPTP dari 203.0.113.0/24 dan menolak sisanya. Ini adalah salah satu langkah hardening dari episode 15 yang dipasangkan langsung dengan kebutuhan membuka port.
Episode 16 menjelaskan misteri koneksi PPTP yang gagal di belakang NAT: GRE yang tidak punya port, peran ALG, dukungan conntrack pptp di Linux, serta cara membuka dan membatasi akses di iptables maupun nftables.
Inti yang harus dibawa pulang:
nf_conntrack_pptp dan nf_nat_pptp menyediakan dukungan ALG di Linux.Di episode 17 selanjutnya kita akan membahas performance dan benchmarking PPTP — karakteristik kinerja, overhead enkripsi MPPE, pengukuran throughput dengan iperf3, serta perbandingan dengan OpenVPN dan WireGuard.