Heim > php教程 > PHP开发 > Hauptteil

Detaillierte Erläuterung des Linux-Befehls netstat

高洛峰
Freigeben: 2016-12-15 09:11:20
Original
1504 Leute haben es durchsucht

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
Nach dem Login kopieren

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 mit diesem Socket verbundene Prozessnummer dar, 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 (all) zeigt alle Optionen an, LISTEN-bezogene Optionen werden standardmäßig nicht angezeigt
-t (tcp) zeigt nur TCP-bezogene Optionen an
-u ( udp) zeigt nur UDP-bezogene Optionen an
-n verweigert die Anzeige von Aliasen 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
Nach dem Login kopieren

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
Nach dem Login kopieren

Alle UDP-Ports netstat -au auflisten

# 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                  *:*
Nach dem Login kopieren

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                 *:*
Nach dem Login kopieren

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
Nach dem Login kopieren

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                  *:*
Nach dem Login kopieren

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
Nach dem Login kopieren

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.
 .....
Nach dem Login kopieren

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

# netstat -st 
# netstat -su
Nach dem Login kopieren

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
Nach dem Login kopieren

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
Nach dem Login kopieren

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
Nach dem Login kopieren

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
Nach dem Login kopieren

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

netstat --verbose
Nach dem Login kopieren

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

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.
Nach dem Login kopieren

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
Nach dem Login kopieren

注意: 使用 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  -
Nach dem Login kopieren

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

# netstat -an | grep ':80'
Nach dem Login kopieren

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
Nach dem Login kopieren

显示详细信息,像是 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
Nach dem Login kopieren

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
Nach dem Login kopieren

TCP各种状态列表

wss8848@ubuntu:~$ netstat -nat |awk '{print $6}'
established)
Foreign
LISTEN
TIME_WAIT
ESTABLISHED
TIME_WAIT
SYN_SENT
Nach dem Login kopieren

先把状态全都取出来,然后使用uniq -c统计,之后再进行排序。

wss8848@ubuntu:~$ netstat -nat |awk '{print $6}'|sort|uniq -c
ESTABLISHED
FIN_WAIT1
Foreign
LAST_ACK
LISTEN
SYN_SENT
TIME_WAIT
established)
Nach dem Login kopieren

最后的命令如下:

netstat -nat |awk '{print $6}'|sort|uniq -c|sort -rn
Nach dem Login kopieren


分析access.log获得访问前10位的ip地址

awk '{print $1}' access.log |sort|uniq -c|sort -nr|head -10
Nach dem Login kopieren


Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Empfehlungen
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage