系统管理指南:IP 服务

使用 pfil 模块

本节介绍如何使用 pfil STREAMS 模块激活或取消激活 Oracle Solaris : IP 过滤器以及如何查看 pfil 统计信息。该过程只适用于运行下列 Oracle Solaris 10 发行版之一的系统:

以下任务列表提供了与配置 pfil 模块关联的过程。

表 26–3 使用 pfil 模块(任务列表)

任务 

说明 

参考 

启用 Oracle Solaris : IP 过滤器 

缺省情况下不启用 Oracle Solaris : IP 过滤器。必须手动启用它,或者使用 /etc/ipf/ 目录中的配置文件并重新引导系统。

如何在以前的 Oracle Solaris 10 发行版中启用 Oracle Solaris : IP 过滤器

为包过滤激活 NIC 

配置 pfil 模块,以在 NIC 上激活包过滤

如何为包过滤激活 NIC

在 NIC 上取消激活 Oracle Solaris : IP 过滤器 

删除 NIC 并允许所有包通过 NIC。 

如何在 NIC 上取消激活 Oracle Solaris : IP 过滤器

查看 pfil 统计信息。

使用 ndd 命令查看 pfil 模块的统计信息,以帮助对 Oracle Solaris : IP 过滤器进行故障排除。

如何查看 Oracle Solaris : IP 过滤器的 pfil 统计信息

Procedure如何在以前的 Oracle Solaris 10 发行版中启用 Oracle Solaris : IP 过滤器

Oracle Solaris : IP 过滤器与 Oracle Solaris : 一同安装。但是,缺省情况下不启用包过滤。使用以下过程可以激活 Oracle Solaris : IP 过滤器。


注 –

如果您的系统运行的是 Solaris 10 7/07 发行版或更高版本,请执行如何启用 Oracle Solaris : IP 过滤器过程(使用包过滤器钩子)。


  1. 承担拥有 IP 过滤器管理权限配置文件的角色,或者成为超级用户。

    可以将 IP 过滤器管理权限配置文件指定给您创建的角色。有关如何创建该角色并将其指定给用户,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”

  2. 启动所选的文件编辑器,然后编辑 /etc/ipf/pfil.ap 文件。

    此文件包含主机上网络接口卡 (network interface card, NIC) 的名称。缺省情况下,这些名称已被注释掉。对传输要过滤的网络通信流量的设备名称取消注释。如果未列出您系统的 NIC 名称,则添加一行以指定 NIC。


    # vi /etc/ipf/pfil.ap
    # IP Filter pfil autopush setup
    #
    # See autopush(1M) manpage for more information.
    #
    # Format of the entries in this file is:
    #
    #major  minor lastminor modules
    
    #le     -1      0       pfil
    #qe     -1      0       pfil
    hme     -1      0       pfil (Device has been uncommented for filtering)
    #qfe    -1      0       pfil
    #eri    -1      0       pfil
    #ce     -1      0       pfil
    #bge    -1      0       pfil
    #be     -1      0       pfil
    #vge    -1      0       pfil
    #ge     -1      0       pfil
    #nf     -1      0       pfil
    #fa     -1      0       pfil
    #ci     -1      0       pfil
    #el     -1      0       pfil
    #ipdptp -1      0       pfil
    #lane   -1      0       pfil
    #dmfe   -1      0       pfil
  3. 通过重新启动 network/pfil 服务实例,激活对 /etc/ipf/pfil.ap 文件所做的更改。


    # svcadm restart network/pfil
    
  4. 创建包过滤规则集。

    包过滤规则集包含由 Oracle Solaris : IP 过滤器使用的包过滤规则。如果希望在引导时装入包过滤规则,请编辑 /etc/ipf/ipf.conf 文件以实现 IPv4 包过滤。对于 IPv6 包过滤规则,请使用 /etc/ipf/ipf6.conf 文件。如果不希望在引导时装入包过滤规则,请将这些规则放置在所选的文件中,然后手动激活包过滤。有关包过滤的信息,请参见使用 Oracle Solaris : IP 过滤器的包过滤功能。有关使用配置文件的信息,请参见创建和编辑 Oracle Solaris : IP 过滤器配置文件

  5. (可选)创建网络地址转换 (network address translation, NAT) 配置文件。


    注 –

    网络地址转换 (Network Address Translation, NAT) 不支持 IPv6。


    如果要使用网络地址转换,请创建 ipnat.conf 文件。如果希望在引导时装入 NAT 规则,请创建一个名为 /etc/ipf/ipnat.conf 的文件,在其中放置 NAT 规则。如果不希望在引导时装入 NAT 规则,请将 ipnat.conf 文件放置在所选的位置中,然后手动激活 NAT 规则。

    有关 NAT 的更多信息,请参见使用 Oracle Solaris : IP 过滤器的 NAT 功能

  6. (可选)创建地址池配置文件。

    如果要将一组地址作为单个地址池引用,请创建 ipool.conf 文件。如果希望在引导时装入地址池配置文件,请创建一个名为 /etc/ipf/ippool.conf 的文件,在其中放置地址池。如果不希望在引导时装入地址池配置文件,请将 ippool.conf 文件放置在所选的位置中,然后手动激活这些规则。

    一个地址池可以只包含 IPv4 地址和 IPv6 地址中的一种,也可以同时包含这两种地址。

    有关地址池的更多信息,请参见使用 Oracle Solaris : IP 过滤器的地址池功能

  7. 使用以下方法之一激活 Oracle Solaris : IP 过滤器:

    • 启用 IP 过滤器并重新引导计算机。


      # svcadm enable network/ipfilter
      # reboot
      

      注 –

      如果无法在 NIC 上安全地使用 ifconfig unplumbifconfig plumb 命令,则需要重新引导。


    • 通过使用 ifconfig unplumbifconfig plumb 命令启用 NIC。然后启用 IP 过滤器。必须检测接口的 inet6 版本,以便实现 IPv6 包过滤。


      # ifconfig hme0 unplumb
      # ifconfig hme0 plumb 192.168.1.20 netmask 255.255.255.0 up
      # ifconfig hme0 inte6 unplumb
      # ifconfig hme0 inet6 plumb fec3:f849::1/96 up
      # svcadm enable network/ipfilter
      

      有关 ifconfig 命令的更多信息,请参见 ifconfig(1M) 手册页。

Procedure如何为包过滤激活 NIC

如果 /etc/ipf/ipf.conf 文件(或使用 IPv6 时的 /etc/ipf/ipf6.conf 文件)存在,则在引导时启用 Oracle Solaris : IP 过滤器。如果需要在启用 Oracle Solaris : IP 过滤器后在 NIC 上启用过滤,请使用以下过程。

  1. 承担拥有 IP 过滤器管理权限配置文件的角色,或者成为超级用户。

    可以将 IP 过滤器管理权限配置文件指定给您创建的角色。有关如何创建该角色并将其指定给用户,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”

  2. 启动所选的文件编辑器,然后编辑 /etc/ipf/pfil.ap 文件。

    此文件包含主机上 NIC 的名称。缺省情况下,这些名称已被注释掉。对传输要过滤的网络通信流量的设备名称取消注释。如果未列出您系统的 NIC 名称,则添加一行以指定 NIC。


    # vi /etc/ipf/pfil.ap
    # IP Filter pfil autopush setup
    #
    # See autopush(1M) manpage for more information.
    #
    # Format of the entries in this file is:
    #
    #major  minor lastminor modules
    
    #le     -1      0       pfil
    #qe     -1      0       pfil
    hme     -1      0       pfil (Device has been uncommented for filtering)
    #qfe    -1      0       pfil
    #eri    -1      0       pfil
    #ce     -1      0       pfil
    #bge    -1      0       pfil
    #be     -1      0       pfil
    #vge    -1      0       pfil
    #ge     -1      0       pfil
    #nf     -1      0       pfil
    #fa     -1      0       pfil
    #ci     -1      0       pfil
    #el     -1      0       pfil
    #ipdptp -1      0       pfil
    #lane   -1      0       pfil
    #dmfe   -1      0       pfil
  3. 通过重新启动 network/pfil 服务实例,激活对 /etc/ipf/pfil.ap 文件所做的更改。


    # svcadm restart network/pfil
    
  4. 使用以下方法之一启用 NIC:

    • 重新引导计算机。


      # reboot
      

      注 –

      如果无法在 NIC 上安全地使用 ifconfig unplumbifconfig plumb 命令,则需要重新引导。


    • ifconfig 命令与 unplumbplumb 选项一起使用,以启用要过滤的 NIC。必须检测每个接口的 inet6 版本,以便实现 IPv6 包过滤。


      # ifconfig hme0 unplumb
      # ifconfig hme0 plumb 192.168.1.20  netmask 255.255.255.0  up
      # ifconfig hme0 inet6 unplumb
      # ifconfig hme0 inet6 plumb fec3:f840::1/96 up
      

      有关 ifconfig 命令的更多信息,请参见 ifconfig(1M) 手册页。

