Heim  >  Artikel  >  php教程  >  Detaillierte Erläuterung des Linux-Befehls netstat

Detaillierte Erläuterung des Linux-Befehls netstat

高洛峰
高洛峰Original
2016-12-12 16:58:501164Durchsuche

Einführung

Der Netstat-Befehl wird verwendet, um verschiedene netzwerkbezogene Informationen anzuzeigen, wie z. B. Netzwerkverbindungen, Routing-Tabellen, Schnittstellenstatus (Interface Statistics), Masquerade-Verbindungen, Multicast-Mitgliedschaften (Multicast Memberships) usw.

Bedeutung der Ausgabeinformationen

Nach der Ausführung von netstat lautet das Ausgabeergebnis

Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 2 210.34.6.89:telnet 210.34.6.96:2873 ESTABLISHED
tcp 296 0 210.34.6.89:1165 210.34.6.84:netbios-ssn ESTABLISHED
tcp 0 0 localhost.localdom:9001 localhost.localdom:1162 ESTABLISHED
tcp 0 0 localhost.localdom:1162 localhost.localdom:9001 ESTABLISHED
tcp 0 80 210.34.6.89:1161 210.34.6.10:netbios-ssn CLOSE

Active UNIX domain sockets (w/o servers)
Proto RefCnt Flags Type State I-Node Path
unix 1 [ ] STREAM CONNECTED 16178 @000000dd
unix 1 [ ] STREAM CONNECTED 16176 @000000dc
unix 9 [ ] DGRAM 5292 /dev/log
unix 1 [ ] STREAM CONNECTED 16182 @000000df

Im Großen und Ganzen kann das Ausgabeergebnis von netstat in zwei Teile unterteilt werden:

Eine davon sind aktive Internetverbindungen, sogenannte aktive TCP-Verbindungen, wobei sich „Recv-Q“ und „Send-Q“ auf die Empfangs- und Sendewarteschlange von %0A beziehen. Diese Zahlen sollten im Allgemeinen 0 sein. Wenn nicht, bedeutet das, dass sich die Pakete in der Warteschlange stapeln. Diese Situation kommt nur in sehr seltenen Fällen vor.

Das andere sind aktive UNIX-Domänen-Sockets, sogenannte aktive Unix-Domänen-Sockets (identisch mit Netzwerk-Sockets, können aber nur für die lokale Kommunikation verwendet werden und die Leistung kann verdoppelt werden).
Proto zeigt das für die Verbindung verwendete Protokoll an, RefCnt stellt die Prozessnummer dar, die mit diesem Socket verbunden ist, Types zeigt den Typ des Sockets an, State zeigt den aktuellen Status des Sockets an und Path stellt den Pfadnamen dar, der von anderen verbundenen Prozessen verwendet wird zur Steckdose.

Gemeinsame Parameter

-a (alle) zeigt alle Optionen an, LISTEN-bezogene Optionen werden standardmäßig nicht angezeigt
-t (tcp) zeigt nur TCP-bezogene Optionen an
- u (udp) nur UDP-bezogene Optionen anzeigen
-n verweigert die Anzeige von Aliasnamen und konvertiert alle Zahlen, die angezeigt werden können, in Zahlen.
-l listet nur den Dienststatus in Listen (Listening) auf

-p zeigt den Namen des Programms an, das die entsprechende Verbindung hergestellt hat
-r zeigt die Routing-Informationen und die Routing-Tabelle an
- e zeigt die Erweiterungsinformationen wie UID usw. an.
-s Statistiken gemäß jedem Protokoll
-c Führen Sie den Befehl „netstat“ in regelmäßigen Abständen aus.

Tipp: Der Status von LISTEN und LISTENING kann nur mit -a oder -l eingesehen werden

Praktische Befehlsbeispiele

1. Alle Ports auflisten (einschließlich hörender und nicht hörender)

Alle Ports auflisten netstat -a

# netstat -a | more
 Active Internet connections (servers and established)
 Proto Recv-Q Send-Q Local Address           Foreign Address         State
 tcp        0      0 localhost:30037         *:*                     LISTEN
 udp        0      0 *:bootpc                *:*
 
Active UNIX domain sockets (servers and established)
 Proto RefCnt Flags       Type       State         I-Node   Path
 unix  2      [ ACC ]     STREAM     LISTENING     6135     /tmp/.X11-unix/X0
 unix  2      [ ACC ]     STREAM     LISTENING     5140     /var/run/acpid.socket

Alle TCP-Ports auflisten netstat -at

# netstat -at
 Active Internet connections (servers and established)
 Proto Recv-Q Send-Q Local Address           Foreign Address         State
 tcp        0      0 localhost:30037         *:*                     LISTEN
 tcp        0      0 localhost:ipp           *:*                     LISTEN
 tcp        0      0 *:smtp                  *:*                     LISTEN
 tcp6       0      0 localhost:ipp           [::]:*                  LISTEN

Alle UDP-Ports auflisten netstat -au

# netstat -au
 Active Internet connections (servers and established)
 Proto Recv-Q Send-Q Local Address           Foreign Address         State
 udp        0      0 *:bootpc                *:*
 udp        0      0 *:49119                 *:*
 udp        0      0 *:mdns                  *:*

2. Alle Sockets im Überwachungsstatus auflisten

Nur den Überwachungsport netstat -l anzeigen

# netstat -l
 Active Internet connections (only servers)
 Proto Recv-Q Send-Q Local Address           Foreign Address         State
 tcp        0      0 localhost:ipp           *:*                     LISTEN
 tcp6       0      0 localhost:ipp           [::]:*                  LISTEN
 udp        0      0 *:49119                 *:*

