ansible.posix.firewalld 模块 – 使用 firewalld 管理任意端口/服务
注意
此模块是 ansible.posix 集合(版本 1.6.2)的一部分。
如果您正在使用 ansible
包,您可能已经安装了这个集合。它不包含在 ansible-core
中。要检查是否已安装,请运行 ansible-galaxy collection list
。
要安装它,请使用:ansible-galaxy collection install ansible.posix
。您需要更多要求才能使用此模块,有关详细信息,请参阅要求。
要在 playbook 中使用它,请指定:ansible.posix.firewalld
。
概要
此模块允许在正在运行或永久的 firewalld 规则中添加或删除服务和端口(TCP 或 UDP)。
要求
以下要求需要在执行此模块的主机上满足。
firewalld >= 0.9.0
python-firewall >= 0.9.0
参数
参数 |
注释 |
---|---|
您想要在 firewalld 中启用/禁用区域之间的转发设置。 此选项仅受 firewalld v0.9.0 或更高版本支持。 |
|
您想要在 firewalld 中添加/删除到/从区域的 ICMP 阻止。 |
|
在 firewalld 中启用/禁用区域的 ICMP 阻止的反转。 |
|
您想要在 firewalld 中添加/删除到/从区域的接口。 |
|
您想要在 firewalld 中启用/禁用区域之间的伪装设置。 |
|
是否将此更改应用于永久 firewalld 配置。 从 Ansible 2.3 开始,当 firewalld 未运行时,永久操作可以对 firewalld 配置进行操作(需要 firewalld >= 0.3.9)。 请注意,如果此值为 选项
|
|
要添加/删除到/从 firewalld 的端口或端口范围的名称。 必须采用 PORT/PROTOCOL 或 PORT-PORT/PROTOCOL 的形式表示端口范围。 |
|
使用 firewalld 转发的端口和协议。 |
|
要从中转发的源端口。 |
|
要转发的协议。 选项
|
|
要转发到的可选地址。 |
|
目标端口。 |
|
要添加/删除到/从 firewalld 的协议的名称。 |
|
要添加/删除到/从 firewalld 的富规则。 |
|
要添加/删除到/从 firewalld 的服务的名称。 该服务必须在 |
|
您想要在 firewalld 中添加/删除到/从区域的源/网络。 |
|
启用或禁用设置。 对于端口:此端口应接受 ( 状态 选项
|
|
当规则为非永久性时,该规则生效的秒数。 默认值: |
|
要添加/删除的 firewalld 区域。 请注意,默认区域可以按系统配置,但上游默认值为 可用选项可以根据每个系统的配置进行扩展,此处列出的是“开箱即用”的默认值。 可能的值包括 |
备注
注意
未在任何基于 Debian 的系统上进行测试。
需要 firewalld 的 python2 绑定,该绑定可能不是默认安装的。
对于 python2 firewalld 绑定不可用的发行版(例如 Fedora 28 及更高版本),您必须将这些主机的 ansible_python_interpreter 设置为 python3 解释器路径并安装 python3 绑定。
可以通过仅使用 zone 和 state 参数 “present” 或 “absent” 来执行区域事务(创建、删除)。请注意,区域事务必须明确是永久性的。这是 firewalld 的一个限制。这也意味着您必须在添加要立即对其执行操作的区域后重新加载 firewalld。该模块不会为您隐式处理此操作,因为这会撤销任何先前执行的非永久性立即操作。因此,如果您需要立即访问新创建的区域,建议在区域创建返回已更改状态后立即重新加载 firewalld,然后再对该区域执行任何其他立即的非永久性操作。
此模块在受管节点上需要
python-firewall
或python3-firewall
。它通常作为 OS 发行商为 OS 默认 Python 解释器提供的firewalld
的子集提供。
示例
- name: permanently enable https service, also enable it immediately if possible
ansible.posix.firewalld:
service: https
state: enabled
permanent: true
immediate: true
offline: true
- name: permit traffic in default zone for https service
ansible.posix.firewalld:
service: https
permanent: true
state: enabled
- name: permit ospf traffic
ansible.posix.firewalld:
protocol: ospf
permanent: true
state: enabled
- name: do not permit traffic in default zone on port 8081/tcp
ansible.posix.firewalld:
port: 8081/tcp
permanent: true
state: disabled
- ansible.posix.firewalld:
port: 161-162/udp
permanent: true
state: enabled
- ansible.posix.firewalld:
zone: dmz
service: http
permanent: true
state: enabled
- ansible.posix.firewalld:
rich_rule: rule service name="ftp" audit limit value="1/m" accept
permanent: true
state: enabled
- ansible.posix.firewalld:
source: 192.0.2.0/24
zone: internal
state: enabled
- ansible.posix.firewalld:
zone: trusted
interface: eth2
permanent: true
state: enabled
- ansible.posix.firewalld:
forward: true
state: enabled
permanent: true
zone: internal
- ansible.posix.firewalld:
masquerade: true
state: enabled
permanent: true
zone: dmz
- ansible.posix.firewalld:
zone: custom
state: present
permanent: true
- ansible.posix.firewalld:
zone: drop
state: enabled
permanent: true
icmp_block_inversion: true
- ansible.posix.firewalld:
zone: drop
state: enabled
permanent: true
icmp_block: echo-request
- ansible.posix.firewalld:
zone: internal
state: present
permanent: true
target: ACCEPT
- name: Redirect port 443 to 8443 with Rich Rule
ansible.posix.firewalld:
rich_rule: rule family=ipv4 forward-port port=443 protocol=tcp to-port=8443
zone: public
permanent: true
immediate: true
state: enabled