简介
前几篇文章已经介绍了表达式的基本概念,数据类型、还有各种不同类型的表达式规则。表达式的使用方式非常复杂也非常灵活,具体怎么使用要根据自己的实际需求来确定。本篇文章主要介绍集中nftables中的策略设置,以便加深对表达式的理解。
实验环境
限速
我们在做iptables和firewalld测试的时候都做过相关数据包限速的功能,大家还记得iptables/firewalld是如何实现对数据包进行限速的吗?如果不记得可以查看前面有关iptables和firewalld的相关文章。
基于数据包限速
假设我都nftables主机的192.168.140.250接口每分钟最多接收10个ICMP echo-request报文,那么我们该如何设置呢?
基于速率的限速
如果我想要限速从192.168.140.248接收数据包的速率限制为1mbytes/s该如何限制呢?
匹配数据包头部信息
匹配以太网头部信息
现在我要匹配从192.168.140.128来的数据包的数量信息,但是不是通过ip地址来匹配,而是通过mac地址来匹配进行计数,该如何操作呢?
匹配IP头部信息
其实我们前面所配置的ip saddr就已经匹配了IP头部的ip地址信息字段了,ip头部有哪些信息可以通过前面的文章进行回顾一下,我这里也放一张简单的图来看一下:
匹配tcp端口信息
匹配arp头部信息
arp地址族
ARP地址族处理系统接收和发送的ARP报文。它通常用于对ARP报文进行分组。
ARP address family hooks
钩子(Hook) | 描述(Description) |
---|---|
input | 发送到本地系统的数据包通过输入钩子(input hook)进行处理。 |
output | 由本地系统发送的数据包通过输出钩子(output hook)进行处理。 |
可以通过限制arp信息来限制某些arp请求,例如,现在需要限制拒绝接收192.168.140.248来的arp请求,即丢弃从192.168.140.248来的arp请求。
测试
手动添加arp信息
匹配路由信息
匹配元数据信息
匹配接口信息
如果我需要匹配这台主机的接口数据信息,那么可以直接通过前面介绍的元数据表达式来实现该功能。
基于时间匹配策略
如果我们在应用策略的时候需要设置策略的生效时间,那么可以基于时间设置。比如每天8:00-19:00拒绝从192.168.140.199来的数据包,那么我们该如何做呢?
匹配连接状态
我们在iptables --state模块中介绍过有关连接状态的信息,在firewalld中也有介绍对应的信息,详细介绍可以参考iptables扩展模块--state,nftables可以通过CONNTRACK EXPRESSIONS表达式来设置对应内容。
设置本机可以主动发起连接,但是不能被动连接
设置本机可以主动发起连接,但是从192.168.140.248来的数据包不能主动发起连接。
总结
以上基本的配置内容只是作为前面表达式的补充,更多的配置方式需要大家自己根据自己的想法和需求进行尝试。可以与我们前面iptables、friewalld中的策略进行对比实验,能更深入的理解iptables、firewalld、nftables配置与实现方式的逻辑。
版权声明:
本文来源网络,所有图片文章版权属于原作者,如有侵权,联系删除。
本文网址:https://www.mushiming.com/mjsbk/561.html