Heim  >  Artikel  >  Betrieb und Instandhaltung  >  Eine ausführliche Diskussion über den Befehl netstat unter Linux

Eine ausführliche Diskussion über den Befehl netstat unter Linux

黄舟
黄舟Original
2017-05-27 10:22:182178Durchsuche

Der Redakteur unten wird Ihnen eine ausführliche Diskussion des Linux netstat-Befehls liefern (unverzichtbar für Interviews mit Führungskräften). Der Herausgeber findet es ziemlich gut, deshalb werde ich es jetzt mit Ihnen teilen und es allen als Referenz geben. Kommen Sie und schauen Sie sich den Editor an

Einführung

Der Netstat-Befehl wird verwendet, um verschiedene anzuzeigen Netzwerke Verwandte Informationen, wie Netzwerkverbindung, Routing-Tabelle, SchnittstelleStatus (Schnittstellenstatistik), Maskierungsverbindung, Multicast-Mitgliedschaften (Multicast-Mitgliedschaften) 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 können die Ausgabeergebnisse von netstat in zwei Teile unterteilt werden:

Einer sind aktive Internetverbindungen, sogenannte aktive TCP-Verbindungen, darunter „Recv-Q“ Und „Send-Q“ bezieht sich auf die Empfangs--Warteschlange und die Sendewarteschlange von %0A. 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 die mit diesem Socket verbundene Prozessnummer dar der Socket Pfadname, der von anderen Prozessen verwendet wird.

Gemeinsame Parameter

-a (alle) zeigt alle Optionen an, nicht standardmäßig angezeigt LISTEEN bezogen
-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

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 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         *:*

2. Alle Sockets im Überwachungsstatus auflisten

Nur anzeigen Listening-Ports netstat -l

# 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 hörenden 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 hörenden 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 hörenden 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:
 11150 total packets received
 1 with invalid addresses
 0 forwarded
 0 incoming packets discarded
 11149 incoming packets delivered
 11635 requests sent out
 Icmp:
 0 ICMP messages received
 0 input ICMP message failed.
 Tcp:
 582 active connections openings
 2 failed connection attempts
 25 connection resets received
 Udp:
 1183 packets received
 4 packets to unknown port received.
 .....

TCP- oder UDP-Portstatistik 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, um „PID/Prozessname“ zu Netstat hinzuzufügen. In der Ausgabe können Sie das laufende Programm leicht finden auf einem bestimmten Port während des Debuggens.

# 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 den Host nicht möchten, port und Um den Benutzernamen anzuzeigen, verwenden Sie netstat -n. Anstelle dieser Namen werden Zahlen verwendet.

kann auch die Ausgabe beschleunigen, da keine Notwendigkeit besteht, Abfragen zu vergleichen.

# netstat -an

Wenn Sie nicht möchten, dass nur 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-Informationen kontinuierlich ausgeben

netstat gibt jede Sekunde Netzwerkinformationen aus.

# 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. Adressfamilien anzeigen, die das System nicht unterstützt (Adressfamilien)

netstat --verbose

Am Ende der Ausgabe erscheint die Folgende Informationen

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. Kernrouting-Informationen anzeigen 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

Hinweis: Verwenden Sie netstat -rn, um das numerische Format anzuzeigen und Fragen Sie nicht den Hostnamen ab.

9. Finden Sie den Port, auf dem das Programm ausgeführt wird.

Es können nicht alle Prozesse gefunden werden und diejenigen ohne Berechtigung werden nicht angezeigt. Verwenden Sie root Berechtigungen zum Anzeigen aller Informationen.

# 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 -

Ermitteln Sie den Prozess, der auf dem angegebenen Port ausgeführt wird

# netstat -an | grep ':80'

10. Zeigen Sie die Netzwerkschnittstellenliste an

# 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
18 221.136.168.36
3 154.74.45.242
2 78.173.31.236
2 62.183.207.98
2 192.168.1.14
2 182.48.111.215
2 124.193.219.34
2 119.145.41.2
2 114.255.41.30
1 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
143 ESTABLISHED
1 FIN_WAIT1
1 Foreign
1 LAST_ACK
36 LISTEN
6 SYN_SENT
113 TIME_WAIT
1 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

Das obige ist der detaillierte Inhalt vonEine ausführliche Diskussion über den Befehl netstat unter Linux. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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