ホームページ >php教程 >PHP开发 >Linuxのnetstatコマンド(ネットワーク関連の各種情報を表示)の詳しい説明と使用例

Linuxのnetstatコマンド(ネットワーク関連の各種情報を表示)の詳しい説明と使用例

高洛峰
高洛峰オリジナル
2016-12-15 09:21:502063ブラウズ

コンピューターが、誤ったデータや誤動作を引き起こすデータグラムを受信することがあっても、驚く必要はありません。TCP/IP はこの種のエラーを許容し、データグラムを自動的に再送信できます。ただし、エラー状態の累積数が受信した IP データグラムの大部分を占めている場合、またはその数が急速に増加している場合は、netstat を使用してこれらの状態が発生する理由を調べる必要があります。

1.コマンド形式:

netstat [-acCeFghilMnNoprstuvVwx][-A97c94673c3952b6c9e582ee80fe99d0f][--ip]

2.コマンド機能:

netstat は、IP、TCP、UDP、ICMP プロトコルに関連する統計データを表示するために使用されます。これは、通常、マシンの各ポートのネットワーク接続を確認するために使用されます。

3.コマンドパラメータ:

-a または –all は、接続されているすべてのソケットを表示します。

-A または – このネットワーク タイプの接続に関連するアドレスをリストします。

-c または –continuous はネットワークステータスを継続的にリストします。

-C または –cache は、ルーター設定のキャッシュ情報を表示します。

-e または –extend は、ネットワークに関するその他の関連情報を表示します。

-F または –fib は FIB を表示します。

-g または –groups は、マルチキャスト機能を備えたグループメンバーのリストを表示します。

-h または –help オンライン ヘルプ。

-i または –interfaces は、ネットワーク インターフェイス情報フォームを表示します。

-l または -listening は、監視対象サーバーのソケットを表示します。

-M または -masquerade は、マスカレードされたネットワーク接続を表示します。

-n または –numeric ドメインネームサーバーを経由せずに、IP アドレスを直接使用します。

-N または –netlink または –symbolic は、ネットワーク ハードウェア周辺機器のシンボリック リンク名を表示します。

-o または –timers はタイマーを表示します。

-p または –programs は、Socket を使用しているプログラム識別コードとプログラム名を表示します。

-r または –route はルーティング テーブルを表示します。

-s または –statistice は、ネットワーク稼働情報統計テーブルを表示します。

-t または –tcp は、TCP 伝送プロトコルの接続ステータスを表示します。

-u または -udp は、UDP 伝送プロトコルの接続状態を表示します。

-v または –verbose はコマンドの実行プロセスを表示します。

-V または –version はバージョン情報を表示します。

-w または –raw は、RAW 転送プロトコルの接続ステータスを表示します。

-x または –unix このパラメータの効果は、「-A unix」パラメータを指定した場合と同じです。

–ip または –inet このパラメーターは、「-A inet」パラメーターを指定するのと同じ効果があります。

4.使用例:

例 1: 使用するパラメータはありません

コマンド: netstat

出力:

[root@localhost ~]# netstat
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address Foreign Address State 
tcp 0 268 192.168.120.204:ssh 10.2.0.68:62420 ESTABLISHED 
udp 0 0 192.168.120.204:4371 10.58.119.119:domain ESTABLISHED 
Active UNIX domain sockets (w/o servers)
Proto RefCnt Flags Type State I-Node Path
unix 2 [ ] DGRAM 1491 @/org/kernel/udev/udevd
unix 4 [ ] DGRAM 7337 /dev/log
unix 2 [ ] DGRAM 708823 
unix 2 [ ] DGRAM 7539 
unix 3 [ ] STREAM CONNECTED 7287 
unix 3 [ ] STREAM CONNECTED 7286 
[root@localhost ~]#

説明:

全体として、netstat の出力結果は 2 つの部分に分けることができます:

1 つはアクティブなインターネット接続 : アクティブな TCP 接続と呼ばれます。ここで、「Recv-Q」と「Send-Q」は受信キューと送信キューを指します。通常、これらの数値は 0 である必要があります。そうでない場合は、パッケージがキューに山積みになっていることを意味します。この状況は非常にまれなケースでのみ発生します。

もう1つは、アクティブUNIXドメインソケットと呼ばれるアクティブUNIXドメインソケットです(ネットワークソケットと同じですが、ローカル通信にのみ使用でき、パフォーマンスが2倍になります)。

Proto は接続に使用されるプロトコルを表示し、RefCnt はこのソケットに接続されているプロセス番号を表し、Types はソケットの種類を表示し、State はソケットの現在のステータスを表示し、Path は接続されている他のプロセスが使用するパス名を表します。ソケット。

ソケットタイプ:

-t: TCP

-u: UDP

-raw: RAW タイプ

--unix: UNIX ドメインタイプ

--ax25: AX25 タイプ

--ipx: ipx タイプ

--netrom: netrom タイプ

ステータスの説明:

LISTEN: リモート TCP ポートからの接続リクエストをリッスンします

SYN-SENT: 接続リクエストを送信した後、一致する接続リクエストを待ちます (そのようなステータスが多数ある場合)

SYN-RECEIVED: 接続リクエストを送受信後、相手の接続リクエストの確認を待ちます(このステータスが大量にある場合はフラッディングしていると推定されます) )

ESTABLISHED: オープン接続を表します

FIN-WAIT-1: リモート TCP からの接続中断要求、または前の接続中断要求の確認を待機しています

FIN-WAIT-2: 接続中断要求を待機していますリモート TCP から

CLOSE-WAIT: ローカル ユーザーからの接続中断要求を待機中 接続中断要求が送信されました

CLOSING: リモート TCP が接続中断を確認するのを待機中

LAST-ACK: 元の接続を待機中確認のためにリモート TCP に中断リクエストを送信します (これは良くありません。この項目が表示されます。攻撃であるかどうかを確認してください)

TIME-WAIT: リモート TCP が接続中断リクエストの確認を確実に受信するまで十分な時間を待ちます

CLOSED : 接続ステータスなし

例 2: すべてのポートをリストする

コマンド: netstat -a

出力:

[root@localhost ~]# netstat -a
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State 
tcp 0 0 localhost:smux *:* LISTEN 
tcp 0 0 *:svn *:* LISTEN 
tcp 0 0 *:ssh *:* LISTEN 
tcp 0 284 192.168.120.204:ssh 10.2.0.68:62420 ESTABLISHED 
udp 0 0 localhost:syslog *:* 
udp 0 0 *:snmp *:* 
Active UNIX domain sockets (servers and established)
Proto RefCnt Flags Type State I-Node Path
unix 2 [ ACC ] STREAM LISTENING 708833 /tmp/ssh-yKnDB15725/agent.15725
unix 2 [ ACC ] STREAM LISTENING 7296 /var/run/audispd_events
unix 2 [ ] DGRAM 1491 @/org/kernel/udev/udevd
unix 4 [ ] DGRAM 7337 /dev/log
unix 2 [ ] DGRAM 708823 
unix 2 [ ] DGRAM 7539 
unix 3 [ ] STREAM CONNECTED 7287 
unix 3 [ ] STREAM CONNECTED 7286 
[root@localhost ~]#

説明:

確立された接続 (ESTABLISHED) とそれらの接続を含む、すべての有効な接続情報のリストを表示します。接続をリッスンしている (LISTENING)。

インスタンス 3: 現在の UDP 接続ステータスを表示する

コマンド: netstat -nu

出力:

[root@andy ~]# netstat -nu
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address Foreign Address State 
udp 0 0 ::ffff:192.168.12:53392 ::ffff:192.168.9.120:10000 ESTABLISHED 
udp 0 0 ::ffff:192.168.12:56723 ::ffff:192.168.9.120:10000 ESTABLISHED 
udp 0 0 ::ffff:192.168.12:56480 ::ffff:192.168.9.120:10000 ESTABLISHED 
udp 0 0 ::ffff:192.168.12:58154 ::ffff:192.168.9.120:10000 ESTABLISHED 
udp 0 0 ::ffff:192.168.12:44227 ::ffff:192.168.9.120:10000 ESTABLISHED 
udp 0 0 ::ffff:192.168.12:36954 ::ffff:192.168.9.120:10000 ESTABLISHED 
udp 0 0 ::ffff:192.168.12:53984 ::ffff:192.168.9.120:10000 ESTABLISHED 
udp 0 0 ::ffff:192.168.12:57703 ::ffff:192.168.9.120:10000 ESTABLISHED 
udp 0 0 ::ffff:192.168.12:53613 ::ffff:192.168.9.120:10000 ESTABLISHED 
[root@andy ~]#

インスタンス 4: UDP ポート番号の使用状況を表示する

コマンド: netstat -apu

出力:

[root@andy ~]# netstat -apu
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name 
udp 0 0 *:57604 *:* 28094/java 
udp 0 0 *:40583 *:* 21220/java 
udp 0 0 *:45451 *:* 14583/java 
udp 0 0 ::ffff:192.168.12:53392 ::ffff:192.168.9.120:ndmp ESTABLISHED 19327/java 
udp 0 0 *:52370 *:* 15841/java 
udp 0 0 ::ffff:192.168.12:56723 ::ffff:192.168.9.120:ndmp ESTABLISHED 15841/java 
udp 0 0 *:44182 *:* 31757/java 
udp 0 0 *:48155 *:* 5476/java 
udp 0 0 *:59808 *:* 17333/java 
udp 0 0 ::ffff:192.168.12:56480 ::ffff:192.168.9.120:ndmp ESTABLISHED 28094/java 
udp 0 0 ::ffff:192.168.12:58154 ::ffff:192.168.9.120:ndmp ESTABLISHED 15429/java 
udp 0 0 *:36780 *:* 10091/java 
udp 0 0 *:36795 *:* 24594/java 
udp 0 0 *:41922 *:* 20506/java 
udp 0 0 ::ffff:192.168.12:44227 ::ffff:192.168.9.120:ndmp ESTABLISHED 17333/java 
udp 0 0 *:34258 *:* 8866/java 
udp 0 0 *:55508 *:* 11667/java 
udp 0 0 *:36055 *:* 12425/java 
udp 0 0 ::ffff:192.168.12:36954 ::ffff:192.168.9.120:ndmp ESTABLISHED 16532/java 
udp 0 0 ::ffff:192.168.12:53984 ::ffff:192.168.9.120:ndmp ESTABLISHED 20506/java 
udp 0 0 ::ffff:192.168.12:57703 ::ffff:192.168.9.120:ndmp ESTABLISHED 31757/java 
udp 0 0 ::ffff:192.168.12:53613 ::ffff:192.168.9.120:ndmp ESTABLISHED 3199/java 
udp 0 0 *:56309 *:* 15429/java 
udp 0 0 *:54007 *:* 16532/java 
udp 0 0 *:39544 *:* 3199/java 
udp 0 0 *:43900 *:* 19327/java 
[root@andy ~]#

Instance 5 : ネットワークカード一覧を表示

コマンド: netstat -i

出力:

[root@andy ~]# netstat -i
Kernel Interface table
Iface MTU Met RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg
eth0 1500 0 151818887 0 0 0 198928403 0 0 0 BMRU
lo 16436 0 107235 0 0 0 107235 0 0 0 LRU
[root@andy ~]#

例6: マルチキャストグループの関係を表示

命令:netstat -g

输出:

[root@andy ~]# netstat -g
IPv6/IPv4 Group Memberships
Interface RefCnt Group
--------------- ------ ---------------------
lo 1 all-systems.mcast.net
eth0 1 all-systems.mcast.net
lo 1 ff02::1
eth0 1 ff02::1:ffff:9b0c
eth0 1 ff02::1
[root@andy ~]#

实例7:显示网络统计信息

命令:netstat -s

输出:

[root@localhost ~]# netstat -s
Ip:
530999 total packets received
0 forwarded
0 incoming packets discarded
530999 incoming packets delivered
8258 requests sent out
1 dropped because of missing route
Icmp:
90 ICMP messages received
0 input ICMP message failed.
ICMP input histogram:
destination unreachable: 17
echo requests: 1
echo replies: 72
106 ICMP messages sent
0 ICMP messages failed
ICMP output histogram:
destination unreachable: 8
echo request: 97
echo replies: 1
IcmpMsg:
InType0: 72
InType3: 17
InType8: 1
OutType0: 1
OutType3: 8
OutType8: 97
Tcp:
8 active connections openings
15 passive connection openings
8 failed connection attempts
3 connection resets received
1 connections established
3132 segments received
2617 segments send out
53 segments retransmited
0 bad segments received.
252 resets sent
Udp:
0 packets received
0 packets to unknown port received.
0 packet receive errors
5482 packets sent
TcpExt:
1 invalid SYN cookies received
1 TCP sockets finished time wait in fast timer
57 delayed acks sent
Quick ack mode was activated 50 times
60 packets directly queued to recvmsg prequeue.
68 packets directly received from backlog
4399 packets directly received from prequeue
520 packets header predicted
51 packets header predicted and directly queued to user
1194 acknowledgments not containing data received
21 predicted acknowledgments
0 TCP data loss events
1 timeouts after reno fast retransmit
9 retransmits in slow start
42 other TCP timeouts
3 connections aborted due to timeout
IpExt:
InBcastPkts: 527777

说明:

按照各个协议分别显示其统计数据。如果我们的应用程序(如Web浏览器)运行速度比较慢,或者不能显示Web页之类的数据,那么我们就可以用本选项来查看一下所显示的信息。我们需要仔细查看统计数据的各行,找到出错的关键字,进而确定问题所在。

实例8:显示监听的套接口

命令:netstat -l

输出:

[root@localhost ~]# netstat -l
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State 
tcp 0 0 localhost:smux *:* LISTEN 
tcp 0 0 *:svn *:* LISTEN 
tcp 0 0 *:ssh *:* LISTEN 
udp 0 0 localhost:syslog *:* 
udp 0 0 *:snmp *:* 
Active UNIX domain sockets (only servers)
Proto RefCnt Flags Type State I-Node Path
unix 2 [ ACC ] STREAM LISTENING 708833 /tmp/ssh-yKnDB15725/agent.15725
unix 2 [ ACC ] STREAM LISTENING 7296 /var/run/audispd_events
[root@localhost ~]#

实例9:显示所有已建立的有效连接

命令:netstat -n

输出:

[root@localhost ~]# netstat -n
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address Foreign Address State 
tcp 0 268 192.168.120.204:22 10.2.0.68:62420 ESTABLISHED 
Active UNIX domain sockets (w/o servers)
Proto RefCnt Flags Type State I-Node Path
unix 2 [ ] DGRAM 1491 @/org/kernel/udev/udevd
unix 4 [ ] DGRAM 7337 /dev/log
unix 2 [ ] DGRAM 708823 
unix 2 [ ] DGRAM 7539 
unix 3 [ ] STREAM CONNECTED 7287 
unix 3 [ ] STREAM CONNECTED 7286 
[root@localhost ~]#

实例10:显示关于以太网的统计数据

命令:netstat -e

输出:

[root@localhost ~]# netstat -e
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address Foreign Address State User Inode 
tcp 0 248 192.168.120.204:ssh 10.2.0.68:62420 ESTABLISHED root 708795 
Active UNIX domain sockets (w/o servers)
Proto RefCnt Flags Type State I-Node Path
unix 2 [ ] DGRAM 1491 @/org/kernel/udev/udevd
unix 4 [ ] DGRAM 7337 /dev/log
unix 2 [ ] DGRAM 708823 
unix 2 [ ] DGRAM 7539 
unix 3 [ ] STREAM CONNECTED 7287 
unix 3 [ ] STREAM CONNECTED 7286 
[root@localhost ~]#

说明:

用于显示关于以太网的统计数据。它列出的项目包括传送的数据报的总字节数、错误数、删除数、数据报的数量和广播的数量。这些统计数据既有发送的数据报数量,也有接收的数据报数量。这个选项可以用来统计一些基本的网络流量)

实例11:显示关于路由表的信息

命令:netstat -r

输出:

[root@localhost ~]# netstat -r
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
192.168.120.0 * 255.255.255.0 U 0 0 0 eth0
192.168.0.0 192.168.120.1 255.255.0.0 UG 0 0 0 eth0
10.0.0.0 192.168.120.1 255.0.0.0 UG 0 0 0 eth0
default 192.168.120.240 0.0.0.0 UG 0 0 0 eth0
[root@localhost ~]#

实例12:列出所有 tcp 端口

命令:netstat -at

输出:

[root@localhost ~]# netstat -at
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State 
tcp 0 0 localhost:smux *:* LISTEN 
tcp 0 0 *:svn *:* LISTEN 
tcp 0 0 *:ssh *:* LISTEN 
tcp 0 284 192.168.120.204:ssh 10.2.0.68:62420 ESTABLISHED 
[root@localhost ~]#

实例13:统计机器中网络连接各个状态个数

命令:netstat -a | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'

输出:

[root@localhost ~]# netstat -a | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
ESTABLISHED 1
LISTEN 3
[root@localhost ~]#

实例14:把状态全都取出来后使用uniq -c统计后再进行排序

命令:netstat -nat |awk '{print $6}'|sort|uniq -c

输出:

[root@andy ~]# netstat -nat |awk '{print $6}'|sort|uniq -c
14 CLOSE_WAIT
1 established)
578 ESTABLISHED
1 Foreign
43 LISTEN
5 TIME_WAIT
[root@andy ~]# netstat -nat |awk '{print $6}'|sort|uniq -c|sort -rn
576 ESTABLISHED
43 LISTEN
14 CLOSE_WAIT
5 TIME_WAIT
1 Foreign
1 established)
[root@andy ~]#

实例15:查看连接某服务端口最多的的IP地址

