community.general.iptables_state – Сохранение состояния iptables в файл или восстановление из файла
Примечание
Этот плагин входит в коллекцию community.general (версия 1.3.2).
Для его установки используйте: ansible-galaxy collection install community.general.
Для использования в книге задач укажите: 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 строка |
| Какая версия протокола IP должна применяться этим модулем. |
| modprobe путь | Укажите путь к программе modprobe, которая используется внутри командами, связанными с iptables, для загрузки модулей ядра.По умолчанию проверяется /proc/sys/kernel/modprobe, чтобы определить путь к исполняемому файлу. | |
| noflush boolean |
| Для state=restored, игнорируется в противном случае. Если false, восстановление правил iptables из файла очищает (удаляет) все предыдущее содержимое соответствующей таблицы(ы). Если true, предыдущие правила остаются без изменений (но политики обновляются, для всех встроенных цепочек). |
| path путь / обязательно | Файл, в который должно быть сохранено состояние iptables. Файл, из которого должно быть восстановлено состояние iptables. | |
| state строка / обязательно |
| Должно ли состояние брандмауэра быть сохраненным (в файл) или восстановленным (из файла). |
| table строка |
| При 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–2019 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/2.10/collections/community/general/iptables_state_module.html