3.2. 丢弃所有与 xdp-filter 规则匹配的网络数据包
您可以使用 xdp-filter
来只允许网络数据包:
- 来自和到一个特定目的地端口
- 来自和到一个特定 IP 地址
- 来自和到特定的 MAC 地址
要做到这一点,请使用 xdp-filter
的 deny
策略,其定义该过滤器会丢弃所有的网络数据包,与特定规则匹配的除外。例如,如果您不知道要丢弃的数据包的源 IP 地址,请使用这个方法。
如果您在接口上加载 xdp-filter
时将默认策略设为 deny
,则内核会立即丢弃来自这个接口的所有数据包,直到您创建允许某些流量的规则。要避免从系统中锁定,在本地输入命令或者通过不同的网络接口连接到主机。
先决条件
-
xdp-tools
软件包已安装。 - 您登录到本地主机,或使用您不计划过滤流量的网络接口。
- 支持 XDP 程序的网络驱动程序。
流程
加载
xdp-filter
来处理特定接口上的数据包,如enp1s0
:# xdp-filter load enp1s0 -p deny
(可选)使用
-f feature
选项仅启用特定功能,如tcp
、ipv4
或ethernet
。仅加载所需的功能而不是全部功能,从而提高数据包处理的速度。要启用多个功能,使用逗号分隔它们。如果该命令出错,则网络驱动程序不支持 XDP 程序。
添加规则以允许匹配它们的数据包。例如:
要允许数据包发送端口
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)。