命令:netstat -nat | grep "192.168.120.20:16067" |awk '{print $5}'|awk -F: '{print $4}'|sort|uniq -c|sort -nr|head -20

输出:

[root@andy ~]# netstat -nat | grep "192.168.120.20:16067" |awk '{print $5}'|awk -F: '{print $4}'|sort|uniq -c|sort -nr|head -20
8 10.2.1.68
7 192.168.119.13
6 192.168.119.201
6 192.168.119.20
6 192.168.119.10
4 10.2.1.199
3 10.2.1.207
2 192.168.120.20
2 192.168.120.15
2 192.168.119.197
2 192.168.119.11
2 10.2.1.206
2 10.2.1.203
2 10.2.1.189
2 10.2.1.173
1 192.168.120.18
1 192.168.119.19
1 10.2.2.227
1 10.2.2.138
1 10.2.1.208
[root@andy ~]#

实例16:找出程序运行的端口

命令:netstat -ap | grep ssh

输出:

[root@andy ~]# netstat -ap | grep ssh
tcp 0 0 *:ssh *:* LISTEN 2570/sshd 
tcp 0 0 ::ffff:192.168.120.206:ssh ::ffff:10.2.1.205:54508 ESTABLISHED 13883/14 
tcp 0 0 ::ffff:192.168.120.206:ssh ::ffff:10.2.0.68:62886 ESTABLISHED 20900/6 
tcp 0 0 ::ffff:192.168.120.206:ssh ::ffff:10.2.2.131:52730 ESTABLISHED 20285/sshd: root@no 
unix 2 [ ACC ] STREAM LISTENING 194494461 20900/6 /tmp/ssh-cXIJj20900/agent.20900
unix 3 [ ] STREAM CONNECTED 194307443 20285/sshd: root@no 
unix 3 [ ] STREAM CONNECTED 194307441 20285/sshd: root@no 
[root@andy ~]#

实例17:在 netstat 输出中显示 PID 和进程名称

命令:netstat -pt

输出:

[root@localhost ~]# netstat -pt
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name 
tcp 0 248 192.168.120.204:ssh 10.2.0.68:62420 ESTABLISHED 15725/0 
[root@localhost ~]#

说明:

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

实例18:找出运行在指定端口的进程

命令:netstat -anpt | grep ':16064'

输出:

[root@andy ~]# netstat -anpt | grep ':16064'
tcp 0 0 :::16064 :::* LISTEN 24594/java 
tcp 0 0 ::ffff:192.168.120.20:16064 ::ffff:192.168.119.201:6462 ESTABLISHED 24594/java 
tcp 0 0 ::ffff:192.168.120.20:16064 ::ffff:192.168.119.20:26341 ESTABLISHED 24594/java 
tcp 0 0 ::ffff:192.168.120.20:16064 ::ffff:192.168.119.20:32208 ESTABLISHED 24594/java 
tcp 0 0 ::ffff:192.168.120.20:16064 ::ffff:192.168.119.20:32207 ESTABLISHED 24594/java 
tcp 0 0 ::ffff:192.168.120.20:16064 ::ffff:10.2.1.68:51303 ESTABLISHED 24594/java 
tcp 0 0 ::ffff:192.168.120.20:16064 ::ffff:10.2.1.68:51302 ESTABLISHED 24594/java 
tcp 0 0 ::ffff:192.168.120.20:16064 ::ffff:10.2.1.68:50020 ESTABLISHED 24594/java 
tcp 0 0 ::ffff:192.168.120.20:16064 ::ffff:10.2.1.68:50019 ESTABLISHED 24594/java 
tcp 0 0 ::ffff:192.168.120.20:16064 ::ffff:10.2.1.68:56155 ESTABLISHED 24594/java 
tcp 0 0 ::ffff:192.168.120.20:16064 ::ffff:10.2.1.68:50681 ESTABLISHED 24594/java 
tcp 0 0 ::ffff:192.168.120.20:16064 ::ffff:10.2.1.68:50680 ESTABLISHED 24594/java 
tcp 0 0 ::ffff:192.168.120.20:16064 ::ffff:10.2.1.68:52136 ESTABLISHED 24594/java 
tcp 0 0 ::ffff:192.168.120.20:16064 ::ffff:10.2.1.68:56989 ESTABLISHED 24594/java 
tcp 0 0 ::ffff:192.168.120.20:16064 ::ffff:10.2.1.68:56988 ESTABLISHED 24594/java 
[root@andy ~]#

说明:

运行在端口16064的进程id为24596,再通过ps命令就可以找到具体的应用程序了。


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。