Nur Alle lauschenden TCP-Ports auflisten netstat -lt

# netstat -lt
 Active Internet connections (only servers)
 Proto Recv-Q Send-Q Local Address           Foreign Address         State
 tcp        0      0 localhost:30037         *:*                     LISTEN
 tcp        0      0 *:smtp                  *:*                     LISTEN
 tcp6       0      0 localhost:ipp           [::]:*                  LISTEN

Nur alle lauschenden UDP-Ports auflisten netstat -lu

# netstat -lu
 Active Internet connections (only servers)
 Proto Recv-Q Send-Q Local Address           Foreign Address         State
 udp        0      0 *:49119                 *:*
 udp        0      0 *:mdns                  *:*

Nur alle lauschenden UNIX-Ports auflisten netstat -lx

# netstat -lx
 Active UNIX domain sockets (only servers)
 Proto RefCnt Flags       Type       State         I-Node   Path
 unix  2      [ ACC ]     STREAM     LISTENING     6294     private/maildrop
 unix  2      [ ACC ]     STREAM     LISTENING     6203     public/cleanup
 unix  2      [ ACC ]     STREAM     LISTENING     6302     private/ifmail
 unix  2      [ ACC ]     STREAM     LISTENING     6306     private/bsmtp

3. Statistiken für jedes Protokoll anzeigen

Statistiken für alle Ports anzeigen netstat -s

# netstat -s
 Ip:
total packets received
with invalid addresses
forwarded
incoming packets discarded
incoming packets delivered
requests sent out
 Icmp:
ICMP messages received
input ICMP message failed.
 Tcp:
active connections openings
failed connection attempts
connection resets received
 Udp:
packets received
packets to unknown port received.
 .....

Statistiken für TCP- oder UDP-Ports anzeigen netstat -st oder -su

# netstat -st 
# netstat -su

4. PID und Prozessnamen in der Netstat-Ausgabe anzeigen netstat -p

netstat -p kann mit anderen Schaltern verwendet werden. Sie können „PID /Prozessname“ zur Netstat-Ausgabe hinzufügen, damit Sie können beim Debuggen leicht das Programm finden, das auf einem bestimmten Port ausgeführt wird.

# netstat -pt
 Active Internet connections (w/o servers)
 Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
 tcp        1      0 ramesh-laptop.loc:47212 192.168.185.75:www        CLOSE_WAIT  2109/firefox
 tcp        0      0 ramesh-laptop.loc:52750 lax:www ESTABLISHED 2109/firefox

5. Host, Port und Benutzername (Host, Port oder Benutzer) nicht in der Netstat-Ausgabe anzeigen

Wenn Sie nicht möchten, dass Host, Port und Benutzername angezeigt werden , verwenden Sie netstat -n. Anstelle dieser Namen werden Zahlen verwendet.

kann auch die Ausgabe beschleunigen, da keine Vergleichsabfragen durchgeführt werden müssen.

# netstat -an

Wenn Sie einfach nicht möchten, dass einer dieser drei Namen angezeigt wird, verwenden Sie den folgenden Befehl

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

6. 持续输出 netstat 信息

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

# netstat -c
 Active Internet connections (w/o servers)
 Proto Recv-Q Send-Q Local Address           Foreign Address         State
 tcp        0      0 ramesh-laptop.loc:36130 101-101-181-225.ama:www ESTABLISHED
 tcp        1      1 ramesh-laptop.loc:52564 101.11.169.230:www      CLOSING
 tcp        0      0 ramesh-laptop.loc:43758 server-101-101-43-2:www ESTABLISHED
 tcp        1      1 ramesh-laptop.loc:42367 101.101.34.101:www      CLOSING
 ^C

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

netstat --verbose

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

netstat: no support for `AF IPX' on this system.
netstat: no support for `AF AX25' on this system.
netstat: no support for `AF X25' on this system.
netstat: no support for `AF NETROM' on this system.

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

# netstat -r
 Kernel IP routing table
 Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
 192.168.1.0     *               255.255.255.0   U         0 0          0 eth2
 link-local      *               255.255.0.0     U         0 0          0 eth2
 default         192.168.1.1     0.0.0.0         UG        0 0          0 eth2

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

 

9. 找出程序运行的端口

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

# netstat -ap | grep ssh
 tcp        1      0 dev-db:ssh           101.174.100.22:39213        CLOSE_WAIT  -
 tcp        1      0 dev-db:ssh           101.174.100.22:57643        CLOSE_WAIT  -

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

# netstat -an | grep ':80'

10. 显示网络接口列表

# 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         0      0      0 0             0      0      0      0 BMU
 eth2       1500 0     26196      0      0 0         26883      6      0      0 BMRU
 lo        16436 0         4      0      0 0             4      0      0      0 LRU

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

# netstat -ie
 Kernel Interface table
 eth0      Link encap:Ethernet  HWaddr 00:10:40:11:11:11
 UP BROADCAST MULTICAST  MTU:1500  Metric:1
 RX packets:0 errors:0 dropped:0 overruns:0 frame:0
 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
 collisions:0 txqueuelen:1000
 RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
 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
221.136.168.36
154.74.45.242
78.173.31.236
62.183.207.98
192.168.1.14
182.48.111.215
124.193.219.34
119.145.41.2
114.255.41.30
75.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
ESTABLISHED
FIN_WAIT1
Foreign
LAST_ACK
LISTEN
SYN_SENT
TIME_WAIT
established)

最后的命令如下:

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


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn