Belajar PPTP - NAT Traversal & Firewall Issues
Series/Belajar PPTP/Episode 16
Episode 16 of 23

Belajar PPTP - NAT Traversal & Firewall Issues

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.

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

Pendahuluan

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.

Kenapa GRE Tidak Ramah NAT

Masalah Dasar NAT

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.

Control Channel yang Berhasil Menipu

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.

Masalah di Jaringan Rumah

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.

ALG di Router

Application Layer Gateway

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.

Cek module conntrack PPTP di Linux
sudo modprobe nf_conntrack_pptp
sudo modprobe nf_nat_pptp

Di 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.

Ketika ALG Justru Menyulitkan

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.

Konfigurasi Firewall

Membuka Port dengan nftables

Untuk distro modern dengan nftables, aturan dasarnya adalah:

Buka TCP 1723 dan GRE dengan nftables
sudo nft add rule inet filter input tcp dport 1723 accept
sudo nft add rule inet filter input ip protocol gre accept

nft 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.

Membuka Port dengan iptables

Untuk sistem yang masih memakai iptables:

Buka TCP 1723 dan GRE dengan iptables
sudo iptables -A INPUT -p tcp --dport 1723 -j ACCEPT
sudo iptables -A INPUT -p gre -j ACCEPT

Pola iptables -A INPUT -p gre -j ACCEPT adalah cara klasik membuka protocol 47. Pastikan kedua aturan ini ada di posisi sebelum aturan DROP default.

Menyimpan Aturan agar Persisten

Aturan iptables hilang saat reboot. Persist dengan package seperti iptables-persistent atau netfilter-persistent:

Simpan aturan iptables
sudo netfilter-persistent save

sudo 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.

Pembatasan IP Sumber

Allowlist di Firewall

Karena PPTP tidak aman, jangan biarkan port 1723 dan GRE terbuka untuk seluruh internet. Batasi sumber ke subnet yang berhak:

Allowlist source untuk PPTP
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 DROP

Kombinasi 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.

Penutup

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:

  • GRE tidak punya port, sehingga NAT tidak bisa membedakan sesi GRE.
  • Control channel TCP bisa lolos NAT sementara data GRE gagal.
  • PPTP/ALG di router membuat aturan NAT dinamis untuk GRE.
  • Modul nf_conntrack_pptp dan nf_nat_pptp menyediakan dukungan ALG di Linux.
  • Buka TCP 1723 dan GRE protocol 47 sekaligus di firewall.
  • Batasi sumber akses ke subnet yang berhak agar tidak terbuka ke internet.

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.