Site Tools


Clearing iptables custom commands prior to applying new ones

Let's say, as an example, that you wanted to use some custom iptables commands in a script, such as the firewall script. In fact, the following principles would apply to any recurring script (such as “WAN Up”).

You can remove previously-added iptables directives using a simple approach:

nvram get script_fire | grep -E '^iptables*' | sed 's/-A\|-I/-D/' | while read line; do exec ${line} &>/dev/null; done

The commands below will check what iptables -A (append) or -I (insert) directives have been issued previously in the current Script/Firewall text. They will then force a run of the same command, replacing any instance of -A or -I with a -D (Delete) command. In essence, this will reverse/remove any previous user-added iptables directives.

A user might have created custom tables in which to use advanced iptables commands. This is usually performed using the “-N” (new) command. The same principles described above will also apply to previously-issued directives which used the -N command.

Here are some rules to remember when using these commands:

  • First, you need to dereference the custom table from the built-in one, using the above method.
  • A table must then be emptied with the -F (Flush) switch/parameter (for example, iptables -F $TABLE_NAME ) .
  • Only at this point will you be allowed to remove the table with the command: iptables -X $TABLE_NAME .

clearing_iptables.txt · Last modified: 2023/05/08 04:49 by hogwild