Linux中的conntrack命令深入解析

在Linux网络管理和监控领域,conntrack命令是一个强大的工具,它提供了对netfilter连接跟踪系统的直接访问🔍。这篇文章将深入探讨conntrack的由来、底层原理、参数意义,以及其常见用法,并对返回结果的每个字段进行详细解释。

1. conntrack的由来📜

conntrack命令源于Linux的netfilter项目🌐,这是一个内置于Linux内核中的网络包处理模块。Netfilter支持各种网络相关任务,如包过滤(防火墙)🔥、网络地址转换(NAT)🔄和连接跟踪。conntrack工具最初设计的目的是为了管理和监视netfilter的连接跟踪系统,这个系统记录了所有经过防火墙的网络连接的状态信息。

2. 底层原理🔬

conntrack工具的底层原理基于netfilter的连接跟踪表📈,该表位于内核空间。每当网络包经过netfilter时,连接跟踪系统会检查包的信息,如源IP地址、目的IP地址、传输层协议(TCP/UDP)、端口等,并据此更新内部的连接跟踪表。这个表包含了所有活跃连接的状态信息,例如是否已建立连接、连接是否已关闭等。

3. 参数解释📋

conntrack命令支持多种参数,用于执行不同的操作✅:

  • -L, --list:列出连接跟踪表中的所有条目。
  • -G, --get:获取单个连接跟踪条目的信息。
  • -D, --delete:从连接跟踪表中删除条目。
  • -I, --create:创建一个新的连接跟踪条目。
  • -U, --update:更新已存在的连接跟踪条目。
  • -E, --event:监听连接跟踪事件。

4. conntrack返回结果解释

当你运行conntrack -L时,会看到类似以下的输出:

tcp      6 431999 ESTABLISHED src=192.168.1.2 dst=93.184.216.34 sport=34567 dport=80 [UNREPLIED] src=93.184.216.34 dst=192.168.1.2 sport=80 dport=34567

每个字段的含义如下📝:

  1. 协议:表示连接使用的协议,如tcpudp等。

  2. 协议号:表示连接使用的协议号,如6代表tcp连接、17代表udp连接等。

  3. TCP状态计数器,可以理解为超时时间(Timeout):表示连接条目在连接跟踪表中保持的剩余时间(秒)。当这个时间到达0时,条目将被自动从跟踪表中移除。

    • 对于TCP连接,该数字表示连接跟踪条目在内核连接跟踪表中的剩余时间。这个计时器的值会根据连接的状态(如ESTABLISHED、TIME_WAIT等)和配置的超时设置变化。计时器的值为零时,连接跟踪条目会从表中删除。
    • 对于非TCP连接(如UDP),因为UDP是无连接的,所以这个计数器代表连接跟踪条目在没有任何新的数据包更新的情况下,还可以在连接跟踪表中存活多长时间。
  4. 连接状态:描述TCP连接的当前状态。

    • ESTABLISHED:已建立连接
    • TIME_WAIT:等待足够的时间以确保远程TCP接收到连接终止请求的确认)
    • CLOSE_WAIT:CLOSE_WAIT状态表示对端(远程主机)已经关闭了连接的一半(发送了一个FIN包),并且本地端(你的计算机)已经接收到这个关闭请求,但是本地应用程序还没有关闭(或者说还没有调用close来关闭连接)。简单来说,CLOSE_WAIT状态意味着TCP连接在等待本地应用程序去关闭连接。
    • SYN_SENT:客户端已发送一个连接请求(SYN包)给服务器,并等待服务器的确认。这表示客户端已经开始了TCP三次握手过程
    • SYN_RECE:服务器收到客户端的SYN包,并回应一个SYN+ACK包,等待客户端的确认。这个状态表示服务器端已经响应了连接请求,正在进行三次握手的第二步。
    • FIN_WAIT_1:的一方(通常是客户端)决定关闭连接,并发送一个FIN包给对方,等待对方的确认。这标志着连接关闭过程的开始
    • FIN_WAIT_2:在发送FIN包并收到ACK包后,连接进入FIN_WAIT_2状态。在这个状态下,连接的关闭一方等待对方的FIN包。
    • CLOSE_WAIT:当一方收到另一方的FIN包,即对方请求关闭连接时,它会发送一个ACK包作为回应,并进入CLOSE_WAIT状态。在这个状态下,等待本地应用程序关闭连接。
    • CLOSING:在同时关闭的情况下,当双方几乎同时发送FIN包时,连接会进入CLOSING状态,表示双方都在等待对方的FIN包的确认。
    • LAST_ACK:当处于CLOSE_WAIT状态的一方发送FIN包,并等待对方的最终ACK包时,连接进入LAST_ACK状态。
    • TIME_WAIT:在收到对方的FIN包并发送ACK包后,连接进入TIME_WAIT状态。这个状态持续一段时间(2倍的MSL,最大报文生存时间),以确保对方收到了最终的ACK包。这也允许老的重复数据包在网络中消失。
    • CLOSED:连接完全关闭,两端都释放了连接的资源。
  5. 源地址(src)、目的地址(dst):发送数据包的主机的IP地址。src=源IP dst=目的IP:表示数据包的源和目的IP地址。

  6. 源端口(sport)、目的端口(dport):发送数据包的主机的端口号。sport=源端口 dport=目的端口:表示数据包的源和目的端口号。

  7. [UNREPLIED] / [ASSURED]

    • [UNREPLIED]:表示从源到目标的连接请求尚未收到回复。
    • [ASSURED]:表示连接已经被确认,不会因为短时间内没有数据包而被清除。
  8. Mark(标记)mark字段用于表示特定的连接跟踪条目被打上的标记(或称为标签)

    • 这个标记是一个整数值,通常由防火墙规则(如iptables)设置,用于对特定的数据包或连接进行分类或执行特定的处理逻辑。
    • 可能的取值mark的取值范围是从04294967295(即2^32-1),其中0通常表示未被标记的连接。非零的值则根据实际的防火墙规则和策略而定,不同的值可以代表不同的分类或处理逻辑。例如,在某些配置中,mark可以用来区分经过VPN的流量、被特定规
  9. Use(使用)use字段表示当前有多少个内核组件正在引用这个连接跟踪条目。简而言之,它表明这个连接跟踪条目的“使用度”或“引用计数”。

    • 可能的取值use的取值是一个正整数,起始值至少为1,表示至少有一个引用(即连接跟踪本身)。如果有多个内核组件因为某些原因(如特定的路由或防火墙规则)同时需要跟踪这个连接,use的值会相应增加。一般而言,大多数情况下use的值会比较低,除非系统配置导致多个组件需要引用同一个连接跟踪条目。
