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 Web 服务用户的密码。 | |
| Robot Web 服务用户的用户名。 | |
| 防火墙的交换机端口。 选项 
 | |
| 防火墙规则。 | |
| 输入防火墙规则。 | |
| 如果规则匹配,则执行操作。 选项 
 | |
| 目标 IP 地址或子网地址。 CIDR 表示法。 | |
| 目标端口或端口范围。 | |
| 互联网协议版本。 省略以过滤两种协议。请注意,在这种情况下,不能指定  | |
| 防火墙规则的名称。 请注意,Hetzner 限制了可以用于规则名称的字符。目前,只允许字母  | |
| IP 层以上的协议。 | |
| 源 IP 地址或子网地址。 CIDR 表示法。 | |
| 源端口或端口范围。 | |
| 输出防火墙规则。 | |
| 如果规则匹配,则执行操作。 选项 
 | |
| 目标 IP 地址或子网地址。 CIDR 表示法。 | |
| 目标端口或端口范围。 | |
| 互联网协议版本。 省略以过滤两种协议。请注意,在这种情况下,不能指定  | |
| 防火墙规则的名称。 请注意,Hetzner 限制了可以用于规则名称的字符。目前,只允许字母  | |
| IP 层以上的协议。 | |
| 源 IP 地址或子网地址。 CIDR 表示法。 | |
| 源端口或端口范围。 | |
| 服务器的主 IP 地址。 必须指定  请注意,Hetzner 已弃用通过服务器的主 IP 地址来识别服务器的防火墙。因此,使用此选项可能会在未来任何时候停止工作。请改用  | |
| 服务器的编号。 必须指定  | |
| 防火墙的状态。 如果状态为  选项 
 | |
| 等待配置防火墙的超时时间(以秒为单位)。 默认值:  | |
| 配置防火墙时使用的超时时间。 请注意,API 调用会在防火墙成功设置之前返回。 默认值:  | |
| 在再次检查防火墙是否已配置之前等待的延迟时间(以秒为单位)。 默认值:  | |
| 是否等待直到防火墙成功配置后才确定要执行的操作,以及从模块返回。 当防火墙当前正在配置时,API 返回状态  请注意,存在请求限制。如果您需要执行多次更新,最好禁用等待,并定期使用 community.hrobot.firewall_info 来查询状态。 选项 
 | 
属性
| 属性 | 支持 | 描述 | 
|---|---|---|
| 操作组: community.hrobot.robot 在 community.hrobot 1.6.0 中添加 | 在  | |
| 支持:完整 | 可以在  | |
| 支持:完整 | 在 diff 模式下,将返回有关已更改内容(或可能需要在  | 
参见
另请参阅
- 防火墙文档
- 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 服务是否具有访问权限。 返回值  返回值: 成功 示例:  | 
