Menu Close
Settings Close

Language and Page Formatting Options

1.12. 使用 firewalld 设置和控制 IP 集

要查看 firewalld 所支持的 IP 集设置类型列表,请以 root 用户身份输入以下命令。

~]# firewall-cmd --get-ipset-types
hash:ip hash:ip,mark hash:ip,port hash:ip,port,ip hash:ip,port,net hash:mac hash:net hash:net,iface hash:net,net hash:net,port hash:net,port,net

1.12.1. 使用 CLI 配置 IP 设置选项

IP 集可以在 firewalld 区中用作源,也可以用作富规则中的源。在 Red Hat Enterprise Linux 中,首选的方法是使用 firewalld 在直接规则中创建的 IP 集合。

  • 要列出 permanent 环境中 firewalld 已知的 IP 集,请以 root 用户身份运行以下命令:

    # firewall-cmd --permanent --get-ipsets
  • 要添加新的 IP 集,请以 root 用户身份使用 permanent 环境来运行以下命令:

    # firewall-cmd --permanent --new-ipset=test --type=hash:net
    success

    上述命令为 IPv4 创建了一个名为 test , 类型为 hash:net 的新的 IP 集。要创建用于 IPv6 的 IP 集,请添加 --option=family=inet6 选项。要使新设置在运行时环境中有效,请重新加载 firewalld

  • 使用以下命令,以 root 用户身份列出新的 IP 集:

    # firewall-cmd --permanent --get-ipsets
    test
  • 要获取有关 IP 集的更多信息,请以 root 用户身份运行以下命令:

    # firewall-cmd --permanent --info-ipset=test
    test
    type: hash:net
    options:
    entries:

    请注意,IP 集目前没有任何条目。

  • 要在 test IP 集中添加一个条目,请以 root 用户身份运行以下命令:

    # firewall-cmd --permanent --ipset=test --add-entry=192.168.0.1
    success

    前面的命令将 IP 地址 192.168.0.1 添加到 IP 集合中。

  • 要获取 IP 集中的当前条目列表,请以 root 用户身份运行以下命令:

    # firewall-cmd --permanent --ipset=test --get-entries
    192.168.0.1
  • 生成包含 IP 地址列表的文件,例如:

    # cat > iplist.txt <<EOL
    192.168.0.2
    192.168.0.3
    192.168.1.0/24
    192.168.2.254
    EOL

    包含 IP 集合 IP 地址列表的文件应该每行包含一个条目。以 hash、分号或空行开头的行将被忽略。

  • 要添加 iplist.txt 文件中的地址,请以 root 用户身份运行以下命令:

    # firewall-cmd --permanent --ipset=test --add-entries-from-file=iplist.txt
    success
  • 要查看 IP 集的扩展条目列表,请以 root 用户身份运行以下命令:

    # firewall-cmd --permanent --ipset=test --get-entries
    192.168.0.1
    192.168.0.2
    192.168.0.3
    192.168.1.0/24
    192.168.2.254
  • 要从 IP 集中删除地址,并检查更新的条目列表,请以 root 用户身份运行以下命令:

    # firewall-cmd --permanent --ipset=test --remove-entries-from-file=iplist.txt
    success
    # firewall-cmd --permanent --ipset=test --get-entries
    192.168.0.1
  • 您可以将 IP 集合作为一个源添加到区,以便处理所有来自 IP 集合中列出的任意地址的网络流量。例如,要将 test IP 集作为源添加到 drop 区域,以便丢弃来自 test IP 集中列出的所有条目的所有数据包,请以 root 用户身份运行以下命令 :

    # firewall-cmd --permanent --zone=drop --add-source=ipset:test
    success

    源中的 ipset: 前缀显示 firewalld 的源是一个 IP 集,而不是 IP 地址或地址范围。

IP 集的创建和删除只限于 permanent 环境,所有其他 IP 集选项也可以用在运行时环境中,而不需要 --permanent 选项。

警告

红帽不推荐使用不是通过 firewalld 管理的 IP 集。要使用这样的 IP 组,需要一个永久直接规则来引用集合,且必须添加自定义服务来创建这些 IP 组件。这个服务需要在 firewalld 启动前启动,否则 firewalld 无法使用这些集合来添加直接规则。您可以使用 /etc/firewalld/direct.xml 文件来添加永久的直接规则。