searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

OVS Conntrack介绍

2023-06-16 08:06:23
295
0

一、用途

用于追踪TCP, UDP, ICMP等协议的连接状态(支持statefullstateless),实现有状态的防火墙

二、详细说明

  • 在流表中匹配项表示为ct_state=flags/mask或者ct_state=[+flag…][-flag…]
  • flags描述:
    • trk:报文状态是tracked。如果该标志没有设置,其他的标志也不会被设置。如果这个标志设置了,报文状态为tracked,其他的标志才会被设置。
    • new:新建的连接,此flag一般为uncommitted状态的连接
    • est:已经建立的连接,此flag为committed状态的连接
    • rel:和一个存在连接相关的连接。比如ICMP 目的不可达消息或者FTP数据连接。存在于committed连接。
    • rpl:这个流是反方向,意味着没有初始化连接。存在于committed连接。
    • inv:无效状态,意味着连接跟踪不能识别连接。这个标志包含了一个连接跟踪可能遇到的任何问题,例如:L3/L4协议处理程序没有加载或者不可用。在Linux内核datapath,意味着nf_conntrack_ipv4或者nf_conntrack_ipv6模块没有加载。L3/L4协议处理程序确定报文分组格式不对。报文协议的长度不对。
  • 其他匹配字段:
    • ct_zone:区域是独立的连接跟踪上下文,可以通过CT动作设置。由ct action设置ct_zone值可以用作另一个流量条目的匹配字段。
    • ct_mark:由ct action的 exec参数中的action设置到当前报文所属的连接中的32位元数据。
    • ct_label:由exec参数内的操作提交到的128位标签CT动作,到当前数据包的连接属于。
    • ct_label:由ct action的 exec参数中的action设置到当前报文所属的连接中的128位标签.
    • ct_nw_src / ct_ipv6_src:匹配IPv4/IPv6连接跟踪原始方向元组的源地址。
    • ct_nw_dst / ct_ipv6_dst:匹配IPv4/IPv6连接跟踪原始方向元组的目标地址。
    • ct_nw_proto:匹配连接跟踪原始方向元组的IP协议类型。
    • ct_tp_src:匹配连接跟踪原始方向的元组传输层源端口。
    • ct_tp_dst:匹配连接跟踪原始方向的元组传输层目的端口。
  • ct action描述:
    • commit:将连接提交到连接跟踪模块,该模块对此连接的存储超出报文在管道中的生命周期。
    • force:除以上的commit标志外,还可以使用force标志来有效地终止现有连接并在当前方向开始新连接。
    • table=number:管道处理一分为二。原始报文将继续以未跟踪数据包的形式处理当前动作action列表。报文的另一个实例将发送到连接跟踪程序,之后它将重新注入OpenFlow管道并继续在表number中处理,此时其已设置了ct_state状态和其它ct match匹配字段。
    • zone=value 或 zone=src[start…end]:一个16位的上下文ID,可以将连接隔离在单独的域,允许在不同区域使用重叠的网络地址。如果未提供区域值,则默认为使用区域0。
    • exec([action][,action…]):在连接跟踪上下文中执行受限制的动作集。在exec的动作列表中只接受修改ct_mark 或 ct_label字段的动作。
    • alg=<ftp/tftp>:指定alg(Application Layer Gateway 应用层网关)以跟踪特定连接类型。
    • nat:指定所跟踪的连接的NAT翻译地址和端口。
  • 数据报文可为两个状态:untracked和tracked。untracked报文未进入connection tracker中,标识为-trk,此时执行actions=ct(table=XX),将报文送入connection tracker,报文变为tracked,标识为+trk
  • 连接有两个状态:uncommitted和committed。连接默认状态为uncommitted,为了记录连接信息,连接必须为committed。标识为+trk+new的报文经由actions=ct(commit)变为committed状态直到连接终止。连接建立完成后的数据包标识为+trk+est

三、参考资料

0条评论
0 / 1000
天枫霁月
3文章数
1粉丝数
天枫霁月
3 文章 | 1 粉丝
天枫霁月
3文章数
1粉丝数
天枫霁月
3 文章 | 1 粉丝
原创

