Научете каква е командата netstat и някои от примерите в реално време.


netstat (мрежова статистика) е инструмент на командния ред, който показва мрежови връзки (както входящи, така и изходящи), таблици за маршрутизация и редица статистически данни за мрежовия интерфейс.

Той е достъпен в Linux, Unix-подобни и Windows операционни системи. netstat е мощен и може да бъде удобен инструмент за отстраняване на проблеми, свързани с мрежата и проверка на статистиката на връзката.

Ако въведете netstat -help, ще получите следните указания за употреба.

[[Имейл защитен] ~] # netstat -помощ
използване: netstat [-vWeenNcCF] [] -r netstat {-V | –версия | -h | –help}
netstat [-vWnNcaeol] […]
netstat {[-vWeenNac] -I [] | [-veenNac] -i | [-cnNe] -M | -s [-6tuw]} [забавяне]

-r, –образувайте таблицата за маршрутизиране на дисплея
-I, –интерфейси = таблица за интерфейс на дисплея за
-i, – интерфейсна таблица за интерфейс за показване
-g, – групи показват членство в група за множествено предаване
-s, – статистика показва статистически данни за мрежите (като SNMP)
-M, – маскараден дисплей маскирани връзки

-v, –вербоза да бъде многословна
-W, – широко не пресечете IP адреси
-n, – числовите не разрешават имена
–числовите хостове не разрешават имена на хостове
–числовите портове не разрешават имената на порта
–цифровите потребители не разрешават потребителски имена
-N, – символични решения за хардуерни имена
-e, – разширете показване на друга / повече информация
-p, –програми показват PID / Име на програма за гнезда
-o, – таймери за показване
-c, – непрекъснато непрекъснато изброяване

-l, – закрепване на дисплеи за слушане на дисплей за слушане
-a, – всички показват всички гнезда (по подразбиране: свързани)
-F, –fib Дисплейна база данни за пренасочване (по подразбиране)
-C, – кеш дисплей за маршрутизиране на дисплея вместо FIB
-Z, –контекст дисплей Контекст на сигурност SELinux за сокети

= {- t | –tcp} {-u | –udp} {-U | –udplite} {-S | –sctp} {-w | –raw}
{-x | –unix} –ax25 –ipx –netrom
= Използвайте ‘-6 | -4’ или ‘-A’ или ‘-‘; по подразбиране: inet
Списък на възможните семейства адреси (които поддържат маршрутизиране):
inet (DARPA Internet) inet6 (IPv6) ax25 (AMPR AX.25)
netrom (AMPR NET / ROM) ipx (Novell IPX) ddp (Appletalk DDP)
x25 (CCITT X.25)
[[Имейл защитен] ~] #

Нека ви покажа някои от примерите на командата. Следните са тествани на RHEL / CentOS, но не виждам причина да не работя върху друг дистрибутив като Ubuntu.

Установена връзка

Ако търсите всички установени връзки от сървъра.

[[Имейл защитен] ~] # netstat -natu | grep ‘УСТАНОВЕНО’
tcp 0 21 68.183.37.102:22 222.186.31.135:21714 УСТАНОВЕН
tcp 0 36 68.183.37.102:22 52.148.155.182:29859 УСТАНОВЕН
tcp 0 0 68.183.37.102:22 61.177.142.158:55481 УСТАНОВЕН
[[Имейл защитен] ~] #

Ако имате много установени връзки и се интересувате от търсене на един от IP-адресите, тогава можете да използвате друг греп.

[[Имейл защитен] ~] # netstat -natu | grep “УСТАНОВЕНО” | греп 61.177.142.158
tcp 0 1280 68.183.37.102:22 61.177.142.158:403932 УСТАНОВЕН
[[Имейл защитен] ~] #

Връзка за слушане

Нека да кажем, че сте стартирали някаква услуга и това трябва да се слуша в определен IP адрес: Порт, това би било удобно за проверка.

