Очистить и сбросить iptables в Debian

Чтобы очистить все правила в iptables, я использую это

#!/bin/bash
echo "clearing iptables ... "
sudo iptables -F
sudo iptables -X
sudo iptables -t nat -F
sudo iptables -t nat -X
sudo iptables -t mangle -F
sudo iptables -t mangle -X
sudo iptables -P INPUT ACCEPT
sudo iptables -P FORWARD ACCEPT
sudo iptables -P OUTPUT ACCEPT

Это работает, поскольку в iptables больше нет записей, что проверяется с помощью

sudo iptables -L

или же

sudo iptables -S

Однако трафик, который был перенаправлен на другую цель, все еще направляется на эту цель.

Кажется, что очищенные iptables все еще активны после их очистки!

До сих пор мой единственный способ избавиться от этих правил - перезагрузить систему, которая не очень элегантна.

В Debian iptables не запускается как служба, поэтому запуск или остановка этой службы не работает.

Как полностью очистить или сбросить iptables с тем, чтобы ранее определенные правила были деактивированы?

3 ответа

  1. Сброс правил iptables не влияет на уже установленные соединения, с которыми были перенаправлены DNAT, Это связано с тем, что запись conntrack для пакетов UDP содержит информацию о перенаправлении, которая используется помимо правил iptables.

  2. Проверьте существующие записи conntrack с помощью conntrack -L и отслеживать события Conntrack с conntrack -E команда.

  3. Использовать conntrack -F команда для очистки записей conntrack. Новые UDP-пакеты больше не будут перенаправляться.

  4. Для управления правилами iptables в качестве службы используйте netfilter-persistent а также iptables-persistent пакеты.

  5. Лучше использовать iptables-save/iptables-restore команды вместо ручного запуска iptables, Это более безопасно и атомно.

  6. Для управления правилами iptables на удаленном хосте используйте iptables-apply команда, которая разрешает откат набора правил, если он не был подтвержден.

sudo ufw status verbose; sudo iptables -L; 

Может быть, там работает UFW? Попробуй остановиться.

Не могли бы вы рассказать немного больше о вашей системе, сети и о том, какой трафик все еще маршрутизируется?

1-2 примера вкл. исходное правило брандмауэра.

РЕДАКТИРОВАТЬ:

Проверено некоторыми из моих сценариев..... Также очистите цепи.

sudo iptables -F INPUT
sudo iptables -F FORWARD 
sudo iptables -F OUTPUT

Ваш сценарий для очистки правил iptables достаточно для очистки всех правил и установки политики по умолчанию ACCEPT. Это эффективно отключает брандмауэр, так как нет никаких правил и все разрешено.

Из ваших комментариев мы знаем, что вы отправляете UDP-пакеты. Вы можете почувствовать, что старые правила все еще активны некоторое время, особенно когда через ваш компьютер брандмауэра проходит непрерывный поток пакетов UDP. Это происходит главным образом потому, что UDP не имеет способа закрыть соединение, и поэтому брандмауэр не знает, когда текущий активный поток завершился. Единственный способ - использовать время простоя для сброса активных "соединений", когда больше пакетов не видно.

У вас есть два варианта:

  1. Подождите некоторое время, прежде чем пытаться снова. Это требует прекращения любых текущих активных "соединений". Вы можете найти тайм-аут UDP в /proc/sys/net/netfilter/nf_conntrack_udp_timeout,
  2. использование conntrack инструмент для удаления существующих "соединений" вручную.

Обратите внимание, что брандмауэр Linux отслеживает активные сокеты для TCP/UDP, даже если UDP является протоколом без установления соединения.

Другие вопросы по тегам