Мы начали сталкиваться с проблемой 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-запрос от вашего хоста, но я не уверен, будет ли это работать в любой ситуации.