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

conntrack-tools简介

2023-05-10 03:13:57
124
0

一、简要介绍

  • 官网:https://netfilter.org/projects/conntrack-tools/index.html
  • git库:https://git.netfilter.org/conntrack-tools/
  • conntrack-tools包括:conntrack、conntrackd、nfct。
    • conntrack:从用户空间查看和管理内核的连接跟踪表
    • conntrackd:可以用在热备场景下在多台机器直接实时同步连接跟踪表。
    • nfct:目前只支持nfnetlink_cttimeout。从长远来看,希望通过提供类似于nftables的语法来替代conntrack。
  • 需要内核加载nf_conntrack_netlink和nfnetlink模块,且net.netflilter.nf_conntrack_events=1(默认值)。
  • 依赖的库有:
    • libnetfilter_conntrack
    • libnetfilter_cthelpter
    • libnetfilter_cttimeout
    • libnetfilter_queue
    • libnfnetlink
    • libmnl
  • 主要功能有:
    • 支持用纯文本或XML格式列出conntrack表的内容
    • 在conntrack表中搜索特定条目
    • 向conntrack表添加新条目
    • 列出expect表的条目
    • 向expect表添加新条目
    • 添加/删除/更新连接跟踪超时策略
  • 应用场景:
    • conntrack可以用来查看/监控连接信息(状态)的变更。
    • conntrackd可以用于无缝双机热备环境,Linux主机可以实时的将一台机器的conntrack信息同步到相应的备机上,一旦主机宕机IP地址漂到备机,流量就会无缝的经过备机,而不需要在流量经过备机时重新生成conntrack信息(因为在重新生成的情况下,对于已经建立连接的TCP流量会有问题的)。

二、使用

  • Centos7安装:yum install -y conntrack-tools
  • 示例1:conntrack -L:打印连接跟踪表,和cat /proc/net/nf_conntrack效果一样。

  • 示例2:实时捕捉连接的状态变化
    • -o [extended,xml,timestamp,id,ktimestamp,labels] 选项指定输出的一些格式,如:
      • -o timestamp:每条打印前会加上timestamp,需要自己转换成可读的日期格式,如date "+%Y-%m-%d %H:%M:%S" -d @xxxxxxx。
      • -o ktimestamp:连接destroy是会打印连接的start和stop时间。ktimestamp需要sysctl -w net.netfilter.nf_conntrack_timestamp=1。
      • -o id:会打印每条连接的ID,这样可以通过ID来识别同一条连接。
    • -e [ALL|NEW|UPDATES|DESTORY][,...]选项只监听指定的事件,减少上报的数量。

三、实现原理

通过netlink和内核的nf_conntrack_netlink模块进行通信来查询/操作连接跟踪表。

源码涉及3个包:conntrack-tools->libnetfilter_conntrack->libnfnetlink

0条评论
0 / 1000
rysf
5文章数
0粉丝数
rysf
5 文章 | 0 粉丝
原创

conntrack-tools简介

2023-05-10 03:13:57
124
0

一、简要介绍

  • 官网:https://netfilter.org/projects/conntrack-tools/index.html
  • git库:https://git.netfilter.org/conntrack-tools/
  • conntrack-tools包括:conntrack、conntrackd、nfct。
    • conntrack:从用户空间查看和管理内核的连接跟踪表
    • conntrackd:可以用在热备场景下在多台机器直接实时同步连接跟踪表。
    • nfct:目前只支持nfnetlink_cttimeout。从长远来看,希望通过提供类似于nftables的语法来替代conntrack。
  • 需要内核加载nf_conntrack_netlink和nfnetlink模块,且net.netflilter.nf_conntrack_events=1(默认值)。
  • 依赖的库有:
    • libnetfilter_conntrack
    • libnetfilter_cthelpter
    • libnetfilter_cttimeout
    • libnetfilter_queue
    • libnfnetlink
    • libmnl
  • 主要功能有:
    • 支持用纯文本或XML格式列出conntrack表的内容
    • 在conntrack表中搜索特定条目
    • 向conntrack表添加新条目
    • 列出expect表的条目
    • 向expect表添加新条目
    • 添加/删除/更新连接跟踪超时策略
  • 应用场景:
    • conntrack可以用来查看/监控连接信息(状态)的变更。
    • conntrackd可以用于无缝双机热备环境,Linux主机可以实时的将一台机器的conntrack信息同步到相应的备机上,一旦主机宕机IP地址漂到备机,流量就会无缝的经过备机,而不需要在流量经过备机时重新生成conntrack信息(因为在重新生成的情况下,对于已经建立连接的TCP流量会有问题的)。

二、使用

  • Centos7安装:yum install -y conntrack-tools
  • 示例1:conntrack -L:打印连接跟踪表,和cat /proc/net/nf_conntrack效果一样。

  • 示例2:实时捕捉连接的状态变化
    • -o [extended,xml,timestamp,id,ktimestamp,labels] 选项指定输出的一些格式,如:
      • -o timestamp:每条打印前会加上timestamp,需要自己转换成可读的日期格式,如date "+%Y-%m-%d %H:%M:%S" -d @xxxxxxx。
      • -o ktimestamp:连接destroy是会打印连接的start和stop时间。ktimestamp需要sysctl -w net.netfilter.nf_conntrack_timestamp=1。
      • -o id:会打印每条连接的ID,这样可以通过ID来识别同一条连接。
    • -e [ALL|NEW|UPDATES|DESTORY][,...]选项只监听指定的事件,减少上报的数量。

三、实现原理

通过netlink和内核的nf_conntrack_netlink模块进行通信来查询/操作连接跟踪表。

源码涉及3个包:conntrack-tools->libnetfilter_conntrack->libnfnetlink

文章来自个人专栏
文章 | 订阅
0条评论
0 / 1000
请输入你的评论
0
0