[[Имейл защитен] ~] # netstat -an | grep ‘LISTEN’
tcp 0 0 127.0.0.1:25 0.0.0.0:* СПИСЪК
tcp 0 0 0.0.0.0:111 0.0.0.0:* СПИСЪК
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
tcp6 0 0 ::: 111 ::: * СПИСЪК
tcp6 0 0 ::: 80 ::: * СПИСЪК
tcp6 0 0 ::: 22 ::: * СПИСЪК
[[Имейл защитен] ~] #

Или можете да използвате аргумент -l, за да покажете всички слушалки.

[[Имейл защитен] ~] # netstat -l
Активни интернет връзки (само сървъри)
Proto Recv-Q Изпращане-Q Местен адрес Държава за чужд адрес
tcp 0 0 localhost: smtp 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:sunrpc 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:ssh 0.0.0.0:* LISTEN
tcp6 0 0 [::]: sunrpc [::]: * СПИСЪК
tcp6 0 0 [::]: webcache [::]: * LISTEN
tcp6 0 0 [::]: ssh [::]: * СПИСЪК
udp 0 0 0.0.0.0:805 0.0.0.0:*
udp 0 0 0.0.0.0:sunrpc 0.0.0.0:*
udp 0 0 localhost: 323 0.0.0.0:*
udp6 0 0 [::]: 805 [::]: *
udp6 0 0 [::]: sunrpc [::]: *
udp6 0 0 ip6-localhost: 323 [::]: *
Активни цокли на UNIX домейн (само сървъри)
Proto RefCnt Flags Тип състояние I-Node Path
unix 2 [ACC] СТРЕМЕННА СПИСЪК 15108 / run / dbus / system_bus_socket
unix 2 [ACC] СТРЕМЕНСКИ СПИСЪК 8202 / run / systemd / journal / stdout
unix 2 [ACC] SEQPACKET LISTENING 12813 / run / udev / control
unix 2 [ACC] СТРЕМЕННА СПИСЪК 17542 обществена / пикап
unix 2 [ACC] СТРЕМЕННА СПИСЪК 15165 /var/run/rpcbind.sock
unix 2 [ACC] СТРЕМЕННА СПИСЪК 17546 public / почистване
unix 2 [ACC] СТРЕМЕННА СПИСЪК 15605 /var/lib/gssproxy/default.sock
unix 2 [ACC] СТРИМЕН СЛУЖБА 12706 / run / systemd / private
unix 2 [ACC] СТРЕМЕННА СПИСЪК 17549 public / qmgr
unix 2 [ACC] СТРЕМЕННА СПИСЪК 17571 public / flush
unix 2 [ACC] СТРЕМЕННА СПИСЪК 17553 private / tlsmgr
unix 2 [ACC] СТРЕМЕННА СПИСЪК 17586 public / showq
unix 2 [ACC] СТРИМЕН СЛУЖБА 17556 private / пренапишете
unix 2 [ACC] СТРЕМЕННА СПИСЪК 17559 частни / отскочи
unix 2 [ACC] СТРЕМЕНЕН СПИСЪК 17562 частен / отлагане
unix 2 [ACC] СТРЕМЕННА СПИСЪК 17565 private / trace
unix 2 [ACC] СТРЕМЕНЕН СПИСЪК 17568 частен / провери
unix 2 [ACC] СТРЕМЕННА СПИСЪК 17574 private / proxymap
unix 2 [ACC] СТРЕМЕННА СПИСЪК 17577 private / proxywrite
unix 2 [ACC] СТРЕМЕННА СПИСЪК 17580 private / smtp
unix 2 [ACC] СТРЕМЕННА СПИСЪК 17583 частно / реле
unix 2 [ACC] СТРЕМЕНЕН СПИСЪК 17589 частен / грешка
unix 2 [ACC] СТРЕМЕННА СПИСЪК 17592 частни / повторени
unix 2 [ACC] СТРЕМЕННА СПИСЪК 17595 частни / изхвърлете
unix 2 [ACC] СТРЕМЕННА СПИСЪК 17598 частни / местни
unix 2 [ACC] СТРЕМЕННА СПИСЪК 17601 частни / виртуални
unix 2 [ACC] СТРЕМЕННА СПИСЪК 17604 private / lmtp
unix 2 [ACC] СТРЕМЕННА СПИСЪК 17607 частен / наковалня
unix 2 [ACC] СТРЕМЕННА СПИСЪК 17610 private / scache
unix 2 [ACC] СТРЕМЕННА СПИСЪК 15606 /run/gssproxy.sock
[[Имейл защитен] ~] #

