找回密码
 注册
关于网站域名变更的通知
查看: 288|回复: 1
打印 上一主题 下一主题

netstat

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2020-3-21 11:15 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
/ e+ P' R# D' t+ ], t& P
netstat命令是一个监控TCP/IP网络的非常有用的工具,它可以显示路由表、实际的网络连接以及每一个网络接口设备的状态信息,
" l5 u- x* U$ x' `: K7 w+ k语  法:netstat [-acCeFghilMnNoprstuvVwx][-A网络类型>][--ip]! |" c6 [- m# Q, W
补充说明:利用netstat指令可让你得知整个Linux系统的网络情况。
/ }, Y% a' q! Q( a# w参  数:
9 D/ i  z/ ^3 @, ]( y-a或--all   显示所有连线中的Socket。$ f* ~0 W5 R8 n7 u4 Y% e7 P
-A网络类型>或--网络类型>   列出该网络类型连线中的相关地址。
) j9 o% C) C. J* v3 m+ {% y4 O-c或--continuous   持续列出网络状态。
1 l( |- h1 p) E/ K8 X-C或--cache   显示路由器配置的快取信息。
) L5 k5 D/ x5 t& u1 c; l$ Y-e或--extend   显示网络其他相关信息。# o# X3 v) I5 Y, u* O, I
-F或--fib   显示FIB。
2 [. b! ~2 J/ i-g或--groups   显示多重广播功能群组组员名单。
; ^- F& z3 U  _# x4 B+ e-h或--help   在线帮助。( z1 x4 a* N, h: N" I
-i或--inteRFaces   显示网络界面信息表单。
5 y8 V5 ]  X- `) T7 ^-l或--listening   显示监控中的服务器的Socket。
( Q/ G- }: w7 w' r4 }! q-M或--masquerade   显示伪装的网络连线。
$ `6 y" w! \9 q! {-n或--numeric   直接使用IP地址,而不通过域名服务器。/ M! S" K/ [7 V  R9 O4 l
-N或--netlink或--symbolic   显示网络硬件外围设备的符号连接名称。
9 m2 u5 K" y, z; p9 e9 V) G-o或--timers   显示计时器。: T/ S1 R5 T1 ^6 S; n: [# c' V# q6 e: T
-p或--programs   显示正在使用Socket的程序识别码和程序名称。
$ X- H& u2 o: E9 `" }-r或--route   显示Routing Table。. Z' k1 R/ p! e6 w
-s或--statistice   显示网络工作信息统计表。) j) G% H! q/ |3 k9 v
-t或--tcp   显示TCP传输协议的连线状况。
- [& J' w0 U" q1 H+ Y$ _8 k' l2 M-u或--udp   显示UDP传输协议的连线状况。
; |) P8 d3 k+ E7 Y! |-v或--verbose   显示指令执行过程。
4 D3 b/ o& ~  d" U( p- \) }-V或--version   显示版本信息。
+ J8 F1 S" V4 z) j-w或--raw   显示RAW传输协议的连线状况。
8 k0 ]8 a& q+ U! k8 f-x或--unix   此参数的效果和指定"-A unix"参数相同。
& x4 h) E. G" N: D: w5 i--ip或--inet   此参数的效果和指定"-A inet"参数相同。, h/ K( K& K/ ]! {/ i7 g, p% g! W# ]
: C- X$ ?5 ]& y6 a
1) netstat -tl    -nltp3 ]8 O/ [- M% }$ N( j) S
查看当前tcp监听端口- N2 `: `3 D" F5 R" F) B! w( X
Active Internet connections (only servers)% r3 v. O6 j. F
Proto Recv-Q Send-Q Local Address           Foreign Address         State      ' B! F0 I: g: m' j! p) L: }- n
tcp        0      0 *:rrac                  *:*                     LISTEN      + a8 k/ R8 q5 T5 B8 R  e! Q
tcp        0      0 *:34006                 *:*                     LISTEN      
+ h" c& P, O4 `......
  E, l' J/ t: C) T: C. V! o( k6 R8 a7 L) m  C/ a
2) netstat -tlp8 d, D- v* }) M" c4 N
查看当前tcp监听端口, 需要显示监听的程序名,当不清楚mysql的监听端口时比较好用+ V/ l' T1 z8 V0 F- @& q
Active Internet connections (only servers)) k: L: B2 _) t6 P2 Z
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name   
. P1 J* B( S" _% y0 l5 btcp        0      0 *:rrac                  *:*                     LISTEN      -                          , T5 K5 o+ I' s
tcp        0      0 *:34006                 *:*                     LISTEN      23425/mysqld   
* b) z6 r$ x. O) ~/ |- J% }  m......
& \% }7 D3 G2 |$ b) m, W" d4 }) n1 f$ B, B- S4 X, _  t4 L( v+ Y# E  z
3 H+ D& m2 d0 m! E) A# Z! |5 h
3) netstat -tl | grep 34006
9 z/ c" E! x  p0 Q! {4 E    只查看mysql的监听端口,当前启动的mysql端口为34006,明确知道mysql监听端口时使用
- w$ {# {: J2 c1 q2 r* Y1 x! \1 o6 K9 _/ ~3 E
4) netstat -ta | grep 340068 r) a9 w; X- ]" z! N( [
tcp        0      0 *:34006                 *:*                     LISTEN      
* c# m! |$ r" l% u3 t; ]# H) etcp        0      0 linux.local:34006       linux.local:41485       ESTABLISHED   W: w2 F) R4 ]7 h! o) K: N
tcp        0      0 linux.local:34006       linux.local:41486       ESTABLISHED
# c5 b. i7 K1 i...1 l9 w1 x: a3 T# h" B0 M- `
tcp        0      0 10.3.2.35:41488         10.3.2.35:34006         ESTABLISHED , k3 b' Q2 Q: o" k$ q9 K1 Z1 n
tcp        0      0 10.3.2.35:41489         10.3.2.35:34006         ESTABLISHED : m* |" d0 {9 y8 |
tcp        0      0 10.3.2.35:41490         10.3.2.35:34006         ESTABLISHED
8 p5 Z, K" ~0 A  L9 W6 ^& }2 B# {8 w9 _7 P/ ?! I# _
由于数据库和运用程序都放在同一台机器了,因此这里连接被显示了两次. 可以使用-p参数来显示PID,然后grep PID.8 Y; D6 P1 u) F, ?6 J
  p) n2 i$ W  p, t8 Q" `, {

