Why do iptables rules disappear when restarting my Debian system?

(Because it was suggested to make this an answer of its own...)

On Debian, install iptables-persistent:

sudo apt-get install iptables-persistent

The package will automatically load /etc/iptables/rules for you during boot.

Any time you modify your rules, run /sbin/iptables-save > /etc/iptables/rules to save them. You can also add that to the shutdown sequence if you like.


There is no option in iptables which will make your rules permanent. But you can use iptables-save and iptables-restore to fulfill your task.

First add the iptable rule using the command you gave.

Then save iptables rules to some file like /etc/iptables.conf using following command:

$  iptables-save > /etc/iptables.conf

Add the following command in /etc/rc.local to reload the rules in every reboot.

$  iptables-restore < /etc/iptables.conf

After installing iptables-persistent above you can also save rules with the following shorter command on Ubuntu 16.04+: sudo netfilter-persistent save

And they can also be restored back to how they were last time you saved them with: sudo netfilter-persistent reload