How to delete multiple nat rules at once

I would like to ask how do I delete multiple nat rules at once. Is it possible?. Thank you

Sometimes it’s easier to delete all the NAT rules and re-create the rules you want.

Any of the options.

delete nat source
delete nat destination
delete nat

we have 3000 rules in NAT… completely delete and recreate again is impossible…
i need delete nat from rule 2000-2200…

Get all NAT configuration

show configuration commands | match nat

Copy it to notepad/text-editor
Delete rules that not match 2000-2200

Replace “set” with “del” for desired rules
For example

del nat source rule 2000 destination address '1.1.1.1'
del nat source rule 2000 outbound-interface 'eth0'
del nat source rule 2000 translation address '10.0.0.1'
del nat source rule 2001 destination address '1.1.1.2'
del nat source rule 2001 outbound-interface 'eth0'
del nat source rule 2001 translation address '10.0.0.2'
commit

Update, the above commands doesn’t delete rule numbers.

For a solution for it, you ned to get rules numbers to file. Example for source nat

show nat source statistics | awk '{print $1}' | grep "[2][0-2][0-9][0-9]" > /tmp/rule_numbers.txt

Check rule numbers

vyos@r1:~$ cat /tmp/rule_numbers.txt 
2000
2001
2200

Add script int /tmp directory “script.sh”

#!/usr/bin/env/bash

for I in $(cat /tmp/rule_numbers.txt)
 do
  echo "delete nat source rule $I"
 done

Add execute flag. And execute script

sudo chmod +x /tmp/script.sh
sudo  /tmp/script.sh

It shows you needed commands

vyos@r1:~$ sudo /home/vyos/test.sh 
delete nat source rule 2000
delete nat source rule 2001
delete nat source rule 2200

thank you for solutions… :wink:

This topic was automatically closed 2 days after the last reply. New replies are no longer allowed.