Възползвайте се от греп, за да филтрирате резултатите.

Номер на порта, използван от PID

Знаете, че приложението ви е стартирано и знаете PID (идентификатор на процеса), но не сте сигурни какъв е номерът на порта, който използва. По-долу е пример за PID 3937

[[Имейл защитен] ~] # netstat -anlp | grep 3937
tcp6 0 0 ::: 80 ::: * СПИСЪК 3937 / httpd
unix 3 [] СВЪРЗАН СТРЕМ 2442387 3937 / httpd
[[Имейл защитен] ~] #

Както можете да видите, порт 80 се използва за PID 3937.

Всички статистически протоколи

Имате чести прекъсвания поради изхвърлен пакет? Аргументът -s ще ви покаже обща статистика, където можете да обърнете внимание на изхвърлените пакети съобщения.

[[Имейл защитен] ~] # netstat -s
Ip:
Общо получени 731422 пакета
0 препратени
Изхвърлени 0 входящи пакета
731399 доставени входящи пакети
787732 изпратени заявки
16 отпаднали поради липсващ маршрут
ICMP:
5277 получени ICMP съобщения
120 входящо ICMP съобщение не бе успешно.
InCsumErrors: 6
ICMP входна хистограма:
дестинация недостъпна: 193
изчакване в транзит: 16
искания за ехо: 5060
ехо отговори: 2
9355 ICMP съобщения са изпратени
0 ICMP съобщения не са успешни
ICMP изходна хистограма:
дестинация недостъпна: 4295
ехо отговори: 5060
IcmpMsg:
InType0: 2
InType3: 193
InType8: 5060
InType11: 16
OutType0: 5060
OutType3: 4295
TCP:
42 активни отвора за връзки
35226 отвори за пасивни връзки
1693 неуспешни опита за свързване
Получени нулиране на връзката 645
Установени са 2 връзки
Получени 646705 сегмента
648037 сегменти се изпращат
99463 сегмента са пренастроени
Получени 27377 лоши сегмента.
150893 нулирани изпращания
InCsumErrors: 27377
UDP:
Получени 74547 пакета
Получени 4814 пакета към неизвестен порт.
56 пакета получават грешки
74584 изпратени пакети
0 получават буферни грешки
0 изпраща буферни грешки
InCsumErrors: 56
UdpLite:
TcpExt:
Получени са 177 невалидни SYN бисквитки
1693 нула, получени за ембрионални гнезда SYN_RECV
316 TCP гнезда завършено време изчакване в бърз таймер
3 пакета отхвърля в установени връзки поради отметка на време
70248 изпратени забавени акции
6 забавени акчета допълнително се забавят заради заключен гнездо
Режимът на бърз ак бил активиран 3082 пъти
17 SYNs to LISTEN гнезда отпаднаха
28179 пакета директно се поставят на опашка към recvmsg prequeue.
9802 байта, директно получени в контекста на процеса от предварителна заявка
Прогнозирани са 72106 заглавки на пакети
94182 потвърждения, които не съдържат полезен товар
40094 прогнозирани признания
332 пъти възстановени от загуба на пакети чрез селективни потвърждения
8 прозорци на задръствания се възстановяват без бавен старт от DSACK
1173 прозорци на задръствания се възстановиха без бавен старт след частичен ак
1029 изчаквания след възстановяване на SACK
8 изчаквания в състояние на загуба
329 бързи препредавания
3 препредавания напред
32 препредавания при бавен старт
44785 други изчакване на TCP
TCPLossProbes: 9763
TCPLossProbeRecovery: 1732
54 Препредаването на SACK не бе успешно
3144 DSACK изпратени за стари пакети
4 DSACK изпратени за пакети извън поръчката
Получени 695 DSACK
1 DSACK за получени пакети извън поръчка
44 връзки се нулират поради неочаквани данни
76 връзки се нулират поради ранното затваряне на потребителя
6079 връзки са прекъснати поради изчакване
TCPDSACKIgnoredNoUndo: 448
TCPSpuriousRTOs: 5
TCPSackShiftFallback: 465
IPReversePathFilter: 11
TCPRcvCoalesce: 32369
TCPOFOQue: 4313
TCPOFOMerge: 4
TCPChallengeACK: 2
TCPSynRetrans: 43670
TCPOrigDataSent: 208010
TCPACKSkippedSeq: 12
IpExt:
InNoRoutes: 12
InOctets: 133789295
OutOctets: 151093769
INNoECTPkts: 731338
INECT1Pkts: 3
INECT0Pkts: 1568
INCEPkts: 108
[[Имейл защитен] ~] #

