Solusi terbaik yang bekerja untuk saya tanpa masalah terlihat seperti ini:
1. Tambahkan aturan sementara dengan beberapa komentar:
comment=$(cat /proc/sys/kernel/random/uuid | sed 's/\-//g')
iptables -A ..... -m comment --comment "${comment}" -j REQUIRED_ACTION
2. Ketika aturan ditambahkan dan Anda ingin menghapusnya (atau semuanya dengan komentar ini), lakukan:
iptables-save | grep -v "${comment}" | iptables-restore
Jadi, Anda akan 100% menghapus semua aturan yang cocok dengan $comment dan membiarkan baris lain tidak tersentuh. Solusi ini berfungsi selama 2 bulan terakhir dengan sekitar 100 perubahan aturan per hari - tidak ada masalah. Semoga membantu
Jalankan perintah yang sama tetapi ganti "-A" dengan "-D". Misalnya:
iptables -A ...
menjadi
iptables -D ...
Anda juga dapat menggunakan nomor aturan (--line-numbers ):
iptables -L INPUT --line-numbers
Contoh keluaran :
Chain INPUT (policy ACCEPT)
num target prot opt source destination
1 ACCEPT udp -- anywhere anywhere udp dpt:domain
2 ACCEPT tcp -- anywhere anywhere tcp dpt:domain
3 ACCEPT udp -- anywhere anywhere udp dpt:bootps
4 ACCEPT tcp -- anywhere anywhere tcp dpt:bootps
Jadi jika Anda ingin menghapus aturan kedua :
iptables -D INPUT 2
Perbarui
Jika Anda menggunakan(d) tabel tertentu (misalnya nat), Anda harus menambahkannya ke perintah hapus (terima kasih kepada @ThorSummoner untuk komentarnya)
sudo iptables -t nat -D PREROUTING 1
Daftar pertama semua aturan iptables dengan perintah ini:
iptables -S
daftarnya seperti:
-A XYZ -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
Kemudian salin baris yang diinginkan, dan ganti saja -A
dengan -D
untuk menghapusnya:
iptables -D XYZ -p ...