Red Hat Training

A Red Hat training course is available for RHEL 8

42.2. 丢弃所有与 xdp-filter 规则匹配的网络数据包

您可以使用 xdp-filter 来只允许网络数据包:

  • 来自和到一个特定目的地端口
  • 来自和到一个特定 IP 地址
  • 来自和到特定的 MAC 地址

要做到这一点,请使用 xdp-filterdeny 策略,其定义该过滤器会丢弃所有的网络数据包,与特定规则匹配的除外。例如,如果您不知道要丢弃的数据包的源 IP 地址,请使用这个方法。

警告

如果您在接口上加载 xdp-filter 时将默认策略设为 deny,则内核会立即丢弃来自这个接口的所有数据包,直到您创建允许某些流量的规则。要避免从系统中锁定,在本地输入命令或者通过不同的网络接口连接到主机。

前提条件

  • xdp-tools 软件包已安装。
  • 您登录到本地主机,或使用您不计划过滤流量的网络接口。
  • 支持 XDP 程序的网络驱动程序。

流程

  1. 加载 xdp-filter 来处理特定接口上的数据包,如 enp1s0

    # xdp-filter load enp1s0 -p deny

    (可选)使用 -f feature 选项仅启用特定功能,如 tcpipv4ethernet。仅加载所需的功能而不是全部功能,可以提高数据包处理的速度。要启用多个功能,使用逗号分隔它们。

    如果该命令出错,则网络驱动程序不支持 XDP 程序。

  2. 添加规则以允许匹配它们的数据包。例如:

    • 要允许数据包发送端口 22 ,请输入:

      # xdp-filter port 22

      这个命令添加一个匹配 TCP 和 UDP 流量的规则。要只匹配特定的协议,请将 -p protocol 选项传给命令。

    • 要允许数据包发送到 192.0.2.1 ,请输入:

      # xdp-filter ip 192.0.2.1

      请注意,xdp-filter 不支持 IP 范围。

    • 要允许数据包发送到 MAC 地址 00:53:00:AA:07:BE ,请输入:

      # xdp-filter ether 00:53:00:AA:07:BE
    重要

    xdp-filter 工具不支持有状态数据包检查。这要求您不使用 -m mode 选项设置模式,或者您添加显式规则来允许机器接收传入流量来作为对传出流量的答复。

验证

  • 使用以下命令显示丢弃和允许的数据包统计信息:

    # xdp-filter status

其他资源

  • xdp-filter(8) 手册页。
  • 如果您是开发人员,并且您对 xdp-filter 的代码感兴趣,请从红帽客户门户网站下载并安装相应的源 RPM (SRPM)。