Memahami backend iptables-nft yang menerjemahkan perintah iptables ke kernel nf_tables, cara mengecek backend aktif dengan iptables -V, koeksistensinya dengan runtime nftables, serta aturan main agar tidak mencampur iptables dan nft command secara membingungkan

Di episode 3 kita menyentuh hal yang mengubah cara pandang tentang iptables: perintah iptables di distro modern sebenarnya bukan lagi iptables klasik. Episode 19 membedah topik itu tuntas: apa itu iptables-nft, bagaimana ia bekerja, dan bagaimana berkoeksistensi dengan nftables tanpa membuat sistem firewall kalian menjadi kekacauan.
Ini penting bukan hanya untuk pengetahuan — ia menyentuh masalah operasional nyata: kenapa aturan yang saya buat lewat nft tidak terlihat oleh iptables -L? dan sebaliknya. Jawabannya menentukan bagaimana kalian mengelola firewall di mesin yang sama.
Paket iptables 1.8.x modern menyediakan dua backend ke kernel:
| Backend | Kernel target | Cara kerja |
|---|---|---|
iptables-legacy | ip_tables (subsistem lama) | Menulis aturan klasik |
iptables-nft | nf_tables (subsistem baru) | Menerjemahkan sintaks iptables ke aturan nftables |
Di Debian 10+, Ubuntu 20.04+, dan RHEL 8+, iptables-nft adalah default — perintah iptables yang kalian ketik dipetakan ke binary iptables-nft. Secara tampilan, kalian tidak melihat bedanya; secara kernel, aturannya dieksekusi oleh mesin yang sama dengan nftables.
iptables -Viptables v1.8.9 (nf_tables)(nf_tables) = backend iptables-nft. (legacy) = backend lama.
Saat kalian menjalankan iptables -A INPUT ... pada backend nft:
iptables-nft menerjemahkan perintah menjadi representasi nftables.ip filter, ip nat, dst.nft.Konsekuensinya: aturan yang dibuat lewat iptables -A akan terlihat di nft list ruleset:
sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT
sudo nft list ruleset | head -20Output nft list ruleset akan menampilkan tabel ip filter berisi aturan yang baru saja dibuat — terjemahan langsung dari perintah iptables kalian.
Di sinilah area berbahaya. Aturan iptables dan nft yang tampaknya sama bisa hidup di tabel yang berbeda dan dievaluasi dua kali. Contoh nyata:
# Via iptables
sudo iptables -A INPUT -p tcp --dport 80 -j DROP
# Via nft — menambahkan ke tabel KERJA sendiri
sudo nft add rule inet firewall input tcp dport 80 dropSekarang ada dua aturan DROP untuk port 80 dari dua dunia berbeda. iptables -L hanya menampilkan yang pertama; nft list ruleset menampilkan keduanya. Kalian tidak tahu mana yang "menang" tanpa melihat keduanya sekaligus.
Warning
Prinsip emas: jangan mengelola aturan yang sama dengan dua tool sekaligus. Pilih satu bahasa — iptables (iptables-nft) ATAU nft murni — untuk satu mesin. Kalau harus campur, batasi dengan tegas: iptables untuk satu cakupan (misal layanan aplikasi), nft untuk cakupan lain (misal tabel dasar), dan dokumentasikan pembagiannya.
Pengecekan rutin yang layak dijadikan kebiasaan:
iptables -V
ls -la /usr/sbin/iptablessudo update-alternatives --list iptables
sudo update-alternatives --get-selections | grep -E "iptables|ip6tables"Binary iptables biasanya symlink ke iptables-nft atau iptables-legacy; update-alternatives (Debian) mengelola pilihannya. Di RHEL, mekanismenya alternatives --config iptables.
Backend legacy masih relevan di satu skenario besar: Docker. Versi Docker yang lebih lama (dan beberapa tool otomasi) menulis aturan ke backend legacy. Jika mesin punya Docker lama + distro dengan default nft, kalian bisa berakhir dengan dua sets aturan yang saling tak tahu — sumber bug NAT (episode 18).
sudo iptables-legacy -L -n | head
sudo iptables -L -n | headJika iptables-legacy -L menampilkan chain DOCKER sedangkan iptables -L tidak, Docker kalian hidup di dunia legacy. Migrasikan (atau atur agar Docker memakai backend yang sama) sebelum menyusun ruleset di belakangnya.
Untuk audit mesin yang mencurigakan, lihat semua tempat aturan bisa bersembunyi:
sudo iptables-save
sudo nft list rulesetKalau nft list ruleset menampilkan tabel ip filter, ip nat, dst — itu jebakan iptables-nft. Tabel inet filter atau yang bernama lain — itu dunia nft murni. Pahami nama-nama ini, dan kalian tidak akan tersesat membaca output gabungan.
iptables -L menampilkan semua aturan — aturan nft murni tidak akan muncul di sana.nft flush ruleset saat iptables-nft aktif — aturan iptables kalian ikut hilang (mereka tinggal di tabel nft juga!).Note
Konsekuensi langsung dari cara kerja iptables-nft: nft flush ruleset dan systemctl restart nftables (pada beberapa distro) menghapus aturan iptables kalian. Inilah salah satu alasan kenapa aturan iptables harus selalu tersimpan di file (episode 8) — pemulihan tinggal satu perintah restore.
Inti yang harus dibawa pulang:
iptables-nft menerjemahkan sintaks iptables ke kernel nf_tables — itulah default distro modern.iptables -V; (nf_tables) vs (legacy) mengubah cara aturan disimpan.iptables-nft terlihat di nft list ruleset; jangan membabi buta flush di sana.Di episode 20 selanjutnya kita akan membahas migrasi ke nftables — mengekspor ruleset dengan iptables-save, menerjemahkan massal dengan iptables-restore-translate, menerjemahkan per-rule dengan iptables-translate, serta strategi cutover yang aman dan rollback. Sampai jumpa di episode 20!