4.1. 例一:查看所有TCP连接

命令:conntrack -L -p tcp

示例输出:

tcp 6 431999 ESTABLISHED src=192.168.1.100 dst=192.168.1.1 sport=34567 dport=22 [ASSURED] mark=0 use=1

解释:

  • 这是一个TCP连接,连接状态为ESTABLISHED
  • 连接从源地址192.168.1.10034567端口到目的地址192.168.1.122端口。
  • [ASSURED]表示连接已经被确认。
  • mark=0 use=1提供了额外的连接标记和使用信息。
4.2. 例二:查看所有UDP连接

命令:conntrack -L -p udp

示例输出:

udp 17 28 src=192.168.1.100 dst=192.168.1.255 sport=137 dport=137 [UNREPLIED] src=192.168.1.255 dst=192.168.1.100 sport=137 dport=137 mark=0 use=1

解释:

  • 这是一个UDP连接,通常用于网络广播。
  • 连接尝试从192.168.1.100192.168.1.255,这是一个局域网广播地址。
  • [UNREPLIED]标志表示广播请求尚未收到回复。
4.3. 例三:监听连接跟踪事件

命令:conntrack -E

示例输出:实时显示连接跟踪事件,如新建(NEW)、更新(UPDATE)和销毁(DESTROY)事件。

root@linux-study:~# conntrack -E|head -n 20
[DESTROY] tcp      6 src=192.168.201.109 dst=182.75.23.156 sport=40175 dport=443 src=182.75.23.156 dst=172.30.3.222 sport=443 dport=40175 [ASSURED][NEW] tcp      6 120 SYN_SENT src=192.168.201.109 dst=182.75.23.156 sport=40175 dport=443 [UNREPLIED] src=182.75.23.156 dst=172.30.3.222 sport=443 dport=40175[UPDATE] tcp      6 60 SYN_RECV src=192.168.201.109 dst=182.75.23.156 sport=40175 dport=443 src=182.75.23.156 dst=172.30.3.222 sport=443 dport=40175[UPDATE] tcp      6 432000 ESTABLISHED src=192.168.201.109 dst=182.75.23.156 sport=40175 dport=443 src=182.75.23.156 dst=172.30.3.222 sport=443 dport=40175 [ASSURED][NEW] tcp      6 120 SYN_SENT src=192.168.201.109 dst=182.75.23.156 sport=24526 dport=443 [UNREPLIED] src=182.75.23.156 dst=172.30.3.222 sport=443 dport=24526[UPDATE] tcp      6 60 SYN_RECV src=192.168.201.109 dst=182.75.23.156 sport=24526 dport=443 src=182.75.23.156 dst=172.30.3.222 sport=443 dport=24526[UPDATE] tcp      6 432000 ESTABLISHED src=192.168.201.109 dst=182.75.23.156 sport=24526 dport=443 src=182.75.23.156 dst=172.30.3.222 sport=443 dport=24526 [ASSURED][NEW] tcp      6 120 SYN_SENT src=192.168.201.110 dst=182.75.23.156 sport=6069 dport=443 [UNREPLIED] src=182.75.23.156 dst=172.30.3.222 sport=443 dport=6069[UPDATE] tcp      6 60 SYN_RECV src=192.168.201.110 dst=182.75.23.156 sport=6069 dport=443 src=182.75.23.156 dst=172.30.3.222 sport=443 dport=6069[UPDATE] tcp      6 432000 ESTABLISHED src=192.168.201.110 dst=182.75.23.156 sport=6069 dport=443 src=182.75.23.156 dst=172.30.3.222 sport=443 dport=6069 [ASSURED][UPDATE] tcp      6 120 FIN_WAIT src=192.168.201.109 dst=182.75.23.156 sport=24526 dport=443 src=182.75.23.156 dst=172.30.3.222 sport=443 dport=24526 [ASSURED][UPDATE] tcp      6 60 CLOSE_WAIT src=192.168.201.109 dst=182.75.23.156 sport=24526 dport=443 src=182.75.23.156 dst=172.30.3.222 sport=443 dport=24526 [ASSURED][UPDATE] tcp      6 30 LAST_ACK src=192.168.201.109 dst=182.75.23.156 sport=24526 dport=443 src=182.75.23.156 dst=172.30.3.222 sport=443 dport=24526 [ASSURED][UPDATE] tcp      6 120 TIME_WAIT src=192.168.201.109 dst=182.75.23.156 sport=24526 dport=443 src=182.75.23.156 dst=172.30.3.222 sport=443 dport=24526 [ASSURED][NEW] tcp      6 120 SYN_SENT src=192.168.201.109 dst=182.75.23.156 sport=7378 dport=443 [UNREPLIED] src=182.75.23.156 dst=172.30.3.222 sport=443 dport=7378[UPDATE] tcp      6 60 SYN_RECV src=192.168.201.109 dst=182.75.23.156 sport=7378 dport=443 src=182.75.23.156 dst=172.30.3.222 sport=443 dport=7378[UPDATE] tcp      6 432000 ESTABLISHED src=192.168.201.109 dst=182.75.23.156 sport=7378 dport=443 src=182.75.23.156 dst=172.30.3.222 sport=443 dport=7378 [ASSURED][UPDATE] tcp      