" K6 U9 v, z4 r, P5) netstat -tap | grep 34006 | grep 23425
! `, h' i! d- W3 Q; U    23425是当前mysql的PID- u! n$ G6 z$ O. P' l$ ]6 k
tcp        0      0 *:34006                 *:*                     LISTEN      23425/mysqld        
4 s1 F+ i) ?! w* N- t) dtcp        0      0 linux.local:34006       linux.local:41510       ESTABLISHED 23425/mysqld        - ~4 L# h2 e! v
tcp        0      0 linux.local:34006       linux.local:41511       ESTABLISHED 23425/mysqld        
5 E' v) n" R  ptcp        0      0 linux.local:34006       linux.local:41516       ESTABLISHED 23425/mysqld 从 整体上看,netstat的输出结果可以分为两个部分,一个是Active Internet connections,称为有源TCP连接,另一个是Active UNIX domain sockets,称为有源Unix域套接口。在上面的输出结果中,第一部分有5个输出结果,显示有源TCP连接的情况,而第二部分的输出结果显示的是 Unix域套接口的连接情况。Proto显示连接使用的协议;RefCnt表示连接到本套接口上的进程号;Types显示套接口的类型;State显示套 接口当前的状态;Path表示连接到套接口的其它进程使用的路径名。
7 L' V8 {" t$ x6 E( v事实上,netstat是若干个工具的汇总。4 G, b' v+ D9 N( y& C7 Z) K5 S! W$ R
' w0 n& ~) _& m( J" j( v6 [7 w* I
◆ 显示路由表
" h! c3 U8 U/ z1 x" B2 p( z0 T在随- r标记一起调用n e t s t a t时,将显示内核路由表,就像我们利用r o u t e命令一样。产生的输出如下:) f* f* Q& i7 F
" [' @6 @( {* f" V0 Q/ |7 q
[root@machine1 /]$ netstat -nr2 c( b# h9 _* B, t
Kernel IP routing table
2 h4 U4 d1 \2 B& L6 e5 X% HDestination Gateway Genmask Flags MSS Window irtt Iface
1 a" A- M  f$ ~# U210.34.6.0 0.0.0.0 255.255.255.128 U 0 0 0 eth0
) @- w& j; [% X; M192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth17 V, r! k$ T- B& {! F
127.0.0.0 0.0.0.0 255.0.0.0 U 0 0 0 lo
! V0 I* n3 d- |% K: B' d% _0.0.0.0 210.34.6.2 0.0.0.0 UG 0 0 0 eth0
& a  t  o! w2 V8 B: t/ a" C9 z: l' @& w6 a5 ?
- n 选项令netstat以点分四段式的形式输出IP地址,而不是象征性的主机名和网络名。如果想避免通过网络查找地址(比如避开DNS或NIS服务器),这一点是特别有用的。
, v0 G5 d* k  |1 F  Jnetstat 输出结果中,第二列展示的是路由条目所指的网关,如果没有使用网关,就会出现一个星号(*)或者0.0.0.0;第三列展示路由的概述,在为具体的I P地址找出最恰当的路由时,内核将查看路由表内的所有条目,在对找到的路由与目标路由比较之前,将对I P地址和genmask进行按位“与”计算;第四列显示了不同的标记,这些标记的说明如下:
% m# K: A- Q! P8 D/ U; J: g' n3 s* H. L. A* r' D$ u  v
■ G 路由将采用网关。
7 O5 c7 U! G5 h5 O& P7 u■ U 准备使用的接口处于“活动”状态。
- P- A; R2 v3 o  U■ H 通过该路由,只能抵达一台主机。$ r+ Z8 _$ S; m+ F6 j
■ D 如果路由表的条目是由ICMP重定向消息生成的,就会设置这个标记。. ~9 N  o1 G# `% f( O
■ M 如果路由表条目已被ICMP重定向消息修改,就会设置这个标记。9 c' ^5 c* N* D1 k
# u! C3 N8 X0 m1 `
netstat输出结果的Iface显示该连接所用的物理网卡,如eth0表示用第一张,eth1表示用第二张。
9 |* j4 g0 I' g9 h
9 S3 j5 y1 Z8 e5 B5 O2 `3 u◆ 显示接口特性( q# j# p& v# u( k0 S0 F7 z
/ v* l0 @. y7 y, z5 l% _3 i$ x
在随- i标记一起调用时, netstat将显示网络接口的当前配置特性。除此以外,如果调用时还带上-a选项,它还将输出内核中所有接口,并不只是当前配置的接口。netstat-i的输出结果是这样的:
% Q. b( X6 [0 c; v: r1 y$ W8 {0 [; ^9 e2 U' \7 u
[root@machine1 /]$ netstat -i5 R4 O: A6 h, S
Kernel Interface table' S* b8 Y4 Z3 G, G* o9 j
Iface MTU Met RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg
: r2 g; j4 T, w7 T9 [+ _0 Weth0 1500 0 787165 0 0 1 51655 0 0 0 BRU
# Z0 M% K% G# g$ Seth1 1500 0 520811 0 0 0 1986 0 0 0 BRU
3 m& ^5 \8 C7 d, `+ W3 o6 elo 3924 0 1943 0 0 0 43 0 0 0 LRU
' P' d4 L# y) M$ J* E( N/ q8 ^5 _7 d8 v, u# s  c
MTU 和Met字段表示的是接口的MTU和度量值值;RX和TX这两列表示的是已经准确无误地收发了多少数据包( RX - OK / TX - OK)、产生了多少错误( RX-ERR/TX-ERR)、丢弃了多少包(RX-DRP/TX-DRP),由于误差而遗失了多少包(RX-OVR/TX-OVR);最后一列展示的是 为这个接口设置的标记,在利用ifconfig显示接口配置时,这些标记都采用一个字母。它们的说明如下:
* ~: o$ f3 [8 J- w& s  z
# v6 L8 h# F3 G■ B 已经设置了一个广播地址。
0 W+ s$ J- y2 S* s■ L 该接口是一个回送设备。
7 P+ A( m' @9 A( ^- a. C■ M 接收所有数据包(混乱模式)。- b  J1 u8 x1 m3 s+ X* u+ D
■ N 避免跟踪。
% v$ c7 p* v+ i2 H* G■ O 在该接口上,禁用A R P。* P2 {9 P) Q* @
■ P 这是一个点到点链接。1 E* I8 u+ G2 r5 f* t
■ R 接口正在运行。  v  R( V6 Z1 g7 R( r. m
■ U 接口处于“活动”状态。
. k( j% o! d- j7 @4 @2 q3 A! [( ^+ N" b' J# T) }
◆ 显示链接
; H  l% v3 a0 g% ^3 N3 J" [2 H$ dnetstat 支持用于显示活动或被动套接字的选项集。选项- t、- u、- w和- x分别表示TCP、UDP、RAW和UNIX套接字连接。如果你另外还提供了一个- a标记,还会显示出等待连接(也就是说处于监听模式)的套接字。这样就可以得到一份服务器清单,当前所有运行于系统中的所有服务器都会列入其中。
7 n2 b2 b: ]9 [3 {( G. f  \: R1 U1 l
调用netstat -ta时,输出结果如下:
" S, J+ S& H4 @5 C
; `/ l' O( Q* ]; z4 \" `[root@machine1 /]$ netstat -ta; e% u" o8 M7 r* {
Active Internet connections (servers and established)
# g5 V3 h6 T; d1 W# b8 P# A' @Proto Recv-Q Send-Q Local Address Foreign Address State( @! K; `* G) M/ T( |
tcp 0 2 210.34.6.89:telnet 210.34.6.96:2873 ESTABLISHED$ S, S( @; D5 ^% X) O' y" @
tcp 0 0 210.34.6.89:1165 210.34.6.84:netbios-ssn ESTABLISHED
1 q% f1 z3 h1 |8 xtcp 0 0 localhost.localdom:9001 localhost.localdom:1162 ESTABLISHED
$ F$ z1 G5 a  s; T  c9 J$ Htcp 0 0 localhost.localdom:1162 localhost.localdom:9001 ESTABLISHED
1 }1 c5 R' u, @  W: Jtcp 0 0 *:9001 *:* LISTEN% a& J% t% k9 |/ j3 ^
tcp 0 0 *:6000 *:* LISTEN( R0 a# |9 s; H: S  `
tcp 0 0 *:socks *:* LISTEN7 Y% |. N1 }8 @+ Z! |8 |
tcp 0 80 210.34.6.89:1161 210.34.6.10:netbios-ssn CLOSE
5 x8 S: L9 Y  _& K3 t( M7 y: H/ i6 n8 D  j
上 面的输出表明部分服务器处于等待接入连接状态。利用- a选项的话,netstat还会显示出所有的套接字。注意根据端口号,可以判断出一条连接是否是外出连接。对呼叫方主机来说,列出的端口号应该一直是一个 整数,而对众所周知服务(well known service)端口正在使用中的被呼叫方来说,netstat采用的则是取自/etc/services文件的象征性服务名。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-11-25 17:51 , Processed in 0.187500 second(s), 24 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表