ansible.posix.firewalld 模块 – 使用 firewalld 管理任意端口/服务
注意
此模块是 ansible.posix 集合(版本 1.6.2)的一部分。
如果您使用的是 ansible
包,则可能已安装此集合。它不包含在 ansible-core
中。要检查是否已安装,请运行 ansible-galaxy collection list
。
要安装它,请使用:ansible-galaxy collection install ansible.posix
。您需要进一步的要求才能使用此模块,请参阅 要求 获取详细信息。
要在剧本中使用它,请指定: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 中添加/删除的来源/网络。 |
|
启用或禁用设置。 对于端口:此端口应接受 ( 状态 选择
|
|
非永久规则生效的秒数。 默认值: |
|
要添加/删除到/从的 firewalld 区域。 请注意,默认区域可以按系统配置,但 可用选择可以根据每个系统的配置进行扩展,此处列出的是“开箱即用”的默认值。 可能的值包括 |
注释
注意
未在任何基于 Debian 的系统上测试。
需要 firewalld 的 python2 绑定,默认情况下可能未安装。
对于 python2 firewalld 绑定不可用的发行版(例如 Fedora 28 及更高版本),您必须将这些主机的 ansible_python_interpreter 设置为 python3 解释器路径并安装 python3 绑定。
区域事务(创建、删除)只能使用区域和状态参数“present”(存在)或“absent”(不存在)来执行。 请注意,区域事务必须显式地设为永久性。这是 firewalld 的一个限制。这也意味着在添加您希望立即对其执行操作的区域后,您必须重新加载 firewalld。该模块不会为您隐式地处理此操作,因为这会撤销任何先前执行的非永久性立即操作。因此,如果您需要立即访问新创建的区域,建议您在区域创建返回更改的状态后立即重新加载 firewalld,然后在该区域上执行任何其他非永久性的立即操作之前。
此模块需要在受管节点上安装
python-firewall
或python3-firewall
。它通常作为 OS 发行商提供的firewalld
的子集,用于 OS 的默认 Python 解释器。
示例
- 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