解释:

  • 实时监控连接状态变化,有助于诊断网络问题和分析流量模式。
4.4. 例四:解释协议号和TCP状态计数器

考虑以下conntrack命令的输出示例:

tcp      6 431999 ESTABLISHED src=192.168.1.100 dst=93.184.216.34 sport=34567 dport=80 [ASSURED] mark=0 use=1
udp      17 170 src=192.168.1.100 dst=192.168.1.255 sport=137 dport=137 [UNREPLIED] src=192.168.1.255 dst=192.168.1.100 sport=137 dport=137 mark=0 use=1

在这个示例中:

  • 对于TCP连接,6是TCP的协议号,431999是剩余的计时器值(单位是秒),表示该TCP连接跟踪条目将在大约431999秒后从连接跟踪表中移除,除非有新的数据包更新此连接状态。
  • 对于UDP连接,17是UDP的协议号,170是剩余的计时器值,表示该UDP连接跟踪条目将在170秒后从连接跟踪表中移除,如果没有新的数据包到达更新状态。

5. 常见用法🛠️

5.1. 列出所有连接

命令:conntrack -L

root@linux-study:~# conntrack -L|head
tcp      6 75 TIME_WAIT src=192.168.201.108 dst=182.75.23.156 sport=12753 dport=443 src=182.75.23.156 dst=172.30.3.222 sport=443 dport=12753 [ASSURED] mark=0 use=1
tcp      6 29 TIME_WAIT src=192.168.201.104 dst=182.75.23.156 sport=22689 dport=443 src=182.75.23.156 dst=172.30.3.222 sport=443 dport=22689 [ASSURED] mark=0 use=1
tcp      6 2 CLOSE src=192.168.201.109 dst=182.75.23.156 sport=55566 dport=443 src=182.75.23.156 dst=172.30.3.222 sport=443 dport=55566 [ASSURED] mark=0 use=1
tcp      6 80 TIME_WAIT src=192.168.201.109 dst=182.75.23.156 sport=3815 dport=443 src=182.75.23.156 dst=172.30.3.222 sport=443 dport=3815 [ASSURED] mark=0 use=1
tcp      6 37 TIME_WAIT src=192.168.201.109 dst=182.75.23.156 sport=5126 dport=443 src=182.75.23.156 dst=172.30.3.222 sport=443 dport=5126 [ASSURED] mark=0 use=1
tcp      6 0 TIME_WAIT src=192.168.201.109 dst=182.75.23.156 sport=64894 dport=443 src=182.75.23.156 dst=172.30.3.222 sport=443 dport=64894 [ASSURED] mark=0 use=1
tcp      6 5 CLOSE src=192.168.201.109 dst=182.75.23.156 sport=15022 dport=443 src=182.75.23.156 dst=172.30.3.222 sport=443 dport=15022 [ASSURED] mark=0 use=1
tcp      6 12 TIME_WAIT src=192.168.201.109 dst=182.75.23.156 sport=46340 dport=443 src=182.75.23.156 dst=172.30.3.222 sport=443 dport=46340 [ASSURED] mark=0 use=1
tcp      6 21 TIME_WAIT src=192.168.201.109 dst=182.75.23.156 sport=62983 dport=443 src=182.75.23.156 dst=172.30.3.222 sport=443 dport=62983 [ASSURED] mark=0 use=1
tcp      6 47 TIME_WAIT src=192.168.201.109 dst=182.75.23.156 sport=63001 dport=443 src=182.75.23.156 dst=172.30.3.222 sport=443 dport=63001 [ASSURED] mark=0 use=1
root@linux-study:~#
5.2. 过滤特定协议的连接

只显示TCP连接条目命令:conntrack -L -p tcp

root@linux-study:~# conntrack -L -p tcp|head
tcp      6 40 TIME_WAIT src=192.168.201.109 dst=182.75.23.156 sport=40143 dport=443 src=182.75.23.156 dst=172.30.3.222 sport=443 dport=40143 [ASSURED] mark=0 use=1
tcp      6 46 TIME_WAIT src=192.168.201.109 dst=182.75.23.156 sport=49611 dport=443 src=182.75.23.156 dst=172.30.3.222 sport=443 dport=49611 [ASSURED] mark=0 use=1
tcp      6 96 TIME_WAIT src=192.168.201.108 dst=182.75.23.156 sport=51938 dport=443 src=182.75.23.156 dst=172.30.3.222 sport=443 dport=51938 [ASSURED] mark=0 use=1
tcp      6 25 TIME_WAIT src=192.168.201.109 dst=182.75.23.156 sport=45806 dport=443 src=182.75.23.156 dst=172.30.3.222 sport=443 dport=45806 [ASSURED] mark=0 use=1
tcp      6 10 TIME_WAIT src=192.168.201.108 dst=182.75.23.156 sport=39921 dport=443 src=182.75.23.156 dst=172.30.3.222 sport=443 dport=39921 [ASSURED] mark=0 use=1
tcp      6 23 TIME_WAIT src=192.168.201.108 dst=182.75.23.156 sport=21268 dport=443 src=182.75.23.156 dst=172.30.3.222 sport=443 dport=21268 [ASSURED] mark=0 use=1
tcp      6 114 TIME_WAIT src=192.168.201.109 dst=182.75.23.156 sport=64894 dport=443 src=182.75.23.156 dst=172.30.3.222 sport=443 dport=64894 [ASSURED] mark=0 use=1
tcp      6 59 TIME_WAIT src=192.168.201.109 dst=182.75.23.156 sport=24358 dport=443 src=182.75.23.156 dst=172.30.3.222 sport=443 dport=24358 [ASSURED] mark=0 use=1
tcp      6 39 TIME_WAIT src=192.168.201.109 dst=182.75.23.156 sport=20256 dport=443 src=182.75.23.156 dst=172.30.3.222 sport=443 dport=20256 [ASSURED] mark=0 use=1
tcp      6 49 TIME_WAIT src=192.168.201.109 dst=182.75.23.156 sport=51766 dport=443 src=182.75.23.156 dst=172.30.3.222 sport=443 dport=51766 [ASSURED] mark=0 use=1
root@linux-study:~#

