Everytime my server reboots it seems I have to reset my iptables to default, I used to use firestarter but removed it a while ago. Is there any settings that are making iptables change when the server reboots?
5 Answers
On Ubuntu 16.04:
sudo apt-get install iptables-persistent
After that, run next commands every time you want save iptables changes permanently:
sudo netfilter-persistent save
sudo netfilter-persistent reload
-
3How does this differ really from the existing answers which all say to install
iptables-persistent
and then useiptables-save
and such?– Thomas Ward ♦Mar 15, 2018 at 13:58 -
2
-
This is the default behavior.
You may want to take a look at the package iptables-persistent
to automatically set iptables rules at startup from a configuration file.
iptables-persistent by default does NOT automatically save the system's iptables when rebooting.
However, I modified the source code of the package in Ubuntu 14.04 to automatically save the rules on reboot, shutdown (halt), or runlevel 1. When the system boots to runlevels 2-5, the rules are restored. This way, saving and loading the rules happens automatically without user intervention.
To use this version, please use the following commands:
sudo apt-get remove iptables-persistent
sudo dpkg -r iptables-persistent
wget http://dinofly.com/files/linux/iptables-persistent_0.5.8_all.deb
sudo dpkg --install iptables-persistent_0.5.8_all.deb
See my full blog post here:
Use at your own risk. All that was modified is the init script stop function calls the save rules function so that when the system is shutdown, rebooted, or in level1, the rules are automatically saved.
I've tested this updated deb package on Ubuntu 12.04, Ubuntu 14.04, and Ubuntu 15.04. It should work on any version of debian as well.
Save the rules in a file
iptables-save > /etc/iptables/rules.v4
Then restore the file by following commands by including in rc.local file
#vim /etc/rc.local
/sbin/iptables-restore < /etc/iptables.rules.v4
This works fine for me
-
1Please note that these instructions refer to
/etc/iptables/rules.v4
and/etc/iptables.rules
but just one of these should be used in both cases.– Rick-777Jul 9, 2020 at 22:27 -
Somewhat correct.. But, 1: You need to install
iptables-persistent
. 2: Fix your typo./etc/iptables.rules.v4
should be:/etc/iptables/rules.v4
. 3: You need to note that you need to be root, or usesudo
. If using sudo see my answer. 4: You do not need to run restore. This command is run on a reboot automatically (Ubuntu 20/22) from when you installediptables-persistent
. Downvoted till fixed.– B. SheaDec 11, 2023 at 15:50
sudo apt install iptables-persistent
Then add bad IPs to your iptables.
Once satisfied with rules, save them:
sudo sh -c 'iptables-save > /etc/iptables/rules.v4'
(Or IPv6: sudo sh -c 'iptables-save > /etc/iptables/rules.v6'
)
Done. Reboot/test. Whatever you saved pre-reboot should be loaded again.
Wrote this because all the answers on Internet (and here) are wrong (unless you are root - and if you are root why use sudo?)
You cannot run SUDO with a redirect (or pipe) to a root area without ('bash -c' or 'sh -c').
-
you could just
sudo su -
then use the other answers. Though I've always just modifiedrules.v#
manually and reloaded iptables...never did live edits and then saved it from the live edits.– rtaftDec 11, 2023 at 15:49 -
@rtaft You can always become root to do root based things. This should go without saying, but you are correct. I am pointing how to use a redirect in this context using sudo. All the answers I've found today (not just stack) simply are wrong (ones that use sudo). They obviously didn't test the command before posting it.– B. SheaDec 11, 2023 at 15:56