|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
1 g7 N. P4 p" |9 ]; x% q
netstat命令是一个监控TCP/IP网络的非常有用的工具,它可以显示路由表、实际的网络连接以及每一个网络接口设备的状态信息,, Z0 z8 J% F" V Q. v) C7 {
语 法:netstat [-acCeFghilMnNoprstuvVwx][-A网络类型>][--ip]: u4 W* L9 ]6 E
补充说明:利用netstat指令可让你得知整个Linux系统的网络情况。
0 `; G3 F7 R5 _: L参 数:/ T1 v: ?. o5 w+ `
-a或--all 显示所有连线中的Socket。6 R& S# \! [1 d, l/ U
-A网络类型>或--网络类型> 列出该网络类型连线中的相关地址。1 m( P) v! N# c; \* x- K% i0 Y
-c或--continuous 持续列出网络状态。
$ x: Q- i: A' z-C或--cache 显示路由器配置的快取信息。2 M/ x. b: A- b) ~! w# N9 H
-e或--extend 显示网络其他相关信息。
7 q. ~% ]7 g- N& w-F或--fib 显示FIB。0 D& }9 T( G7 X2 @, [
-g或--groups 显示多重广播功能群组组员名单。$ ^+ b: o4 m6 ]8 i
-h或--help 在线帮助。$ k' i- Y1 C# e7 I
-i或--inteRFaces 显示网络界面信息表单。# V; U) e. j- D9 h
-l或--listening 显示监控中的服务器的Socket。
h+ M; ]( a7 i-M或--masquerade 显示伪装的网络连线。
o/ n- y& P7 w/ S% M! j9 m" @-n或--numeric 直接使用IP地址,而不通过域名服务器。) s$ w" i4 {5 f5 {/ _
-N或--netlink或--symbolic 显示网络硬件外围设备的符号连接名称。# A+ t5 H/ {- R/ r+ v5 a: l( u9 }& V
-o或--timers 显示计时器。$ b3 Y; p' p9 U( P0 ?8 L9 e
-p或--programs 显示正在使用Socket的程序识别码和程序名称。
* b: G' P( {8 ]5 I6 D-r或--route 显示Routing Table。* J8 @1 w5 S$ K# f' R
-s或--statistice 显示网络工作信息统计表。6 J$ V; W+ ?( N0 o* G, k# x
-t或--tcp 显示TCP传输协议的连线状况。
# Q' w$ G3 ]% Z8 w! K-u或--udp 显示UDP传输协议的连线状况。
+ W$ P$ \, @) A# K1 s. ]-v或--verbose 显示指令执行过程。3 Y2 ^; z0 h; l
-V或--version 显示版本信息。
4 t- G' a* x9 X3 x% y U. _-w或--raw 显示RAW传输协议的连线状况。( C. p/ Z* H. q% X. z2 x
-x或--unix 此参数的效果和指定"-A unix"参数相同。
8 G2 B. g# ^/ P8 Y$ }, t--ip或--inet 此参数的效果和指定"-A inet"参数相同。+ ?4 S, o& @) Z/ R
5 \& W7 W+ {( A2 v( X2 T/ B1) netstat -tl -nltp
0 x% s+ ?/ X! Z( ~4 R( r6 Y查看当前tcp监听端口
' r3 p# @( K& G. X% kActive Internet connections (only servers)
; @; T9 i2 A! C2 ?( pProto Recv-Q Send-Q Local Address Foreign Address State [2 L; P$ f8 D+ X; k' a
tcp 0 0 *:rrac *:* LISTEN 8 Y8 ^ o/ H5 ^: ~5 v
tcp 0 0 *:34006 *:* LISTEN
1 v+ t# o8 V- a& w2 b...... m$ V+ ~8 Y( c7 N) `% q( M: P! b
- L, u( X5 U/ d9 w1 ~
2) netstat -tlp
/ A" A9 [+ w& T查看当前tcp监听端口, 需要显示监听的程序名,当不清楚mysql的监听端口时比较好用4 e( a* @, ~% v* o* P) A) D& J
Active Internet connections (only servers)
& N+ H7 O8 `7 v$ UProto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
1 ~( j) l3 m+ |' s& E4 ^2 Dtcp 0 0 *:rrac *:* LISTEN - 1 E1 E+ ^+ U: Y" A
tcp 0 0 *:34006 *:* LISTEN 23425/mysqld
" @) G" B) ^6 v) I4 I$ o! f......
X& M7 k4 p& i% X; p) q8 p& {1 K9 L- b$ O, B" C8 R6 }
" I8 h9 O, D2 I6 `" F% \2 `
3) netstat -tl | grep 34006
% g3 _! P) X- F& Y8 v- V6 A% P2 h 只查看mysql的监听端口,当前启动的mysql端口为34006,明确知道mysql监听端口时使用
5 V' |- C" _7 |" L* Y9 Z& ]7 \. v4 ~, J' S
4) netstat -ta | grep 340063 P" Q/ h$ \& Z4 a, Z' E- o
tcp 0 0 *:34006 *:* LISTEN
8 {) O/ D: I; A9 Z9 Xtcp 0 0 linux.local:34006 linux.local:41485 ESTABLISHED 6 i0 g4 w+ X5 S8 C
tcp 0 0 linux.local:34006 linux.local:41486 ESTABLISHED
' l* f2 a/ D ]% K: N/ u8 h9 `...3 E& w/ B' B8 ]. U- B
tcp 0 0 10.3.2.35:41488 10.3.2.35:34006 ESTABLISHED
/ j4 ?0 X3 ]- D- |6 r8 l) ~tcp 0 0 10.3.2.35:41489 10.3.2.35:34006 ESTABLISHED
$ n' F. H J: J2 vtcp 0 0 10.3.2.35:41490 10.3.2.35:34006 ESTABLISHED
0 Q( a+ `" _7 H+ [1 _- E: F* D$ R- H6 q
由于数据库和运用程序都放在同一台机器了,因此这里连接被显示了两次. 可以使用-p参数来显示PID,然后grep PID.
% ^1 L' i8 B5 ^7 ]$ U) G2 b/ p- N" M V" A2 O6 y
& v& `- F* L9 S) T) r3 e
5) netstat -tap | grep 34006 | grep 23425
) v3 x) y5 u2 L( A# y: W 23425是当前mysql的PID
, y4 l0 x' b' M" `5 }$ p% ktcp 0 0 *:34006 *:* LISTEN 23425/mysqld
/ n l6 @0 [# ?3 V1 m+ ]# X. @tcp 0 0 linux.local:34006 linux.local:41510 ESTABLISHED 23425/mysqld
, |2 v) P2 D( ~; g4 D B7 stcp 0 0 linux.local:34006 linux.local:41511 ESTABLISHED 23425/mysqld 3 w3 U1 K+ c: E; y9 z* Y( ~
tcp 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表示连接到套接口的其它进程使用的路径名。( ^0 {' V2 ]2 \
事实上,netstat是若干个工具的汇总。
, D* V2 x; f3 j4 U5 m. p1 I+ B
4 F O" g( g9 Y o S◆ 显示路由表# ?' G% s4 @; b( b* @
在随- r标记一起调用n e t s t a t时,将显示内核路由表,就像我们利用r o u t e命令一样。产生的输出如下:
$ P' X( r* K' ^1 a# a
# j0 H2 n. V# m S; d9 f[root@machine1 /]$ netstat -nr( w" Z4 W" A5 n; W- x- t+ O% R
Kernel IP routing table+ X. k0 G& Z% W8 \
Destination Gateway Genmask Flags MSS Window irtt Iface
& \ Q E! ? |$ c( k2 `* ?) E210.34.6.0 0.0.0.0 255.255.255.128 U 0 0 0 eth0$ J5 R* b4 C# F# C7 |
192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth12 q; G# v* y# g, L
127.0.0.0 0.0.0.0 255.0.0.0 U 0 0 0 lo
% \. [7 z6 G# s4 A0.0.0.0 210.34.6.2 0.0.0.0 UG 0 0 0 eth08 d* t8 D' H0 k4 }7 w# U
- E2 O L/ ]# \) d c- n 选项令netstat以点分四段式的形式输出IP地址,而不是象征性的主机名和网络名。如果想避免通过网络查找地址(比如避开DNS或NIS服务器),这一点是特别有用的。; i1 U0 q* ]( P7 z( k6 ?7 H
netstat 输出结果中,第二列展示的是路由条目所指的网关,如果没有使用网关,就会出现一个星号(*)或者0.0.0.0;第三列展示路由的概述,在为具体的I P地址找出最恰当的路由时,内核将查看路由表内的所有条目,在对找到的路由与目标路由比较之前,将对I P地址和genmask进行按位“与”计算;第四列显示了不同的标记,这些标记的说明如下:
; q# W m5 K; o3 A" u
* Q; b# y6 l- K0 J* T9 K■ G 路由将采用网关。
3 ]3 r% ?" T: S* I+ m8 B7 ~) \■ U 准备使用的接口处于“活动”状态。
& ~. ~# X4 L( z R■ H 通过该路由,只能抵达一台主机。
5 {9 |% e; `! g: h( l. W■ D 如果路由表的条目是由ICMP重定向消息生成的,就会设置这个标记。
M0 L& K& O# J- x1 W7 u5 R% P7 {) L$ K■ M 如果路由表条目已被ICMP重定向消息修改,就会设置这个标记。0 l$ r, q: O0 }! a
; D5 b! a# h, x0 k9 s
netstat输出结果的Iface显示该连接所用的物理网卡,如eth0表示用第一张,eth1表示用第二张。5 R' J9 z4 a9 {9 t6 |' B
. a5 U# K1 ]5 l, n( g/ I
◆ 显示接口特性9 Y+ F+ l) q! [" v
0 V* A: Z) t& ^
在随- i标记一起调用时, netstat将显示网络接口的当前配置特性。除此以外,如果调用时还带上-a选项,它还将输出内核中所有接口,并不只是当前配置的接口。netstat-i的输出结果是这样的:. l7 o( h4 {) u# B
6 ?! a) r" A" v; j
[root@machine1 /]$ netstat -i" o- t6 W5 Z3 P! }$ [
Kernel Interface table
1 d; H) j7 v2 xIface MTU Met RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg
$ F1 O( j7 o- r/ V9 keth0 1500 0 787165 0 0 1 51655 0 0 0 BRU; p! E6 W" m+ A6 k7 i9 g5 Z! N
eth1 1500 0 520811 0 0 0 1986 0 0 0 BRU
! O& V4 |+ ^+ H# r3 o6 Jlo 3924 0 1943 0 0 0 43 0 0 0 LRU' T8 p' f( l7 L. b
; T% l( v. P# R2 E q; pMTU 和Met字段表示的是接口的MTU和度量值值;RX和TX这两列表示的是已经准确无误地收发了多少数据包( RX - OK / TX - OK)、产生了多少错误( RX-ERR/TX-ERR)、丢弃了多少包(RX-DRP/TX-DRP),由于误差而遗失了多少包(RX-OVR/TX-OVR);最后一列展示的是 为这个接口设置的标记,在利用ifconfig显示接口配置时,这些标记都采用一个字母。它们的说明如下:
2 @& d$ M6 N) }$ q6 k
! j& Q; W7 ^0 B8 m7 K■ B 已经设置了一个广播地址。4 o$ y1 E6 P, J
■ L 该接口是一个回送设备。
# y! y. W% j) `■ M 接收所有数据包(混乱模式)。7 i: n! A: z' m* e% |5 s: Z" U0 Y
■ N 避免跟踪。
: y; u6 x4 _ m8 L% j) o■ O 在该接口上,禁用A R P。; I/ n7 {% _3 T8 g- v
■ P 这是一个点到点链接。4 Z" P1 F3 q# z; r' c+ l
■ R 接口正在运行。/ f: `1 X& o Z3 y9 \1 [5 ?
■ U 接口处于“活动”状态。5 F' v" d9 w# _
8 w+ A( w3 k/ {3 h% Y- @◆ 显示链接
/ @) j" u$ f+ B: x0 mnetstat 支持用于显示活动或被动套接字的选项集。选项- t、- u、- w和- x分别表示TCP、UDP、RAW和UNIX套接字连接。如果你另外还提供了一个- a标记,还会显示出等待连接(也就是说处于监听模式)的套接字。这样就可以得到一份服务器清单,当前所有运行于系统中的所有服务器都会列入其中。
5 p% |, ` {% @, m6 Q& |7 X: r7 x
% J7 D `7 ^9 Y2 \) v+ ?调用netstat -ta时,输出结果如下:
' X3 f( o* Z* T x, ?4 h4 r1 @7 {% ^2 O
[root@machine1 /]$ netstat -ta
' L2 t: _/ B6 z% [/ x8 [Active Internet connections (servers and established)* o* f' g' D0 b* q* `/ w
Proto Recv-Q Send-Q Local Address Foreign Address State
" U( l2 V, b$ b6 N: M# Jtcp 0 2 210.34.6.89:telnet 210.34.6.96:2873 ESTABLISHED
7 U% [8 ?/ K0 i" etcp 0 0 210.34.6.89:1165 210.34.6.84:netbios-ssn ESTABLISHED; c; U! h7 n7 D6 B
tcp 0 0 localhost.localdom:9001 localhost.localdom:1162 ESTABLISHED
|( u# ^1 k$ }tcp 0 0 localhost.localdom:1162 localhost.localdom:9001 ESTABLISHED3 K3 g, n5 N; u2 A& R
tcp 0 0 *:9001 *:* LISTEN
+ d2 q, H n3 I$ {" }tcp 0 0 *:6000 *:* LISTEN
3 F0 g8 h: Y6 Q/ s5 Ytcp 0 0 *:socks *:* LISTEN' f1 t [8 e* O8 c* _. l
tcp 0 80 210.34.6.89:1161 210.34.6.10:netbios-ssn CLOSE 3 R4 R! F g+ \, D
; V) k6 A; ]- W
上 面的输出表明部分服务器处于等待接入连接状态。利用- a选项的话,netstat还会显示出所有的套接字。注意根据端口号,可以判断出一条连接是否是外出连接。对呼叫方主机来说,列出的端口号应该一直是一个 整数,而对众所周知服务(well known service)端口正在使用中的被呼叫方来说,netstat采用的则是取自/etc/services文件的象征性服务名。 |
|