linux conntrack?linux版软件网站
本篇文章给大家谈谈linux conntrack,以及linux版软件网站对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔。
Linux会话同步工具conntrackd使用详解
本文详细介绍了conntrackd的使用与配置,旨在帮助用户更好地理解与应用这一Linux会话同步工具。以下为conntrackd的关键参数与配置说明,方便用户根据需求进行调整与优化。
参数说明
使用conntrackd时,可输入以下命令进行操作:
-d:开启conntrackd守护进程
-C:按指定路径下的配置文件执行conntrackd命令
-k:杀死已开启的conntrackd守护进程
-i:显示本机的会话状态(开启同步后,会发送到其他主机的会话状态)
-e:显示外部的会话状态(接收到其他主机发送的会话状态)
-f [internal| external]:清空conntrackd中存储的会话状态(可指定本机会话或外部会话,默认全清)
-c:提交外部的会话状态到本机的conntrack会话表(等价于conntrack新建会话)
-B:强制发送本机的会话状态给其他副本主机(对应conntrackd internal表中的会话状态,而非内核的conntrack会话表)
-n:请求与其他节点主机重新开始同步
-R:强制根据内核的conntrack会话表与其他节点主机重新开始同步
-s:显示conntrackd同步相关的统计数据
-t:重置内核计时器
配置说明
默认配置文件路径为/etc/conntrackd/conntrackd.conf。
Sync模式
FTFW:消息跟踪模式,可用于从消息丢失、重新排序和损坏中恢复,通常与UDP或组播结合使用。
ResendQueueSize:重发队列大小,也是存储等待提交的会话表大小,默认值为131072。
CommitTimeout:提交会话状态的初始固定超时(老化时间),默认值为180。
PurgeTimeout:清除时间,当当前主机由主副本切换到备副本时,清除内核conntrack会话表中已提交但未命中的同步会话状态项的延时。
ACKWindowSize:确认窗口大小,与重发队列相关,默认值为300。
DisableExternalCache:禁用外部会话状态表(对应参数-e),其他主机发送的会话状态会被直接提交到内核的conntrack会话表中,默认值为no(不启用)。
StartupResync:启动时重新同步,在conntrackd启动时要求其他的副本节点同步完整的会话状态表,默认值为no(不启用)。
Sync模式- ALARM
刷新时间:如果内核的conntrack会话表在设置的刷新时间内没有更新,则进行一次会话表的同步发送。
CacheTimeout:缓存超时,如果在设置的缓存超时的时间内没有收到外部会话状态表中某个会话状态的相关信息,则将该条会话状态删除。
Sync模式- NOTRACK
禁用内部会话状态表(对应参数-i),需要同步的会话状态消息将直接发送。
Protocol
Multicast:组播模式,通过组播地址与组播标识符进行同步。
IPv4_address:组播IPv4地址,无需添加到任何网口。
Group:组,组播的组标识。
IPv4_interface:网口IPv4地址,用于同步消息的网口IP地址。
Interface:网口名称。
SndSocketBuffer:发送套接字的缓冲区大小。
RcvSocketBuffer:接收套接字的缓冲区大小。
Checksum:是否启用同步消息的校验和验证。
Protocol- UDP
IPv4_address:用于监听UDP同步消息的本机网口的IPv4地址。
IPv6_address:用于监听UDP同步消息的本机网口的IPv6地址。
IPv4_Destination_Address:用于发送UDP同步消息的目的副本网口的IPv4地址。
IPv6_Destination_Address:用于发送UDP同步消息的目的副本网口的IPv6地址。
Port:UDP同步消息所使用的端口号。
Interface:同Multicast协议。
SndSocketBuffer:同Multicast协议。
RcvSocketBuffer:同Multicast协议。
Checksum:同Multicast协议。
Protocol- TCP
同UDP协议。
Options
TCPWindowTracking:TCP状态条目窗口跟踪,默认值为no(不启用)。
ExpectationSync:期望协议同步,默认关闭。
General
Systemd:是否启用systemd服务。
Nice:已弃用。
HashSize:Hash桶数量。
HashLimit:Hash条目数量,应为/proc/sys/net/netfilter/nf_conntrack_max的两倍。
LogFile:是否启用日志,日志文件路径为/var/log/conntrackd.log。
Syslog:是否通过syslog记录连接日志,默认为no(不启用)。
Lockfile:conntrackd运行时的锁定文件路径,默认为/var/lock/conntrack.lock。
NetlinkBufferSize:Netlink监听事件套接字的缓冲区大小。
NetlinkBufferSizeMaxGrowth:Netlink监听事件套接字的缓冲区增长大小。
NetlinkOverrunResync:conntrackd与内核重新同步的时延。
NetlinkEventsReliable:是否启用Netlink进行可靠的事件报告。
PollSecs:轮询时间。
EventIterationLimit:conntrackd处理内核状态更改事件的最大数目。
Unix
Path:Unix套接字路径。
Backlog:已弃用。
Filter
Protocol{}:仅同步或忽略的协议集。
Address{}:仅同步或忽略的地址集。
State{}:仅同步或忽略的状态集(TCP相关)。
Scheduler
Type:进程调度策略,RR或FIFO,默认为RR。
Priority:进程调度优先级,0-99,默认为99。
Stats
LogFile:是否启用日志,启用后将输出会话销毁相关的信息到日志文件。
NetlinkEventsReliable:是否启用Netlink进行可靠的事件报告。
Syslog:是否通过syslog记录连接日志,默认为no(不启用)。
参考资料
conntrack-tools.netfilter.org...
manpages.debian.org/tes...
manpages.debian.org/tes...
Linux中的conntrack命令深入解析
深入解析Linux中的conntrack命令,它是netfilter连接跟踪系统的直接访问工具。文章从conntrack的由来、底层原理、参数意义及常见用法,到返回结果的详细解释,全面揭示了其强大功能与应用。
conntrack的由来基于Linux内核的netfilter项目,该功能支持网络包处理,包括包过滤(防火墙)、网络地址转换(NAT)和连接跟踪。其目的是管理和监控netfilter的连接跟踪系统,记录所有网络连接的状态信息。
conntrack的底层原理基于netfilter的连接跟踪表,表位于内核空间,每经过网络包,连接跟踪系统检查并更新内部连接状态表,包含连接是否建立、关闭等信息。
conntrack命令包含多种参数,用于执行不同操作。例如,使用`conntrack-L`查看所有连接,`conntrack-p tcp`或`conntrack-p udp`查看特定协议的连接,`conntrack-E`实时显示连接事件。
返回结果详细解释了每个字段的含义,如`conntrack-L`输出中的连接ID、协议、状态、源和目的IP等。根据示例输出,理解各字段的具体功能。
常见用法包括列出所有连接、过滤特定协议连接、删除指定连接、显示具有特定状态的连接条目、过滤特定IP或端口的连接条目,以及监听和显示连接跟踪事件。
此外,还涵盖了从连接跟踪表中删除与特定IP相关的所有连接、利用NAT信息删除连接条目等高级功能。在使用时,需注意一些关键事项,确保安全和高效管理网络连接。
连接跟踪 (conntrack)
一般conntrack用来指代“Connection Tracking”,即连接跟踪,是建立在 Netfilter框架之上的重要功能之一。连接跟踪允许内核跟踪所有逻辑网络连接或会话,从而关联可能构成该连接的所有数据包。 NAT依赖此信息以相同的方式转换所有相关数据包,而 iptables可以使用此信息充当有状态防火墙。
Conntrack modules and hooks这篇文章的概览很清楚地介绍了连接跟踪系统的作用,这里翻译记录在这里,对我来说其中最重要的一点是理解conntrack是一位“透明观察者”:
连接跟踪的目的是什么,它有什么作用?一旦激活连接跟踪(Linux内核中的 ct系统),它会检查 IPv4和/或 IPv6网络数据包及其有效负载,以确定哪些数据包相互关联,例如在面向连接的协议(如 TCP)的范围内。 ct系统作为透明观察者执行此任务,并不积极参与端点之间的通信。连接的端点是本地的还是远程与 ct系统无关。它们可以都位于远程主机上,在这种情况下,ct系统在给特定连接的数据包充当路由或桥接角色的主机上观察它们。一个连接中的一个甚至两个端点都可以是运行 ct系统的同一主机上的本地套接字。这对ct系统来说没区别。 ct系统维护所有跟踪连接的最新(实时)列表。基于此,它通过为每个数据包提供一个指向其跟踪连接实例之一的引用(指针)来给网络数据包遍历内核网络堆栈时“分类”。因此,其他内核组件可以访问此连接关联并基于此做出决策。使用它的两个最突出的候选者是 NAT子系统以及Iptables和Nftables的状态包过滤模块。 ct系统本身从不改变/操纵数据包。它通常也不会丢弃数据包,只可能在极少数情况下发生这种情况。在检查数据包内容时,它主要关注 OSI模型的第 3层和第 4层。它能够跟踪 TCP、UDP、ICMP、ICMPv6、SCTP、DCCP和 GRE连接。可见ct系统对“连接”的定义不限于面向连接的协议,因为刚才提到的某些协议不是面向连接的。例如它将 ICMP echo请求和echo回复(ping)视为“连接”并处理。 ct系统提供了几个辅助/扩展组件,将其跟踪能力扩展到应用层,例如跟踪协议,如 FTP、TFTP、IRC、PPTP、SIP等。
conntrack-tools是一组用于 Linux的免费软件用户空间工具,允许系统管理员与连接跟踪系统进行交互,conntrack-tools包括用户空间守护进程 conntrackd和命令行界面 conntrack。
内核中关于conntrack模块的配置参数及默认值可以参考 Kernel文档或者通过命令 sysctl-a| grep conntrack来查看