运维必备 | Linux netstat命令详解

简介: 运维必备 | Linux netstat命令详解


简介

Netstat 命令用于显示各种网络相关信息,如网络连接,路由表,接口状态 (Interface Statistics),masquerade 连接,多播成员 (Multicast Memberships) 等等。

输出信息含义

执行netstat后,其输出结果为

ActiveInternetconnections(w/oservers) ProtoRecv-QSend-QLocalAddressForeignAddressState tcp02210.34.6.89:telnet210.34.6.96:2873ESTABLISHED tcp2960210.34.6.89:1165210.34.6.84:netbios-ssnESTABLISHED tcp00localhost.localdom:9001localhost.localdom:1162ESTABLISHED tcp00localhost.localdom:1162localhost.localdom:9001ESTABLISHED tcp080210.34.6.89:1161210.34.6.10:netbios-ssnCLOSE ActiveUNIXdomainsockets(w/oservers) ProtoRefCntFlagsTypeStateI-NodePath unix1[]STREAMCONNECTED16178@000000dd unix1[]STREAMCONNECTED16176@000000dc unix9[]DGRAM5292/dev/log unix1[]STREAMCONNECTED16182@000000df

从整体上看,netstat的输出结果可以分为两个部分:

一个是Active Internet connections,称为有源TCP连接,其中"Recv-Q"和"Send-Q"指%0A的是接收队列和发送队列。这些数字一般都应该是0。如果不是则表示软件包正在队列中堆积。这种情况只能在非常少的情况见到。

另一个是Active UNIX domain sockets,称为有源Unix域套接口(和网络套接字一样,但是只能用于本机通信,性能可以提高一倍)。

Proto显示连接使用的协议,RefCnt表示连接到本套接口上的进程号,Types显示套接口的类型,State显示套接口当前的状态,Path表示连接到套接口的其它进程使用的路径名。

常见参数

-a (all)显示所有选项,

-t (tcp)仅显示tcp相关选项

-u (udp)仅显示udp相关选项

-n 拒绝显示别名,能显示数字的全部转化成数字。

-l 仅列出有在 Listen (监听) 的服務状态

-p 显示建立相关链接的程序名

-r 显示路由信息,路由表

-e 显示扩展信息,例如uid等

-s 按各个协议进行统计

-c 每隔一个固定时间,执行该netstat命令。

提示:LISTEN和LISTENING的状态只有用-a或者-l才能看到

实用命令实例

1、列出所有端口 (包括监听和未监听的)

列出所有端口 netstat -a

#netstat-a|more ActiveInternetconnections(serversandestablished) ProtoRecv-QSend-QLocalAddressForeignAddressState tcp00localhost:30037*:*LISTEN udp00*:bootpc*:* ActiveUNIXdomainsockets(serversandestablished) ProtoRefCntFlagsTypeStateI-NodePath unix2[ACC]STREAMLISTENING6135/tmp/.X11-unix/X0 unix2[ACC]STREAMLISTENING5140/var/run/acpid.socket

列出所有 tcp 端口 netstat -at

#netstat-at ActiveInternetconnections(serversandestablished) ProtoRecv-QSend-QLocalAddressForeignAddressState tcp00localhost:30037*:*LISTEN tcp00localhost:ipp*:*LISTEN tcp00*:smtp*:*LISTEN tcp600localhost:ipp[::]:*LISTEN

列出所有 udp 端口 netstat -au

#netstat-au ActiveInternetconnections(serversandestablished) ProtoRecv-QSend-QLocalAddressForeignAddressState udp00*:bootpc*:* udp00*:49119*:* udp00*:mdns*:*

2、列出所有处于监听状态的 Sockets

只显示监听端口 netstat -l

#netstat-l ActiveInternetconnections(onlyservers) ProtoRecv-QSend-QLocalAddressForeignAddressState tcp00localhost:ipp*:*LISTEN tcp600localhost:ipp[::]:*LISTEN udp00*:49119*:*

只列出所有监听 tcp 端口 netstat -lt

#netstat-lt ActiveInternetconnections(onlyservers) ProtoRecv-QSend-QLocalAddressForeignAddressState tcp00localhost:30037*:*LISTEN tcp00*:smtp*:*LISTEN tcp600localhost:ipp[::]:*LISTEN

只列出所有监听 udp 端口 netstat -lu

#netstat-lu ActiveInternetconnections(onlyservers) ProtoRecv-QSend-QLocalAddressForeignAddressState udp00*:49119*:* udp00*:mdns*:*

只列出所有监听 UNIX 端口 netstat -lx

#netstat-lx ActiveUNIXdomainsockets(onlyservers) ProtoRefCntFlagsTypeStateI-NodePath unix2[ACC]STREAMLISTENING6294private/maildrop unix2[ACC]STREAMLISTENING6203public/cleanup unix2[ACC]STREAMLISTENING6302private/ifmail unix2[ACC]STREAMLISTENING6306private/bsmtp

3、显示每个协议的统计信息

显示所有端口的统计信息 netstat -s

#netstat-s Ip: 11150totalpacketsreceived 1withinvalidaddresses 0forwarded 0incomingpacketsdiscarded 11149incomingpacketsdelivered 11635requestssentout Icmp: 0ICMPmessagesreceived 0inputICMPmessagefailed. Tcp: 582activeconnectionsopenings 2failedconnectionattempts 25connectionresetsreceived Udp: 1183packetsreceived 4packetstounknownportreceived. .....

显示 TCP 或 UDP 端口的统计信息 netstat -st 或 -su

#netstat-st #netstat-su

4、在 netstat 输出中显示 PID 和进程名称 netstat -p

netstat -p 可以与其它开关一起使用,就可以添加 “PID/进程名称” 到 netstat 输出中,这样 debugging 的时候可以很方便的发现特定端口运行的程序。

#netstat-pt ActiveInternetconnections(w/oservers) ProtoRecv-QSend-QLocalAddressForeignAddressStatePID/Programname tcp10ramesh-laptop.loc:47212192.168.185.75:wwwCLOSE_WAIT2109/firefox tcp00ramesh-laptop.loc:52750lax:wwwESTABLISHED2109/firefox

5、在 netstat 输出中不显示主机,端口和用户名 (host, port or user)

当你不想让主机,端口和用户名显示,使用 netstat -n。将会使用数字代替那些名称。

同样可以加速输出,因为不用进行比对查询。

#netstat-an

如果只是不想让这三个名称中的一个被显示,使用以下命令

#netsat-a--numeric-ports #netsat-a--numeric-hosts #netsat-a--numeric-users

6、持续输出 netstat 信息

netstat 将每隔一秒输出网络信息。

#netstat-c ActiveInternetconnections(w/oservers) ProtoRecv-QSend-QLocalAddressForeignAddressState tcp00ramesh-laptop.loc:36130101-101-181-225.ama:wwwESTABLISHED tcp11ramesh-laptop.loc:52564101.11.169.230:wwwCLOSING tcp00ramesh-laptop.loc:43758server-101-101-43-2:wwwESTABLISHED tcp11ramesh-laptop.loc:42367101.101.34.101:wwwCLOSING

7、显示系统不支持的地址族 (Address Families)

netstat--verbose

在输出的末尾,会有如下的信息

netstat:nosupportfor`AFIPX'onthissystem. netstat:nosupportfor`AFAX25'onthissystem. netstat:nosupportfor`AFX25'onthissystem. netstat:nosupportfor`AFNETROM'onthissystem.

8、显示核心路由信息 netstat -r

#netstat-r KernelIProutingtable DestinationGatewayGenmaskFlagsMSSWindowirttIface 192.168.1.0*255.255.255.0U000eth2 link-local*255.255.0.0U000eth2 default192.168.1.10.0.0.0UG000eth2

注意:使用 netstat -rn 显示数字格式,不查询主机名称。

9、找出程序运行的端口

并不是所有的进程都能找到,没有权限的会不显示,使用 root 权限查看所有的信息。

#netstat-ap|grepssh tcp10dev-db:ssh101.174.100.22:39213CLOSE_WAIT- tcp10dev-db:ssh101.174.100.22:57643CLOSE_WAIT-

找出运行在指定端口的进程

#netstat-an|grep':80'

10、显示网络接口列表

#netstat-i KernelInterfacetable IfaceMTUMetRX-OKRX-ERRRX-DRPRX-OVRTX-OKTX-ERRTX-DRPTX-OVRFlg eth01500000000000BMU eth2150002619600026883600BMRU lo16436040004000LRU

显示详细信息,像是 ifconfig 使用 netstat -ie:

#netstat-ie KernelInterfacetable eth0Linkencap:EthernetHWaddr00:10:40:11:11:11 UPBROADCASTMULTICASTMTU:1500Metric:1 RXpackets:0errors:0dropped:0overruns:0frame:0 TXpackets:0errors:0dropped:0overruns:0carrier:0 collisions:0txqueuelen:1000 RXbytes:0(0.0B)TXbytes:0(0.0B) Memory:f6ae0000-f6b00000

11、IP和TCP分析

查看连接某服务端口最多的的IP地址

wss8848@ubuntu:~$netstat-nat|grep"192.168.1.15:22"|awk'{print$5}'|awk-F:'{print$1}'|sort|uniq-c|sort-nr|head-20 18221.136.168.36 3154.74.45.242 278.173.31.236 262.183.207.98 2192.168.1.14 2182.48.111.215 2124.193.219.34 2119.145.41.2 2114.255.41.30 175.102.11.99

TCP各种状态列表

wss8848@ubuntu:~$netstat-nat|awk'{print$6}' established) Foreign LISTEN TIME_WAIT ESTABLISHED TIME_WAIT SYN_SENT

先把状态全都取出来,然后使用uniq -c统计,之后再进行排序。

wss8848@ubuntu:~$netstat-nat|awk'{print$6}'|sort|uniq-c 143ESTABLISHED 1FIN_WAIT1 1Foreign 1LAST_ACK 36LISTEN 6SYN_SENT 113TIME_WAIT 1established)

最后的命令如下:

netstat-nat|awk'{print$6}'|sort|uniq-c|sort-rn

分析access.log获得访问前10位的ip地址

awk'{print$1}'access.log|sort|uniq-c|sort-nr|head-10
相关文章
|
1天前
|
Linux
Linux命令的基本格式解析
总的来说,Linux命令的基本格式就像一个食谱,它可以指导你如何使用你的计算机。通过学习和实践,你可以成为一个真正的“计算机厨师”,创造出各种“美味”的命令。
33 15
|
9天前
|
Linux 定位技术
Linux系统中的cd命令:目录切换技巧
踏过千山,越过万水,人生就是一场不断前行的旅程,总充满了未知与挑战。然而,“cd”命令如同你的旅伴,会带你穿梭在如棋盘一般的文件系统中,探索每一处未知。希望你能从“cd”命令中找到乐趣,像是掌控了一种络新妙的魔法,去向未知进发,开始你的探索之旅。
83 24
|
12天前
|
安全 Shell Linux
Linux系统之su命令的基本使用
Linux系统之su命令的基本使用
56 2
Linux系统之su命令的基本使用
|
14天前
|
监控 数据可视化 Java
调试技巧 - 用Linux命令排查Java问题
总的来说,使用Linux命令来排查Java问题,需要一定的实践经验和理论知识。然而,只要我们愿意花时间深入了解这些工具,我们就能够熟练地使用它们来分析和解决问题。此外,这些工具只是帮助我们定位问题,真正解决问题需要我们对Java和JVM有深入的理解,并能够读懂和分析代码。
49 13
|
19天前
|
数据采集 运维 安全
Linux设备命令行运维工具WowKey问答
WowKey 是一款用于 Linux 设备运维的工具,可通过命令行手动或自动执行指令剧本,实现批量、标准化操作,如健康检查、数据采集、配置更新等。它简单易用,只需编写 WIS 指令剧本和 APT 帐号密码表文件,学习成本极低。支持不同流派的 Linux 系统,如 RHEL、Debian、SUSE 等,只要使用通用 Shell 命令即可通吃Linux设备。
|
19天前
|
运维 安全 Linux
试试Linux设备命令行运维工具——Wowkey
WowKey 是一款专为 Linux 设备设计的命令行运维工具,提供自动化、批量化、标准化的运维解决方案。它简单易用、高效集成且无依赖,仅需 WIS 指令剧本文件、APT 账号密码文件和 wowkey 命令即可操作。通过分离鉴权与执行过程,WowKey 让运维人员专注于决策,摆脱繁琐的交互与执行工作,大幅提升运维效率与质量。无论是健康检查、数据采集还是配置更新,WowKey 都能助您轻松应对大规模设备运维挑战。立即从官方资源了解更多信息:https://atsight.top/training。
|
24天前
|
Linux
linux常用命令详细说明以及案例
本文介绍了Linux中几个常用的命令及其用法,包括:`ls`(列出目录内容)、`cd`(切换目录)、`mkdir`(创建目录)、`rm -p`(删除目录及内容)和`mv`(移动或重命名文件/目录)。每个命令都配有详细说明、语法格式、常见选项及实用案例,帮助用户更好地理解和使用这些基础命令。内容源自[linux常用命令详细说明以及案例](https://linux.ciilii.com/show/news-285.html)。
|
24天前
|
Linux
linux命令详细说明以及案例
本文介绍了常用的 Linux 命令及其详细说明和示例,包括:`ls`(列出目录内容)、`cd`(更改目录)、`rm` 和 `mv`(删除与移动文件)、`grep`(搜索文本)、`cat`(显示文件内容)以及 `chmod`(更改文件权限)。每个命令均配有功能描述、选项说明及实际案例,帮助用户更好地掌握 Linux 命令的使用方法。
128 56
|
26天前
|
监控 Linux
Linux基础:文件和目录类命令分析。
总的来说,这些基础命令,像是Linux中藏匿的小矮人,每一次我们使用他们,他们就把我们的指令准确的传递给Linux,让我们的指令变为现实。所以,现在就开始你的Linux之旅,挥动你的命令之剑,探索这个充满神秘而又奇妙的世界吧!
70 19
|
1月前
|
Linux
Linux 常用文件查看命令
`cat` 命令用于连接文件并打印到标准输出,适用于快速查看和合并文本文件内容。常用示例包括:`cat file1.txt` 查看单个文件,`cat file1.txt file2.txt` 合并多个文件,`cat > filename` 创建新文件,`cat >> filename` 追加内容。`more` 和 `less` 命令用于分页查看文件,`tail` 命令则用于查看文件末尾内容,支持实时追踪日志更新,如 `tail -f file.log`。
62 5
Linux 常用文件查看命令