community.general.iptables_state – Сохранение состояния iptables в файл или восстановление из файла
Примечание
Этот плагин является частью коллекции community.general (версия 2.0.1).
Для его установки используйте: ansible-galaxy collection install community.general.
Для использования в playbook укажите: community.general.iptables_state.
Добавлена в версии 1.1.0: из community.general
Обзор
-
iptablesиспользуется для настройки, поддержания и проверки таблиц правил фильтрации пакетов IP в ядре Linux. - Этот модуль обрабатывает сохранение и/или загрузку правил. Это аналогично поведению команд
iptables-saveиiptables-restore(илиip6tables-saveиip6tables-restoreдля IPv6), которые этот модуль использует внутри. - Изменение состояния брандмауэра удалённо может привести к потере доступа к хосту в случае ошибки в новом наборе правил. Этот модуль включает функцию отката, чтобы избежать этого, сообщая хосту о восстановлении предыдущих правил, если куки ещё присутствует после заданного интервала времени, и всё это время сообщая контроллеру о попытке удаления куки на хосте через новое подключение.
Примечание
У этого модуля есть соответствующий плагин действия.
Требования
Ниже перечислены требования, необходимые на хосте, на котором выполняется этот модуль.
- iptables
- ip6tables
Параметры
| Параметр | Варианты/Значения по умолчанию | Комментарии |
|---|---|---|
| counters boolean |
| Сохранить или восстановить значения всех счётчиков пакетов и байтов. Когда true, модуль не является идемпотентным. |
| ip_version string |
| Версия протокола IP, к которой должен быть применён этот модуль. |
| modprobe путь | Укажите путь к программе modprobe, которая используется внутри iptables для загрузки модулей ядра.По умолчанию проверяется /proc/sys/kernel/modprobe, чтобы определить путь к исполняемому файлу. | |
| noflush boolean |
| Для state=restored, игнорируется в противном случае. Если false, восстановление правил iptables из файла очищает (удаляет) всё предыдущее содержимое соответствующих таблиц. Если true, предыдущие правила остаются без изменений (но политики обновляются, для всех встроенных цепочек). |
| path путь / обязательно | Файл, в который должно быть сохранено состояние iptables. Файл, из которого должно быть восстановлено состояние iptables. | |
| state string / обязательно |
| Сохранить (в файл) или восстановить (из файла) состояние брандмауэра. |
| table string |
| При state=restored, восстановить только указанную таблицу, даже если входной файл содержит другие таблицы. Ошибка, если указанная таблица не объявлена в файле. При state=saved, ограничить вывод указанной таблицей. Если не указано, вывод включает все активные таблицы. |
| wait целое число | Подождать N секунд для блокировки xtables, чтобы предотвратить мгновенную ошибку в случае одновременного выполнения нескольких экземпляров программы. |
Примечания
Примечание
- Функция отката не является опцией модуля и зависит от атрибутов задачи. Для её включения модуль должен выполняться асинхронно, т.е. устанавливая атрибуты задачи poll в
0, и async в значение меньше или равноANSIBLE_TIMEOUT. Если async больше, откат всё равно произойдёт, если это необходимо, но вы столкнётесь с таймаутом соединения вместо более релевантной информации, возвращаемой модулем после его сбоя. - Этот модуль поддерживает check_mode.
Примеры
# This will apply to all loaded/active IPv4 tables.
- name: Save current state of the firewall in system file
community.general.iptables_state:
state: saved
path: /etc/sysconfig/iptables
# This will apply only to IPv6 filter table.
- name: save current state of the firewall in system file
community.general.iptables_state:
ip_version: ipv6
table: filter
state: saved
path: /etc/iptables/rules.v6
# This will load a state from a file, with a rollback in case of access loss
- name: restore firewall state from a file
community.general.iptables_state:
state: restored
path: /run/iptables.apply
async: "{{ ansible_timeout }}"
poll: 0
# This will load new rules by appending them to the current ones
- name: restore firewall state from a file
community.general.iptables_state:
state: restored
path: /run/iptables.apply
noflush: true
async: "{{ ansible_timeout }}"
poll: 0
# This will only retrieve information
- name: get current state of the firewall
community.general.iptables_state:
state: saved
path: /tmp/iptables
check_mode: yes
changed_when: false
register: iptables_state
- name: show current state of the firewall
ansible.builtin.debug:
var: iptables_state.initial_state
Возвращаемые значения
Общие возвращаемые значения описаны здесь, следующие являются полями, уникальными для этого модуля:
| Ключ | Возвращаемое | Описание | |
|---|---|---|---|
| applied boolean | всегда | Установлено или нет желаемое состояние успешно. Пример: True | |
| initial_state список / элементы=строка | всегда | Текущее состояние брандмауэра при запуске модуля. Пример: ['# Generated by xtables-save v1.8.2', '*filter', ':INPUT ACCEPT [0:0]', ':FORWARD ACCEPT [0:0]', ':OUTPUT ACCEPT [0:0]', 'COMMIT', '# Completed'] | |
| restored список / элементы=строка | всегда | Состояние, которое модуль восстановил, независимо от того, было ли оно успешно применено. Пример: ['# Generated by xtables-save v1.8.2', '*filter', ':INPUT DROP [0:0]', ':FORWARD DROP [0:0]', ':OUTPUT ACCEPT [0:0]', '-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT', '-A INPUT -m conntrack --ctstate INVALID -j DROP', '-A INPUT -i lo -j ACCEPT', '-A INPUT -p icmp -j ACCEPT', '-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT', 'COMMIT', '# Completed'] | |
| saved список / элементы=строка | всегда | Состояние iptables, сохранённое модулем. Пример: ['# Generated by xtables-save v1.8.2', '*filter', ':INPUT ACCEPT [0:0]', ':FORWARD DROP [0:0]', ':OUTPUT ACCEPT [0:0]', 'COMMIT', '# Completed'] | |
| tables словарь | всегда | iptables, которые важны для модуля при запуске. Пример: { "filter": [ ":INPUT ACCEPT", ":FORWARD ACCEPT", ":OUTPUT ACCEPT", "-A INPUT -i lo -j ACCEPT", "-A INPUT -p icmp -j ACCEPT", "-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT", "-A INPUT -j REJECT --reject-with icmp-host-prohibited" ], "nat": [ ":PREROUTING ACCEPT", ":INPUT ACCEPT", ":OUTPUT ACCEPT", ":POSTROUTING ACCEPT" ] } | |
| table список / элементы=строка | успех | Политики и правила для всех цепочек указанной таблицы. | |
Авторы
- quidame (@quidame)
© 2012–2018 Michael DeHaan
© 2018–2021 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/2.11/collections/community/general/iptables_state_module.html