Anda perlu mencari tahu bagian mana dari aturan yang menyebabkan pesan kesalahan tersebut. Itu mungkin adalah -m state
bagian, tetapi tidak harus. Berbagai ekstensi untuk iptables dan netfilter harus dikompilasi ke dalam iptables userspace binary dan ke dalam netfilter di kernel Linux. Anda dapat menentukan bagian mana yang Anda lewatkan dengan meminta iptables informasi bantuan tentang ekstensi yang Anda uji. Berikut adalah beberapa cara untuk menguji berbagai ekstensi:
$ iptables -m state -h
$ iptables -p icmp -h
$ iptables -j DROP -h
Jika Anda mendapatkan output bantuan yang menyertakan informasi tentang ekstensi di bagian paling bawah dari output, maka itu akan dikompilasi ke dalam biner userspace. Jika tidak, maka Anda perlu mengkompilasi ulang iptables. Jika berhasil, coba aturan paling sederhana untuk melihat apakah ekstensi disertakan dalam ruang kernel:
$ iptables -A INPUT -m state --state NEW
$ iptables -A INPUT -p icmp
$ iptables -A INPUT -j DROP
(Hati-hati dengan aturan tersebut, yang terakhir Anda ingin hapus karena mungkin akan DROP lebih dari yang Anda inginkan!) Ketika Anda mendapatkan pesan kesalahan lagi:No chain/target/match by that name
Anda akan tahu bahwa ekstensi tertentu tidak dikompilasi ke dalam kernel Anda. Anda harus mengkompilasi ulang kernel Anda.
Lihat file make di linux/net/ipv6/netfilter
, linux/net/ipv4/netfilter
, dan linux/net/netfilter
untuk opsi mengaktifkan berbagai ekstensi untuk kernel. Untuk ruang pengguna, menurut saya file make yang dimaksud ada di iptables/extensions
tapi menurut saya struktur foldernya sedikit berubah di versi yang lebih baru.