Procedure如何在 NIC 上取消激活 Oracle Solaris : IP 过滤器

如果需要在 NIC 上停止过滤包,请使用以下过程。

  1. 承担拥有 IP 过滤器管理权限配置文件的角色,或者成为超级用户。

    可以将 IP 过滤器管理权限配置文件指定给您创建的角色。有关如何创建该角色并将其指定给用户,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”

  2. 启动所选的文件编辑器,然后编辑 /etc/ipf/pfil.ap 文件。

    此文件包含主机上 NIC 的名称。已经用于过滤网络通信流量的 NIC 被取消注释。注释掉不再希望用来过滤网络通信流量的设备名称。


    # vi /etc/ipf/pfil.ap
    # IP Filter pfil autopush setup
    #
    # See autopush(1M) manpage for more information.
    #
    # Format of the entries in this file is:
    #
    #major  minor lastminor modules
    
    #le     -1      0       pfil
    #qe     -1      0       pfil
    #hme    -1      0       pfil (Commented-out device no longer filters network traffic)
    #qfe    -1      0       pfil
    #eri    -1      0       pfil
    #ce     -1      0       pfil
    #bge    -1      0       pfil
    #be     -1      0       pfil
    #vge    -1      0       pfil
    #ge     -1      0       pfil
    #nf     -1      0       pfil
    #fa     -1      0       pfil
    #ci     -1      0       pfil
    #el     -1      0       pfil
    #ipdptp -1      0       pfil
    #lane   -1      0       pfil
    #dmfe   -1      0       pfil
  3. 使用以下方法之一取消激活 NIC:

    • 重新引导计算机。


      # reboot
      

      注 –

      如果无法在 NIC 上安全地使用 ifconfig unplumbifconfig plumb 命令,则需要重新引导。


    • ifconfig 命令与 unplumbplumb 选项一起使用,以取消激活 NIC。必须取消检测每个接口的 inet6 版本,以便取消激活 IPv6 包过滤。请执行以下步骤。系统中的样例设备为 hme

      1. 标识取消激活的设备的主要编号。


        # grep hme /etc/name_to_major
        hme 7
      2. 显示 hme0 的当前 autopush 配置。


        # autopush -g -M 7 -m 0
           Major     Minor     Lastminor       Modules
               7      ALL          -           pfil
      3. 删除 autopush 配置。


        # autopush -r -M 7 -m 0
        
      4. 打开设备并为设备指定 IP 地址。


        # ifconfig hme0 unplumb
        # ifconfig hme0 plumb 192.168.1.20  netmask 255.255.255.0  up
        # ifconfig hme0 inet6 unplumb
        # ifconfig hme0 inet6 plumb fec3:f840::1/96 up
        

        有关 ifconfig 命令的更多信息,请参见 ifconfig(1M) 手册页。

Procedure如何查看 Oracle Solaris : IP 过滤器的 pfil 统计信息

在对 Oracle Solaris : IP 过滤器进行故障排除时,可以查看 pfil 统计信息。

  1. 承担拥有 IP 过滤器管理权限配置文件的角色,或者成为超级用户。

    可以将 IP 过滤器管理权限配置文件指定给您创建的角色。有关如何创建该角色并将其指定给用户,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”

  2. 查看 pfil 统计信息。


    # ndd -get /dev/pfil qif_status
    

示例 26–1 查看 Oracle Solaris : IP 过滤器的 pfil 统计信息

以下示例显示如何查看 pfil 统计信息。


# ndd -get /dev/pfil qif_status
ifname ill q OTHERQ num sap hl nr nw bad copy copyfail drop notip nodata
   notdata
QIF6 0 300011247b8 300011248b0 6 806 0 4 9 0 0 0 0 0 0 0
dmfe1 3000200a018 30002162a50 30002162b48 5 800 14 171 13681 0 0 0 0 0 0 0