iptables-restore failing to load my rules
I've been searching around for some time now, but nothing solves my problem. I'm setting up a mail server, but when writing to the iptables, I get an error:
iptables-restore: line 2 failed.
I'm trying to use the following /etc/iptables.test.rules:
# Allows SMTP access
-A INPUT -p tcp --dport 25 -j ACCEPT
# Allows pop and pops connections
-A INPUT -p tcp --dport 110 -j ACCEPT
-A INPUT -p tcp --dport 995 -j ACCEPT
# Allows imap and imaps connections
-A INPUT -p tcp --dport 143 -j ACCEPT
-A INPUT -p tcp --dport 993 -j ACCEPT
After this, I'm issuing the following command:
sudo iptables-restore < /etc/iptables.test.rules
However I get returned this:
iptables-restore: line 2 failed.
I don't know what the problem is. Can anyone clarify?
I'm using Ubuntu 10.10 LTS
It's because that file is not in the expected format. You should add your rules manually the first time, then use iptables-save
to get a file in the expected format.
However it's quite simple to "mimic" the format that iptables-restore expects.
Add a line with just *filter
at the top of the file.
Add a line with just COMMIT
at the bottom.
So you end up looking like this:
*filter
# Allows SMTP access
-A INPUT -p tcp --dport 25 -j ACCEPT
# Allows pop and pops connections
-A INPUT -p tcp --dport 110 -j ACCEPT
-A INPUT -p tcp --dport 995 -j ACCEPT
# Allows imap and imaps connections
-A INPUT -p tcp --dport 143 -j ACCEPT
-A INPUT -p tcp --dport 993 -j ACCEPT
COMMIT
There's a few other snippets it should have too but that should make it work. After doing this, you can use iptables-save >filename
to get the fully correctly formatted save file into filename
.
Note that if you do use iptables-save
your comments in the file will be lost (it will replace the entire file with its own similar formatted one).