只显示UDP连接条目命令:conntrack -L -p udp

root@linux-study:~# conntrack -L -p udp
udp      17 12 src=192.168.201.101 dst=172.30.3.22 sport=60049 dport=53 src=172.30.3.22 dst=172.30.3.222 sport=53 dport=60049 mark=0 use=1
udp      17 15 src=192.168.201.103 dst=172.30.3.22 sport=56998 dport=53 src=172.30.3.22 dst=172.30.3.222 sport=53 dport=56998 mark=0 use=1
udp      17 26 src=0.0.0.0 dst=255.255.255.255 sport=68 dport=67 [UNREPLIED] src=255.255.255.255 dst=0.0.0.0 sport=67 dport=68 mark=0 use=1
udp      17 7 src=172.22.77.130 dst=172.30.3.222 sport=500 dport=500 src=192.168.201.104 dst=172.22.77.130 sport=20500 dport=500 mark=0 use=1
udp      17 23 src=172.30.3.67 dst=172.30.3.255 sport=138 dport=138 [UNREPLIED] src=172.30.3.255 dst=172.30.3.67 sport=138 dport=138 mark=0 use=1
udp      17 24 src=192.168.201.112 dst=169.254.253.1 sport=23965 dport=514 [UNREPLIED] src=169.254.253.1 dst=172.30.3.222 sport=514 dport=23965 mark=0 use=1
udp      17 96 src=192.168.201.102 dst=172.30.3.22 sport=59242 dport=53 src=172.30.3.22 dst=172.30.3.222 sport=53 dport=59242 [ASSURED] mark=0 use=1
udp      17 16 src=192.168.201.103 dst=172.30.3.22 sport=36173 dport=53 src=172.30.3.22 dst=172.30.3.222 sport=53 dport=36173 [ASSURED] mark=0 use=1
udp      17 28 src=192.168.201.113 dst=169.254.253.1 sport=10503 dport=514 [UNREPLIED] src=169.254.253.1 dst=172.30.3.222 sport=514 dport=10503 mark=0 use=1
udp      17 2 src=172.30.3.138 dst=172.30.3.255 sport=50195 dport=21027 [UNREPLIED] src=172.30.3.255 dst=172.30.3.138 sport=21027 dport=50195 mark=0 use=1
udp      17 109 src=192.168.201.103 dst=172.30.3.22 sport=46015 dport=53 src=172.30.3.22 dst=172.30.3.222 sport=53 dport=46015 [ASSURED] mark=0 use=1
udp      17 65 src=192.168.201.101 dst=172.30.3.22 sport=34401 dport=53 src=172.30.3.22 dst=172.30.3.222 sport=53 dport=34401 [ASSURED] mark=0 use=1
udp      17 35 src=192.168.201.102 dst=172.30.3.22 sport=60903 dport=53 src=172.30.3.22 dst=172.30.3.222 sport=53 dport=60903 [ASSURED] mark=0 use=1
udp      17 118 src=172.22.77.130 dst=172.30.3.222 sport=4500 dport=4500 src=192.168.201.104 dst=172.22.77.130 sport=24500 dport=4500 [ASSURED] mark=0 use=1
udp      17 4 src=192.168.201.101 dst=91.189.91.157 sport=58566 dport=123 src=91.189.91.157 dst=172.30.3.222 sport=123 dport=58566 mark=0 use=1
udp      17 74 src=192.168.201.103 dst=172.30.3.22 sport=52279 dport=53 src=172.30.3.22 dst=172.30.3.222 sport=53 dport=52279 [ASSURED] mark=0 use=1
udp      17 27 src=192.168.201.110 dst=169.254.253.1 sport=63647 dport=514 [UNREPLIED] src=169.254.253.1 dst=172.30.3.222 sport=514 dport=63647 mark=0 use=1
udp      17 28 src=192.168.201.113 dst=169.254.253.1 sport=60794 dport=514 [UNREPLIED] src=169.254.253.1 dst=172.30.3.222 sport=514 dport=60794 mark=0 use=1
conntrack v1.4.5 (conntrack-tools): 18 flow entries have been shown.
root@linux-study:~#
5.3. 删除指定连接

命令:conntrack -D --src 192.168.1.2

5.4. 显示具有特定状态的连接条目

只显示处于ESTABLISHED状态的TCP连接:conntrack -L -p tcp --state ESTABLISHED

root@linux-study:~# conntrack -L -p tcp --state ESTABLISHED|head
tcp      6 431991 ESTABLISHED src=172.22.70.136 dst=172.30.3.222 sport=43000 dport=443 src=192.168.201.107 dst=172.22.70.136 sport=59443 dport=43000 [ASSURED] mark=0 use=1
tcp      6 431951 ESTABLISHED src=172.30.5.90 dst=172.30.3.222 sport=65130 dport=22 src=172.30.3.222 dst=172.30.5.90 sport=22 dport=65130 [ASSURED] mark=0 use=1
tcp      6 431996 ESTABLISHED src=192.168.201.2 dst=192.168.201.101 sport=37554 dport=6443 src=192.168.201.101 dst=192.168.201.2 sport=6443 dport=37554 [ASSURED] mark=0 use=1
tcp      6 431992 ESTABLISHED src=172.30.3.192 dst=172.30.3.222 sport=54920 dport=443 src=192.168.201.107 dst=172.30.3.192 sport=59443 dport=54920 [ASSURED] mark=0 use=1
tcp      6 431955 ESTABLISHED src=192.168.201.108 dst=182.75.23.156 sport=33186 dport=443 src=182.75.23.156 dst=172.30.3.222 sport=443 dport=33186 [ASSURED] mark=0 use=1
tcp      6 431999 ESTABLISHED src=192.168.201.109 dst=182.75.23.156 sport=16756 dport=443 src=182.75.23.156 dst=172.30.3.222 sport=443 dport=16756 [ASSURED] mark=0 use=1
tcp      6 431647 ESTABLISHED src=172.22.3.199 dst=172.30.3.222 sport=60828 dport=22 src=172.30.3.222 dst=172.22.3.199 sport=22 dport=60828 [ASSURED] mark=0 use=1
tcp      6 431998 ESTABLISHED src=192.168.201.108 dst=182.75.23.156 sport=22507 dport=443 src=182.75.23.156 dst=172.30.3.222 sport=443 dport=22507 [ASSURED] mark=0 use=1
tcp      6 431999 ESTABLISHED src=192.168.201.108 dst=182.75.23.156 sport=17720 dport=443 src=182.75.23.156 dst=172.30.3.222 sport=443 dport=17720 [ASSURED] mark=0 use=1
tcp      6 431999 ESTABLISHED src=192.168.201.111 dst=182.75.23.156 sport=21704 dport=443 src=182.75.23.156 dst=172.30.3.222 sport=443 dport=21704 [ASSURED] mark=0 use=1
root@linux-study:~#
5.5. 删除所有处于特定状态的连接

删除所有处于TIME_WAIT状态的连接条目:conntrack -D --state TIME_WAIT

5.6. 过滤并显示来自或发送到特定IP的连接条目

显示所有来自特定IP地址的连接条目:conntrack -L -s 192.168.201.111

root@linux-study:~# conntrack -L -s 192.168.201.111|head
tcp      6 5 TIME_WAIT src=192.168.201.111 dst=182.75.23.156 sport=33961 dport=443 src=182.75.23.156 dst=172.30.3.222 sport=443 dport=33961 [ASSURED] mark=0 use=1
tcp      6 43 TIME_WAIT src=192.168.201.111 dst=182.75.23.156 sport=11361 dport=443 src=182.75.23.156 dst=172.30.3.222 sport=443 dport=11361 [ASSURED] mark=0 use=1
tcp      6 75 TIME_WAIT src=192.168.201.111 dst=182.75.23.156 sport=21555 dport=443 src=182.75.23.156 dst=172.30.3.222 sport=443 dport=21555 [ASSURED] mark=0 use=1
tcp      6 101 TIME_WAIT src=192.168.201.111 dst=182.75.23.156 sport=1895 dport=443 src=182.75.23.156 dst=172.30.3.222 sport=443 dport=1895 [ASSURED] mark=0 use=2
tcp      6 85 TIME_WAIT src=192.168.201.111 dst=182.75.23.156 sport=19260 dport=443 src=182.75.23.156 dst=172.30.3.222 sport=443 dport=19260 [ASSURED] mark=0 use=1
tcp      6 15 TIME_WAIT src=192.168.201.111 dst=182.75.23.156 sport=5298 dport=443 src=182.75.23.156 dst=172.30.3.222 sport=443 dport=5298 [ASSURED] mark=0 use=1
tcp      6 2 TIME_WAIT src=192.168.201.111 dst=182.75.23.156 sport=2753 dport=443 src=182.75.23.156 dst=172.30.3.222 sport=443 dport=2753 [ASSURED] mark=0 use=1
tcp      6 1 TIME_WAIT src=192.168.201.111 dst=182.75.23.156 sport=53251 dport=443 src=182.75.23.156 dst=172.30.3.222 sport=443 dport=53251 [ASSURED] mark=0 use=1
tcp      6 114 TIME_WAIT src=192.168.201.111 dst=182.75.23.156 sport=31972 dport=443 src=182.75.23.156 dst=172.30.3.222 sport=443 dport=31972 [ASSURED] mark=0 use=1
tcp      6 114 TIME_WAIT src=192.168.201.111 dst=182.75.23.156 sport=47645 dport=443 src=182.75.23.156 dst=172.30.3.222 sport=443 dport=47645 [ASSURED] mark=0 use=1
root@linux-study:~#

显示所有发送到特定IP地址的连接条目:conntrack -L -d 182.75.23.156

oot@linux-study:~# conntrack -L -d 182.75.23.156|head
tcp      6 35 TIME_WAIT src=192.168.201.109 dst=182.75.23.156 sport=50720 dport=443 src=182.75.23.156 dst=172.30.3.222 sport=443 dport=50720 [ASSURED] mark=0 use=1
tcp      6 111 TIME_WAIT src=192.168.201.109 dst=182.75.23.156 sport=38312 dport=443 src=182.75.23.156 dst=172.30.3.222 sport=443 dport=38312 [ASSURED] mark=0 use=1
tcp      6 21 TIME_WAIT src=192.168.201.106 dst=182.75.23.156 sport=8688 dport=443 src=182.75.23.156 dst=172.30.3.222 sport=443 dport=8688 [ASSURED] mark=0 use=1
tcp      6 113 TIME_WAIT src=192.168.201.109 dst=182.75.23.156 sport=54751 dport=443 src=182.75.23.156 dst=172.30.3.222 sport=443 dport=54751 [ASSURED] mark=0 use=1
tcp      6 103 TIME_WAIT src=192.168.201.109 dst=182.75.23.156 sport=22584 dport=443 src=182.75.23.156 dst=172.30.3.222 sport=443 dport=22584 [ASSURED] mark=0 use=1
tcp      6 6 CLOSE src=192.168.201.110 dst=182.75.23.156 sport=40445 dport=443 src=182.75.23.156 dst=172.30.3.222 sport=443 dport=40445 [ASSURED] mark=0 use=1
tcp      6 85 TIME_WAIT src=192.168.201.109 dst=182.75.23.156 sport=46340 dport=443 src=182.75.23.156 dst=172.30.3.222 sport=443 dport=46340 [ASSURED] mark=0 use=1
tcp      6 66 TIME_WAIT src=192.168.201.109 dst=182.75.23.156 sport=12944 dport=443 src=182.75.23.156 dst=172.30.3.222 sport=443 dport=12944 [ASSURED] mark=0 use=1
tcp      6 59 TIME_WAIT src=192.168.201.109 dst=182.75.23.156 sport=5575 dport=443 src=182.75.23.156 dst=172.30.3.222 sport=443 dport=5575 [ASSURED] mark=0 use=1
tcp      6 34 TIME_WAIT src=192.168.201.109 dst=182.75.23.156 sport=47638 dport=443 src=182.75.23.156 dst=172.30.3.222 sport=443 dport=47638 [ASSURED] mark=0 use=1
root@linux-study:~#
5.7. 使用源或目的端口过滤连接条目

显示所有使用特定源端口的连接条目:conntrack -L -p tcp --sport 22

root@linux-study:~#
root@linux-study:~# conntrack -L -p tcp --sport 57112
tcp      6 61 TIME_WAIT src=192.168.201.108 dst=182.75.23.156 sport=57112 dport=443 src=182.75.23.156 dst=172.30.3.222 sport=443 dport=57112 [ASSURED] mark=0 use=1
conntrack v1.4.5 (conntrack-tools): 1 flow entries have been shown.
root@linux-study:~#
root@linux-study:~#

显示所有使用特定目的端口的连接条目:conntrack -L -p tcp --dport 443

root@linux-study:~# conntrack -L -p tcp --dport 443|head
tcp      6 102 TIME_WAIT src=192.168.201.110 dst=182.75.23.156 sport=9099 dport=443 src=182.75.23.156 dst=172.30.3.222 sport=443 dport=9099 [ASSURED] mark=0 use=1
tcp      6 37 TIME_WAIT src=192.168.201.109 dst=182.75.23.156 sport=3253 dport=443 src=182.75.23.156 dst=172.30.3.222 sport=443 dport=3253 [ASSURED] mark=0 use=1
tcp      6 8 CLOSE src=192.168.201.110 dst=182.75.23.156 sport=21568 dport=443 src=182.75.23.156 dst=172.30.3.222 sport=443 dport=21568 [ASSURED] mark=0 use=1
tcp      6 39 TIME_WAIT src=192.168.201.109 dst=182.75.23.156 sport=19778 dport=443 src=182.75.23.156 dst=172.30.3.222 sport=443 dport=19778 [ASSURED] mark=0 use=1
tcp      6 85 TIME_WAIT src=192.168.201.109 dst=182.75.23.156 sport=16067 dport=443 src=182.75.23.156 dst=172.30.3.222 sport=443 dport=16067 [ASSURED] mark=0 use=1
tcp      6 58 TIME_WAIT src=192.168.201.111 dst=182.75.23.156 sport=43727 dport=443 src=182.75.23.156 dst=172.30.3.222 sport=443 dport=43727 [ASSURED] mark=0 use=1
tcp      6 54 TIME_WAIT src=192.168.201.109 dst=182.75.23.156 sport=3599 dport=443 src=182.75.23.156 dst=172.30.3.222 sport=443 dport=3599 [ASSURED] mark=0 use=1
tcp      6 0 TIME_WAIT src=192.168.201.109 dst=182.75.23.156 sport=47476 dport=443 src=182.75.23.156 dst=172.30.3.222 sport=443 dport=47476 [ASSURED] mark=0 use=1
tcp      6 55 TIME_WAIT src=192.168.201.109 dst=182.75.23.156 sport=62983 dport=443 src=182.75.23.156 dst=172.30.3.222 sport=443 dport=62983 [ASSURED] mark=0 use=1
tcp      6 119 TIME_WAIT src=192.168.201.109 dst=182.75.23.156 sport=56724 dport=443 src=182.75.23.156 dst=172.30.3.222 sport=443 dport=56724 [ASSURED] mark=0 use=1
root@linux-study:~#
5.8. 监听和显示连接跟踪事件

实时显示连接跟踪事件,如新建连接、更新连接或销毁连接:conntrack -E

root@linux-study:~#
root@linux-study:~# conntrack -E|head[UPDATE] tcp      6 60 SYN_RECV src=192.168.201.109 dst=182.75.23.156 sport=61456 dport=443 src=182.75.23.156 dst=172.30.3.222 sport=443 dport=61456[UPDATE] tcp      6 432000 ESTABLISHED src=192.168.201.109 dst=182.75.23.156 sport=61456 dport=443 src=182.75.23.156 dst=172.30.3.222 sport=443 dport=61456 [ASSURED][UPDATE] tcp      6 120 FIN_WAIT src=192.168.201.109 dst=182.75.23.156 sport=61456 dport=443 src=182.75.23.156 dst=172.30.3.222 sport=443 dport=61456 [ASSURED][UPDATE] tcp      6 30 LAST_ACK src=192.168.201.109 dst=182.75.23.156 sport=61456 dport=443 src=182.75.23.156 dst=172.30.3.222 sport=443 dport=61456 [ASSURED][UPDATE] tcp      6 10 CLOSE src=192.168.201.109 dst=182.75.23.156 sport=61456 dport=443 src=182.75.23.156 dst=172.30.3.222 sport=443 dport=61456 [ASSURED][NEW] tcp      6 120 SYN_SENT src=192.168.201.111 dst=182.75.23.156 sport=64550 dport=443 [UNREPLIED] src=182.75.23.156 dst=172.30.3.222 sport=443 dport=64550[UPDATE] tcp      6 60 SYN_RECV src=192.168.201.111 dst=182.75.23.156 sport=64550 dport=443 src=182.75.23.156 dst=172.30.3.222 sport=443 dport=64550[UPDATE] tcp      6 432000 ESTABLISHED src=192.168.201.111 dst=182.75.23.156 sport=64550 dport=443 src=182.75.23.156 dst=172.30.3.222 sport=443 dport=64550 [ASSURED]
[DESTROY] tcp      6 src=192.168.201.109 dst=182.75.23.156 sport=26138 dport=443 src=182.75.23.156 dst=172.30.3.222 sport=443 dport=26138 [ASSURED][NEW] tcp      6 120 SYN_SENT src=192.168.201.109 dst=182.75.23.156 sport=1302 dport=443 [UNREPLIED] src=182.75.23.156 dst=172.30.3.222 sport=443 dport=1302
root@linux-study:~#
5.9. 从连接跟踪表中删除与特定IP相关的所有连接

删除与特定源IP地址相关的所有连接条目:conntrack -D -s 192.168.1.100

删除与特定目的IP地址相关的所有连接条目:conntrack -D -d 192.168.1.100

5.10. 利用NAT信息删除连接条目

删除所有源NAT(SNAT)到特定IP的连接:conntrack -D --src-nat 192.168.1.100

删除所有目的NAT(DNAT)到特定IP的连接:conntrack -D --dst-nat 192.168.1.100

当然,让我们在适当的地方加入emoji来让回答更加生动:

6. 案例分析💡

6.1. 案例1: 网络连接过多导致服务不可用 🚫🔌
6.1.1. 问题描述

服务器突然无法响应,初步怀疑是由于网络连接数过多导致。需要快速诊断是否有大量的网络连接占用了服务器资源。

6.2. 解决过程
  1. 首先,使用conntrack -L命令🔍列出当前所有的网络连接状态,这能帮助我们快速获取当前的连接概览。

  2. 使用conntrack -C命令直接获取当前跟踪的连接总数,这可以更快地帮助我们判断是否连接数过多。

  3. 如果发现连接数异常高,使用conntrack -L | grep "状态" | wc -l(状态比如ESTABLISHED)来具体分析哪种类型的连接占比较高。

  4. 为了解决这个问题,可以使用conntrack -D --dst <服务器IP>来删除向特定目标IP地址的所有连接,或者根据需要删除特定状态的连接,如conntrack -D --state ESTABLISHED来减少活跃连接🚨。

  5. 在处理完毕后,监控服务器性能📈,确保服务恢复正常。

6.3. 案例2: 疑似DDoS攻击 🛡️💥
6.3.1. 问题描述

服务器遭受疑似DDoS攻击,导致正常服务受到影响。需要快速定位并减轻攻击。

6.3.2. 解决过程
  1. 使用conntrack -L命令查看当前的网络连接,特别是那些状态为NEW但未得到回应的连接(即[UNREPLIED]标记)。

  2. 通过观察源IP分布,使用conntrack -L | grep [UNREPLIED] | awk '{print $NF}' | sort | uniq -c | sort -nr来识别发送大量连接请求的源IP。

  3. 对于明显的攻击源,可以使用conntrack -D --src <攻击源IP>来直接从连接跟踪表中删除这些恶意连接⛔。

  4. 为进一步保护系统,可以基于观察到的攻击模式,通过防火墙规则(如iptables)阻止这些恶意IP的进一步连接尝试🔐。

6.4. 案例3: 服务响应缓慢 🐌💤
6.4.1. 问题描述

用户报告特定服务响应缓慢。初步怀疑是网络层面的问题,需要确认是否为网络连接问题。

6.4.2. 解决过程
  1. 使用conntrack -L | grep "特定服务的端口"来查看与服务相关的网络连接状态,从而判断是否有异常的连接状态。

  2. 如果发现有大量的SYN_RECV状态,可能表明SYN Flood攻击,或者服务端口无法及时处理入站连接请求。

  3. 对于这种情况,可以通过调整服务器的TCP栈参数来提高处理能力,同时使用conntrack -D命令删除一些长时间未建立的连接,以减轻服务器负担🔧。

  4. 长期解决方案可能需要增加服务器资源,优化服务配置,或者使用负载均衡等技术来改善服务响应🔄。

7. 注意事项⚠️

  • 大多数conntrack命令需要管理员权限(root)来执行。🛠️
  • 删除连接条目时要格外小心,因为这可能会影响正在进行的网络会话。⚠
  • 使用conntrack -E监听连接事件时,输出可能会非常快速和大量,可以考虑将其重定向到文件中或通过管道传递给grep进行过滤。🔍

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/792129.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C/C++程序的(编译,链接)翻译与运行

目录 前言&#xff1a; 1.程序环境 2.翻译环境 3.预处理&#xff08;预编译&#xff09; 4.编译 5.汇编 6.链接 7.运行环境 总结&#xff1a; 前言&#xff1a; 本篇来解释c/c程序的翻译环境与运行环境中的过程&#xff0c;不同的编程语言的翻译环境类似&#xff0c;…

Transformers in Vision:A Survey 阅读笔记

ACM上的一篇综述&#xff0c;讨论Transformer在CV上的应用。 摘要&#xff1a; Among their salient benefits,Transformers enable modeling long dependencies between inputsequence elements and support parallel processing of sequence as compared to recurrent networ…

信息传播的AI时代:机器学习赋能新闻出版业的数字化之旅

&#x1f9d1; 作者简介&#xff1a;阿里巴巴嵌入式技术专家&#xff0c;深耕嵌入式人工智能领域&#xff0c;具备多年的嵌入式硬件产品研发管理经验。 &#x1f4d2; 博客介绍&#xff1a;分享嵌入式开发领域的相关知识、经验、思考和感悟,欢迎关注。提供嵌入式方向的学习指导…

leetcode90. 子集 II

去重逻辑&#xff1a; 关键是画出递归树&#xff01;当我们即将进入第二个2的递归的时候&#xff0c;发现isVisit数组是100&#xff0c;也就是说这俩重复的数是False&#xff0c;并且这俩在nums值相同&#xff0c;所以写出去重逻辑&#xff01; class Solution { public:vector…

leetcode代码记录(打家劫舍 II

目录 1. 题目&#xff1a;2. 我的代码&#xff1a;小结&#xff1a; 1. 题目&#xff1a; 一个专业的小偷&#xff0c;计划偷窃一个环形街道上沿街的房屋&#xff0c;每间房内都藏有一定的现金。这个地方所有的房屋都 围成一圈 &#xff0c;这意味着第一个房屋和最后一个房屋是…

【随笔】Git -- 高级命令(上篇)(六)

&#x1f48c; 所属专栏&#xff1a;【Git】 &#x1f600; 作  者&#xff1a;我是夜阑的狗&#x1f436; &#x1f680; 个人简介&#xff1a;一个正在努力学技术的CV工程师&#xff0c;专注基础和实战分享 &#xff0c;欢迎咨询&#xff01; &#x1f496; 欢迎大…

【面试八股总结】超文本传输协议HTTP(二)

参考资料 &#xff1a;小林Coding、阿秀、代码随想录 一、HTTP缓存技术 将资源&#xff08;如网页、图像、脚本等&#xff09;的副本存储在客户端或中间代理服务器上&#xff0c;以便将来的请求可以直接从缓存中获取&#xff0c;而不必重新从服务器下载资源。这有助于减少网…

二维码:技术、商业与未来

title: 二维码&#xff1a;技术、商业与未来 date: 2024/4/3 19:12:28 updated: 2024/4/3 19:12:28 tags: 二维码技术商业应用移动支付物联网AR/VR融合智能家居数字化社会 第一章&#xff1a;引言 1. 二维码在数字化时代的重要性和普及程度 在数字化时代&#xff0c;二维码作…

JVM之常用监控工具

JVM之常用监控工具 jps jinfo 获取配置信息 基本语法 jinfo [options] <pid>常用选项 -sysprops&#xff1a;显示JVM进程的系统属性。-flags&#xff1a;显示用于启动JVM的命令行标志和VM选项。-flag <name>&#xff1a;显示指定JVM标志的当前值。-flag [|-]&…

Windows10安装CloudCompare(图文安装)

CloudCompare是一个3D点云&#xff08;和三角网格&#xff09;处理软件。它最初被设计用于在两个密集的3D点云&#xff08;例如用激光扫描仪获取的点云&#xff09;之间或点云和三角形网格之间进行比较。它依赖于专用于此任务的特定八叉树结构。 之后&#xff0c;它已经扩展到一…

[实验报告]--基于端口安全

[实验报告] 目录 [实验报告] 一、项目背景 二、实验环境 三、项目规划设计 四、项目实施 五、验证项目成果 基于端口安全的 Jan16 公司网络组建 一、项目背景 Jan16 公司开发部为重要部门&#xff0c;所有员工使用指定的计算机工作&#xff0c;为防止员工或访客使 用个…

java中Date类,SimpleDateFormat类和Calendar类

Date类 public Date() 创建一个Date对象&#xff0c;代表的是系统当前此刻的日期时间 public Date(long date) Constructs a Date object using the given milliseconds time value. 把时间毫秒值转变成Date日期对象 public void setTime(long date) Sets an existing Date ob…

深度解析大语言模型中的词向量

在学习完语言模型中的编码器与解码器知识后&#xff0c;让我们继续深入学习大语言模型中一个非常关键的技术&#xff1a;词向量表示&#xff0c;以及如何通过Transformer模型实现对next token的预测。 1、词向量 要了解语言模型的工作原理&#xff0c;首先需要了解它们如何表示…

C#.net6.0手术麻醉信息管理系统源码,智慧手术室管理平台源码

手术麻醉信息管理系统源码&#xff0c;自主版权的手麻系统源码 手术麻醉信息管理系统包含了患者从预约申请手术到术前、术中、术后的流程控制。手术麻醉信息管理系统主要是由监护设备数据采集子系统和麻醉临床系统两个子部分组成。包括从手术申请到手术分配&#xff0c;再到术前…

元素共鸣:唤醒神之眼

描述 在提瓦特大陆上&#xff0c;有N座由原石构成的神秘石柱&#xff0c;它们依次排列&#xff0c;编号为1&#xff0c;2&#xff0c;3&#xff0c;…&#xff0c;N。每座石柱都蕴含着不同程度的元素能量&#xff0c;这种能量的强度可以用一个整数来量化。为了唤醒沉睡中的神之…

项目管理中的资源控制

在项目管理中,资源的控制是非常关键的环节,它决定了项目的顺利进行与否以及最终的效益。项目管理的资源控制涵盖了多个方面,以下是对这些方面的详细探讨。 1. 资源需求分析 首先,项目经理需要对项目进行资源需求分析。这包括确定项目所需的人力、物力、财力等各类资源,并…

element-ui collapse 组件源码分享

今日简单分享 collapse 组件的源码实现&#xff0c;主要分为四个方面&#xff1a; 1、collapse 组件页面结构 2、collapse 组件属性 3、collapse 组件事件 4、collapse item 组件属性 一、collapse 组件页面结构 二、collapse 组件属性 2.1 value/v-model 属性&#xff0…

Ubuntu18.04+2070s+TF2.x环境,单卡训练PointNet++实战

Ubuntu18.042070sTF2.x环境&#xff0c;单卡训练PointNet实战 1. 编译tf_ops文件夹下的三个动态库2. 修改Python版本、TF版本不一致带来的差异3. 下载训练数据4. 模型训练 1. 编译tf_ops文件夹下的三个动态库 该文件夹下定义了一些pointnet模型中需要使用的cuda核函数&#xf…

程序代码分析工具

文章目录 工具简介和安装DoxygenGraphziv软件安装 工具的运用启动和配置工具分析结果 工具简介和安装 Doxygen Doxygen 是一种用于从 C 、C 、Objective-C 、C# 、Java 和 Python 等语言的源代码中生成文档的工具。它通过解析源代码中的注释来创建详细的 API 文档&#xff0c;…

深度强化学习调参技巧

在深度强化学习中,调参是一个非常重要的任务,它直接影响到模型的性能和收敛速度。下面是一些常用的深度强化学习调参技巧: 选择合适的环境和任务: 首先要确保选择的环境和任务适合深度强化学习。不同的环境和任务对算法的表现有着不同的要求,因此需要根据具体情况选择合适…