OVS Conntrack介绍

2023-06-16 08:06:23
295
0

一、用途

用于追踪TCP, UDP, ICMP等协议的连接状态(支持statefullstateless),实现有状态的防火墙

二、详细说明

  • 在流表中匹配项表示为ct_state=flags/mask或者ct_state=[+flag…][-flag…]
  • flags描述:
    • trk:报文状态是tracked。如果该标志没有设置,其他的标志也不会被设置。如果这个标志设置了,报文状态为tracked,其他的标志才会被设置。
    • new:新建的连接,此flag一般为uncommitted状态的连接
    • est:已经建立的连接,此flag为committed状态的连接
    • rel:和一个存在连接相关的连接。比如ICMP 目的不可达消息或者FTP数据连接。存在于committed连接。
    • rpl:这个流是反方向,意味着没有初始化连接。存在于committed连接。
    • inv:无效状态,意味着连接跟踪不能识别连接。这个标志包含了一个连接跟踪可能遇到的任何问题,例如:L3/L4协议处理程序没有加载或者不可用。在Linux内核datapath,意味着nf_conntrack_ipv4或者nf_conntrack_ipv6模块没有加载。L3/L4协议处理程序确定报文分组格式不对。报文协议的长度不对。
  • 其他匹配字段:
    • ct_zone:区域是独立的连接跟踪上下文,可以通过CT动作设置。由ct action设置ct_zone值可以用作另一个流量条目的匹配字段。
    • ct_mark:由ct action的 exec参数中的action设置到当前报文所属的连接中的32位元数据。
    • ct_label:由exec参数内的操作提交到的128位标签CT动作,到当前数据包的连接属于。
    • ct_label:由ct action的 exec参数中的action设置到当前报文所属的连接中的128位标签.
    • ct_nw_src / ct_ipv6_src:匹配IPv4/IPv6连接跟踪原始方向元组的源地址。
    • ct_nw_dst / ct_ipv6_dst:匹配IPv4/IPv6连接跟踪原始方向元组的目标地址。
    • ct_nw_proto:匹配连接跟踪原始方向元组的IP协议类型。
    • ct_tp_src:匹配连接跟踪原始方向的元组传输层源端口。
    • ct_tp_dst:匹配连接跟踪原始方向的元组传输层目的端口。
  • ct action描述:
    • commit:将连接提交到连接跟踪模块,该模块对此连接的存储超出报文在管道中的生命周期。
    • force:除以上的commit标志外,还可以使用force标志来有效地终止现有连接并在当前方向开始新连接。
    • table=number:管道处理一分为二。原始报文将继续以未跟踪数据包的形式处理当前动作action列表。报文的另一个实例将发送到连接跟踪程序,之后它将重新注入OpenFlow管道并继续在表number中处理,此时其已设置了ct_state状态和其它ct match匹配字段。
    • zone=value 或 zone=src[start…end]:一个16位的上下文ID,可以将连接隔离在单独的域,允许在不同区域使用重叠的网络地址。如果未提供区域值,则默认为使用区域0。
    • exec([action][,action…]):在连接跟踪上下文中执行受限制的动作集。在exec的动作列表中只接受修改ct_mark 或 ct_label字段的动作。
    • alg=<ftp/tftp>:指定alg(Application Layer Gateway 应用层网关)以跟踪特定连接类型。
    • nat:指定所跟踪的连接的NAT翻译地址和端口。
  • 数据报文可为两个状态:untracked和tracked。untracked报文未进入connection tracker中,标识为-trk,此时执行actions=ct(table=XX),将报文送入connection tracker,报文变为tracked,标识为+trk
  • 连接有两个状态:uncommitted和committed。连接默认状态为uncommitted,为了记录连接信息,连接必须为committed。标识为+trk+new的报文经由actions=ct(commit)变为committed状态直到连接终止。连接建立完成后的数据包标识为+trk+est

三、参考资料

文章来自个人专栏
天枫霁月的专栏
2 文章 | 1 订阅
0条评论
0 / 1000
请输入你的评论
0
0