Назад | Перейти на главную страницу

iptables пуст после перезагрузки

Мы начали сталкиваться с проблемой iptables в наших системах RHEL 6.3, поскольку после перезагрузки при запуске службы правила не загружаются. Получаем пустой набор правил:

[msnyder@matt-test ~]$ sudo iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination 

И это несмотря на то, что у нас определены правила и служба действительно работает. Это я знаю, потому что когда я бегу service iptables start он просто возвращается к подсказке. Если я сбегу service iptables restart он фактически останавливается, а затем перезапускает службу. И, конечно, если я сбегу service iptables stop это означает, что iptables действительно останавливается.

Зная, что мне нужно перезапустить службу, я делаю это, и правила загружаются правильно. Они просто не загружаются после перезагрузки. Если они не загрузятся по-другому во время перезагрузки, я не понимаю, насколько наши правила будут неправильными. Если бы они были, они бы даже не загружались при перезапуске службы.

Кто-нибудь еще сталкивался с этим?

РЕДАКТИРОВАТЬ: правила уже сохранены в / etc / sysconfig / iptables. Они не добавляются на лету из командной строки, поэтому service iptables save не нужно.

Я считаю, что вам нужно будет выполнить «service iptables save», как указано выше, чтобы правила вступили в силу после перезагрузки. Но я бы также проверил следующие параметры в: / etc / sysconfig / iptables-config, чтобы убедиться, что он сохраняет текущую конфигурацию, чтобы вы не потеряли ничего, вставленное во время выполнения.

IPTABLES_SAVE_ON_STOP="no"
IPTABLES_SAVE_ON_RESTART="no"

Мы обнаружили, что проблема не в самом iptables. На этих серверах работает агент TrendMicro Deep Security, который нарушает работу iptables. Они признали проблему и наш обходной путь, который устанавливает для сценариев запуска dsagent и iptables один и тот же начальный порядковый номер (S08), вместо того, чтобы запускать сценарий dsagent после iptables, который он по умолчанию.

Сначала iptables должен быть включен при запуске с помощью chkconfig on Но я думаю, что это уже так, поскольку вы получаете пустую таблицу.

Причиной того, что iptables не загружается во время загрузки, может быть то, что у вас есть правила в вашей конфигурации с использованием имен хостов, если это так, замените их IP-адресами и повторите попытку. Если вам абсолютно необходимы имена хостов в конфигурации iptables, обязательно сначала включите (и зафиксируйте) DNS-запрос от вашего хоста, но я не уверен, будет ли это работать в любой ситуации.