Информация за маршрутизиране на ядрото

Имате проблем с маршрутизацията? или, свързаността не работи както се очаква поради връзката се движи по различен маршрут?

Бързо проверете таблицата за маршрутизиране.

[[Имейл защитен] ~] # netstat -r
Таблица за маршрутизиране на IP ядро
Дестинация Gateway Genmask Flags MSS Window irtt Iface
шлюз по подразбиране 0.0.0.0 UG 0 0 0 eth0
10.16.0.0 0.0.0.0 255.255.0.0 U 0 0 0 et0
68.183.32.0 0.0.0.0 255.255.240.0 U 0 0 0 et0
link-local 0.0.0.0 255.255.0.0 U 0 0 0 eth0
[[Имейл защитен] ~] #

PID, използван от номера на порта

Много удобен за отстраняване на проблеми с пристанищен конфликт. Да кажем, че се опитвате да стартирате Apache или Nginx сървър, който слуша на порт 80, но не може, защото някой друг процес, който вече използва порт 80.

[[Имейл защитен] ~] # netstat -anlp | grep 80 | греп LISTEN
tcp6 0 0 ::: 80 ::: * СПИСЪК 3937 / httpd
[[Имейл защитен] ~] #

И можете да видите, че PID 3937 използва този порт.

Ако използвате AIX, тогава

netstat -Aan | grep $ portnumber

Това ще покаже адреса на блока за управление на протокола в шестнадесетичен

След като имате шестнадесетичен, след това можете да изпълните по-долу, за да получите кой процес държи номер на порт.

rmsock $ address_of_pcb tcpcb

Списък на мрежовите интерфейси

Имате няколко ethernet интерфейса? или не сте сигурни и искате да разберете?

[[Имейл защитен] ~] # netstat -i
Таблица на интерфейса на ядрото
Iface MTU RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg
eth0 1500 793026 0 0 0 849443 0 0 0 BMRU
lo 65536 6 0 0 0 6 0 0 0 LRU
[[Имейл защитен] ~] #

Непрекъснато слушане

Отлична опция, когато услугите за отстраняване на неизправности се сриват с проблеми. Да речем, че приложението се срива на случаен принцип на всеки няколко минути. Но, не съм сигурен кога точно. Можете да използвате -c аргумент, който непрекъснато ще показва резултатите.

[[Имейл защитен] ~] # netstat -anlpc | grep 8080
tcp6 0 0 ::: 8080 ::: * СПИСЪК 11766 / httpd
tcp6 0 0 ::: 8080 ::: * СПИСЪК 11766 / httpd
tcp6 0 0 ::: 8080 ::: * СПИСЪК 11766 / httpd
tcp6 0 0 ::: 8080 ::: * СПИСЪК 11766 / httpd

Когато спре да се актуализира, тогава знаете, че се е сринал.

заключение

netstat е една от широко използваните команди от sysadmin и се надявам горните примери да ви дадат представа какво можете да правите с нея. Ако искате да научите повече за администрацията на Linux, проверете това Удеми курс.

ЕТИКЕТИ:

  • Linux

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me