У меня есть несколько записей iptables, которые DROP пакеты с разных IP-адресов на разных портах. Я хотел бы удалить с помощью одной команды все правила, соответствующие конкретному IP. От

man iptables

кажется возможным. Как я могу это сделать?

3 ответа3

0

Я сомневаюсь, что вы можете сделать это с помощью простой команды iptables - в зависимости от вашей версии Linux может использоваться какой-то сценарий bash frankenhack (я думаю, что iptables dump, grep, restore)

Что вы можете сделать, это вставить правило iptables в начале таблицы, чтобы разрешить с этого IP-адреса, который будет переопределять все, что будет потом. Что-то вроде

 iptables -I INPUT -s X.X.X.X -j ACCEPT
 iptables -I INPUT -d X.X.X.X -j ACCEPT
0
iptables-save|grep -v 192\.168\.1\.1 >iptables-save && iptables -F && iptables-restore </iptables.save

Возможно, вам придется использовать \, чтобы разделить символ точки

Это не будет соответствовать нотации CIDR.

  1. Ищу 192.168.0.0/16 не найду 192.168.1.1.
  2. Поиск 192.168.1.1 также не будет совпадать с 192.168.0.0/16.

Explaination:

  1. iptables-save # сохранить конфигурацию
  2. grep -v # -v - исключить совпадающие строки
  3. iptables-save # сбросить новый результат в iptables-save

  4. && iptables -F # когда закончите, сбросьте все правила
  5. && iptables-restore
0

Адамм, создатель skynet, специально для этого сделал скрипт для своего брандмауэра iptables; Надеюсь, это должно сработать. https://github.com/Adamm00/IPSet_ASUS/commit/56f4bad86ac64bf9c74c6d588f4cd2d83265ab1a

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .