运维必备 | 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
相关文章
|
11天前
|
Linux 数据安全/隐私保护 Windows
命令方式:window向linux传文件
【10月更文挑战第6天】本文介绍了如何在Linux系统中通过命令`ip a`获取IP地址,并在Windows系统下使用CMD命令行工具和SCP命令实现文件传输。示例展示了如何将D盘中的`mm.jar`文件上传至IP地址为192.168.163.122的Linux系统的/up/目录下,最后在Linux系统中确认文件传输结果。
167 65
|
3天前
|
安全 Linux
Linux系统之lsof命令的基本使用
【10月更文挑战第14天】Linux系统之lsof命令的基本使用
26 2
Linux系统之lsof命令的基本使用
|
11天前
|
Web App开发 网络协议 Linux
linux命令总结(centos):shell常用命令汇总,平时用不到,用到就懵逼忘了,于是专门写了这篇论文,【便持续更新】
这篇文章是关于Linux命令的总结,涵盖了从基础操作到网络配置等多个方面的命令及其使用方法。
36 1
linux命令总结(centos):shell常用命令汇总,平时用不到,用到就懵逼忘了,于是专门写了这篇论文,【便持续更新】
|
13天前
|
监控 安全 网络协议
|
5天前
|
Linux
Linux 系统五种帮助命令的使用
Linux 系统五种帮助命令的使用
31 14
|
1天前
|
运维 网络协议 Linux
linux系统命令 losf详解
**lsof命令**(List Open Files)是Linux系统中一个非常实用的工具,用于列出当前系统上所有打开的文件以及与之关联的进程。以下是对lsof命令的详细介绍: ### 一、基本功能 lsof命令可以显示系统中被进程打开的文件,这些文件可以是普通文件、目录、网络套接字、设备文件等。通过lsof命令,用户可以方便地查看哪些文件被哪些进程打开,以及这些文件的状态信息。 ### 二、基本语法 lsof命令的基本语法为:`lsof [选项] [文件]`。其中,选项用于指定lsof命令的行为,文件则是可选的,用于指定要查询的文件。 ### 三、常用选项 * `-a` 或 `-
|
1天前
|
Linux Perl
Linux awk命令使用技巧
【10月更文挑战第16天】Linux awk命令使用技巧
9 4
|
6天前
|
Linux
Linux经常使用命令汇总和总结
Linux经常使用命令汇总和总结
25 1
|
6天前
|
安全 Linux Shell
Linux | Rsync 命令:16 个实际示例(上)
Linux | Rsync 命令:16 个实际示例(上)
20 0
Linux | Rsync 命令:16 个实际示例(上)
|
8天前
|
运维 Java Linux
【运维基础知识】Linux服务器下手写启停Java程序脚本start.sh stop.sh及详细说明
### 启动Java程序脚本 `start.sh` 此脚本用于启动一个Java程序,设置JVM字符集为GBK,最大堆内存为3000M,并将程序的日志输出到`output.log`文件中,同时在后台运行。 ### 停止Java程序脚本 `stop.sh` 此脚本用于停止指定名称的服务(如`QuoteServer`),通过查找并终止该服务的Java进程,输出操作结果以确认是否成功。
14 1

热门文章

最新文章