====== Ubuntu - iptables - Save IPTable rules ======
===== Save and Restore iptables =====
This will save initial copies of the firewall rules.
sudo iptables-save > /etc/iptables/rules.v4
sudo ip6tables-save > /etc/iptables/rules.v6
----
In **/etc/network/if-pre-up.d/iptables** enter the following:
#!/bin/sh
iptables-restore < /etc/iptables/rules.v4
ip6tables-restore < /etc/iptables/rules.v6
exit 0
In **/etc/network/if-post-down.d/iptables** enter the following:
#!/bin/sh
iptables-save -c > /etc/iptables/rules.v4
if [ -f /etc/iptables/rules.v4 ]; then
iptables-restore < /etc/iptables/rules.v4
fi
ip6tables-save -c > /etc/iptables/rules.v6
if [ -f /etc/iptables/rules.v6 ]; then
ip6tables-restore < /etc/iptables/rules.v6
fi
exit 0
Give permission to the scripts:
sudo chmod +x /etc/network/if-post-down.d/iptables
sudo chmod +x /etc/network/if-pre-up.d/iptables
----
===== IPv4 vs IPv6 =====
There are slightly different commands used depending on IPv4 or IPv6.
For IPv4 the commands are **iptables-save** and **iptables-restore**.
For IPv6 the commands are **ip6tables-save** and **ip6tables-restore**.
----
===== Example Usage =====
==== Save the iptables rules ====
The generic method of saving iptables rules is to use the command **iptables-save**, which writes to stdout.
iptables-save > /etc/network/iptables.rules.v4
ip6tables-save > /etc/network/iptables.rules.v6
----
==== Restore the iptables rules ====
For IPv4, the output created by **iptables-save** can then by read on stdin by **iptables-restore**. Similarly, for IPv6, the output created by **ip6tables-save** can then by read on stdin by **ip6tables-restore**.
If on a server, without NetworkManager, a common approach is then to use a **pre-up** command in /etc/network/interfaces.
iface eth0 inet static
....
pre-up iptables-restore < /etc/network/iptables.rules.v4
pre-up ip6tables-restore < /etc/network/iptables.rules.v6