community.hrobot.firewall 模块 – 管理 Hetzner 专用服务器防火墙
注意
此模块是 community.hrobot 集合 (版本 2.0.2) 的一部分。
如果您使用的是 ansible
包,则您可能已经安装了此集合。它不包含在 ansible-core
中。要检查它是否已安装,请运行 ansible-galaxy collection list
。
要安装它,请使用:ansible-galaxy collection install community.hrobot
。您需要其他要求才能使用此模块,有关详细信息,请参阅 要求。
要在 playbook 中使用它,请指定:community.hrobot.firewall
。
概要
管理 Hetzner 的专用服务器防火墙。
请注意,TCP 标志的幂等性检查只是比较字符串,不会尝试解释规则。这将来可能会改变。
要求
执行此模块的主机需要以下要求。
ipaddress
参数
参数 |
注释 |
---|---|
Hetzner 服务是否可以访问。 选项
|
|
是否也过滤 IPv6 流量。 IPv4 流量始终被过滤,IPv6 流量过滤需要显式启用。 选项
|
|
Robot 网络服务用户的密码。 |
|
Robot 网络服务用户的用户名。 |
|
防火墙的交换机端口。 选项
|
|
防火墙规则。 |
|
输入防火墙规则。 |
|
如果规则匹配则执行的操作。 选项
|
|
目标 IP 地址或子网地址。 CIDR 表示法。 |
|
目标端口或端口范围。 |
|
互联网协议版本。 忽略此项以过滤两种协议。请注意,在这种情况下,不能指定 |
|
防火墙规则的名称。 请注意,Hetzner 限制了可以用于规则名称的字符。目前,只允许字母 |
|
IP 层之上的协议。 |
|
源 IP 地址或子网地址。 CIDR 表示法。 |
|
源端口或端口范围。 |
|
输出防火墙规则。 |
|
如果规则匹配则执行的操作。 选项
|
|
目标 IP 地址或子网地址。 CIDR 表示法。 |
|
目标端口或端口范围。 |
|
互联网协议版本。 忽略此项以过滤两种协议。请注意,在这种情况下,不能指定 |
|
防火墙规则的名称。 请注意,Hetzner 限制了可以用于规则名称的字符。目前,只允许字母 |
|
IP 层之上的协议。 |
|
源 IP 地址或子网地址。 CIDR 表示法。 |
|
源端口或端口范围。 |
|
服务器的主 IP 地址。 必须指定 请注意,Hetzner 已弃用使用服务器主 IP 来标识服务器防火墙。因此,使用此选项在将来任何时候都可能停止工作。请改用 |
|
服务器编号。 必须指定 |
|
防火墙状态。 如果 state 为 选项
|
|
等待防火墙配置完成的超时时间(以秒为单位)。 默认值: |
|
配置防火墙时使用的超时时间。 请注意,API 调用在防火墙成功设置之前返回。 默认值: |
|
再次检查防火墙是否已配置完成之前的等待延迟(以秒为单位)。 默认值: |
|
是否等待防火墙成功配置完成再确定要执行的操作,以及模块返回之前。 当防火墙当前正在配置时,API 返回状态 请注意存在请求限制。如果您需要进行多次更新,最好禁用等待,并定期使用community.hrobot.firewall_info查询状态。 选项
|
属性
属性 |
支持 |
描述 |
---|---|---|
动作组: community.hrobot.robot 添加于 community.hrobot 1.6.0 |
在 |
|
支持: 完全支持 |
可以在 |
|
支持: 完全支持 |
在差异模式下,将返回有关已更改内容(或可能需要在 |
另请参阅
另请参阅
- 防火墙文档
Hetzner 关于专用服务器无状态防火墙的文档
- community.hrobot.firewall_info
检索防火墙配置信息。
示例
- name: Configure firewall for server with main IP 1.2.3.4
community.hrobot.firewall:
hetzner_user: foo
hetzner_password: bar
server_ip: 1.2.3.4
state: present
filter_ipv6: true
allowlist_hos: true
rules:
input:
- name: Allow ICMP protocol
# This is needed so you can ping your server
ip_version: ipv4
protocol: icmp
action: accept
# Note that it is not possible to disable ICMP for IPv6
# (https://robot.hetzner.com/doc/webservice/en.html#post-firewall-server-id)
- name: Allow responses to incoming TCP connections
protocol: tcp
dst_port: '32768-65535'
tcp_flags: ack
action: accept
- name: Allow restricted access from some known IPv4 addresses
# Allow everything to ports 20-23 from 4.3.2.1/24 (IPv4 only)
ip_version: ipv4
src_ip: 4.3.2.1/24
dst_port: '20-23'
action: accept
- name: Allow everything to port 443
dst_port: '443'
action: accept
- name: Drop everything else
action: discard
output:
- name: Accept everything
action: accept
register: result
- ansible.builtin.debug:
msg: "{{ result }}"
返回值
常见的返回值已在此处记录,以下是此模块特有的字段
键 |
描述 |
---|---|
防火墙配置。 返回:成功 |
|
Hetzner 服务是否可以访问。 返回:成功 示例: |
|
防火墙的交换机端口。
返回:成功 示例: |
|
防火墙规则。 返回:成功 |
|
输入防火墙规则。 返回:成功 |
|
如果规则匹配则执行的操作。
返回:成功 只能返回
示例: |
|
目标 IP 地址或子网地址。 CIDR 表示法。 返回:成功 示例: |
|
目标端口或端口范围。 返回:成功 示例: |
|
互联网协议版本。 无值表示规则同时适用于 IPv4 和 IPv6。 返回:成功 示例: |
|
防火墙规则的名称。 返回:成功 示例: |
|
IP 层之上的协议。 返回:成功 示例: |
|
源 IP 地址或子网地址。 CIDR 表示法。 返回:成功 |
|
源端口或端口范围。 返回:成功 |
|
TCP 标志或标志的逻辑组合。 返回:成功 |
|
输出防火墙规则。 返回:成功 |
|
如果规则匹配则执行的操作。
返回:成功 只能返回
示例: |
|
目标 IP 地址或子网地址。 CIDR 表示法。 返回:成功 示例: |
|
目标端口或端口范围。 返回:成功 示例: |
|
互联网协议版本。 无值表示规则同时适用于 IPv4 和 IPv6。 返回:成功 |
|
防火墙规则的名称。 返回:成功 示例: |
|
IP 层之上的协议。 返回:成功 示例: |
|
源 IP 地址或子网地址。 CIDR 表示法。 返回:成功 |
|
源端口或端口范围。 返回:成功 |
|
TCP 标志或标志的逻辑组合。 返回:成功 |
|
服务器的主 IP 地址。 返回:成功 示例: |
|
Hetzner 的内部服务器编号。 返回:成功 示例: |
|
防火墙状态。
如果防火墙当前正在更新,并且 返回:成功 示例: |
|
Hetzner 服务是否可以访问。 返回值 返回:成功 示例: |