Я следовал этому руководству, чтобы настроить правила IP в Ubuntu 12.04. При настройке все работало нормально, но теперь я внес изменения в брандмауэр, которые не сохраняются после перезагрузки. Я не понимаю, почему это так. Вот демонстрация того, как я использую iptables-persistent. Что я делаю неправильно?
$ sudo service iptables-persistent start
* Loading iptables rules... * IPv4... * IPv6...
$ sudo iptables -L //shows a certain rule
$ iptables -D INPUT ... //command successfully drops the rule
$ sudo iptables -L //shows rule has been deleted
$ sudo service iptables-persistent restart
* Loading iptables rules... * IPv4... * IPv6... [ OK ]
$ sudo iptables -L //rule is back
iptables
iptables-persistent
bernie2436
источник
источник
iptables -D INPUT
правило не в томsudo
, вы уверены, что на самом деле он сообщает об успехе? Меняется ли поведение, если вы запускаете его внутриsudo
?Ответы:
iptables-persistent
не работает таким образом. Перезапускiptables-persistent
«службы» не фиксирует текущее состояние iptables и не сохраняет его; все, что он делает, это восстанавливает правила iptables, которые были сохранены, когда пакет был последний раз настроен.Для настройки
iptables-persistent
вам нужно рассказать о вашем текущем наборе правил iptables.Один из способов сделать это заключается в следующем:
Или, что эквивалентно,
iptables-persistent
пакет также предоставляет следующее:(Вам нужно будет ответить «да» на вопросы о том, сохранять ли правила.)
После этого при следующем
iptables-persistent
запуске / перезапуске ожидаемые наборы правил iptables будут загружены.источник
Очень простой способ сохранить текущие правила iptables - использовать команду:
sudo service netfilter-persistent save
Используя вышеприведенное, которое работает, по крайней мере, в Ubuntu после установки пакета
netfilter-persistent
(иiptables-persistent
), нет необходимости вручную запускать команды iptables или перенастраивать пакет (как это предлагается даже в принятом ответе выше).источник
sudo service netfilter-persistent save
илиsudo service netfilter-persistent save .
? (Точка в конце.)Это не то, что
DROP
значит или делает. Отman iptables
:Итак, что вы сделали, это добавили новое правило. Он может эффективно заменить любое количество других правил, но эти правила все еще существуют.
Проверяя подобные вещи (ваш
iptables -L
вывод), я бы их кормил,grep "string unique to this rule"
а не использовал ваши глаза. Это проще и быстрее, и меньше подвержено ошибкам.Если вы хотите удалить правило, используйте
-D
переключатель; Страница man описывает две формы этого:источник
-D
означает «удалить», а не «DROP». Использование термина «DROP» для обозначения чего-либо, кроме цели прыжка, когда речь идет оiptables
чём-то путающем.Как объясняет @ steven-monday , вы можете самостоятельно сохранить набор правил в соответствующем каталоге (а именно :)
/etc/iptables/rules.v{4,6}
.Однако @OpenITeX прав: лучше вызывать
save
действиеservice netfilter-persistent
.На сегодняшний день (в 18.10), Iptables-спасбросках встроенный, но
iptables-persistent
это не установлен. Следовательно, каталог подключаемого модуляservice netfilter-persistent
пуст, и служба распечатывает, что набор правил был сохранен, тогда как это не так.TLDR: установите
iptables-persistent
и убедитесь, что каталог/usr/share/netfilter-persistent/plugins.d
плагинов содержит плагины.Вот как я это понял:
Затем проверьте
/usr/sbin/netfilter-persistent
скрипт, обратите внимание, что он вызывает внешние скрипты:Потом я заметил, что это
/usr/share/netfilter-persistent/plugins.d
было пусто.источник
Установите iptables-persistent:
сохранить правила после внесения желаемых изменений:
источник