Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

5.12.2. 为 IP 集合配置自定义服务

要将自定义服务配置为在 firewalld 启动前创建和加载 IP 设置结构:
  1. 使用以 root 用户身份运行的编辑器,按如下所示创建一个文件:
    ~]# vi /etc/systemd/system/ipset_name.service
    [Unit]
    Description=ipset_name
    Before=firewalld.service
    
    [Service]
    Type=oneshot
    RemainAfterExit=yes
    ExecStart=/usr/local/bin/ipset_name.sh start
    ExecStop=/usr/local/bin/ipset_name.sh stop
    
    [Install]
    WantedBy=basic.target
  2. firewalld 中永久使用 IP 集:
    ~]# vi /etc/firewalld/direct.xml
    <?xml version="1.0" encoding="utf-8"?>
    <direct>
    	<rule ipv="ipv4" table="filter" chain="INPUT" priority="0">-m set --match-set <replaceable>ipset_name</replaceable> src -j DROP</rule>
    </direct>
  3. 激活更改需要重新载入 firewalld
    ~]# firewall-cmd --reload
    这会在不丢失状态信息的情况下重新加载防火墙(TCP 会话不会终止),但在重新加载期间可能会中断服务。
警告
红帽不推荐使用不通过 firewalld 管理的 IP 集。要使用这样的 IP 组,需要一个永久直接规则来引用集合,且必须添加自定义服务来创建这些 IP 组件。此服务需要在 firewalld 启动前启动,否则 firewalld 无法使用这些集合添加直接规则。您可以使用 /etc/firewalld/direct.xml 文件添加永久直接规则。