Использование команды netstat в Linux

Узнайте, что такое команда netstat, и некоторые примеры в реальном времени..


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

Он доступен в операционных системах Linux, Unix-like и Windows. Netstat является мощным средством и может быть удобным инструментом для устранения проблем, связанных с сетью, и проверки статистики подключений..

Если вы введете netstat -help, вы получите следующие рекомендации по использованию.

[[Электронная почта защищена] ~] # netstat -help
использование: netstat [-vWeenNcCF] [] -r netstat {-V | –version | -h | –help}
netstat [-vWnNcaeol] […]
netstat {[-vWeenNac] -I [] | [-veenNac] -i | [-cnNe] -M | -s [-6tuw]} [задержка]

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

-v, – verbose быть многословным
-W, – в целом не обрезать IP-адреса
-n, –numeric не разрешать имена
–числовые хосты не разрешают имена хостов
–числовые порты не разрешают имена портов
–числовые пользователи не разрешают имена пользователей
-N, –символическое разрешение имен оборудования
-e, –extend показать другую / дополнительную информацию
-p, –программы отображают PID / имя программы для сокетов
-o, – Таймеры отображения таймеров
-c, – непрерывный непрерывный листинг

-l, – прослушивание сокетов сервера
-a, –all показать все сокеты (по умолчанию: подключено)
-F, –fib отображать базу данных пересылки (по умолчанию)
-C, –cache отображать кеш маршрутизации вместо FIB
-Z, –context отображает контекст безопасности SELinux для сокетов

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

Позвольте мне показать вам некоторые примеры команды. Следующие тестируются на RHEL / CentOS, но я не вижу причин не работать на другом дистрибутиве, таком как Ubuntu.

Установленное соединение

Если вы ищете все установленные соединения с сервера.

[[Электронная почта защищена] ~] # netstat -natu | grep ‘ESTABLISHED’
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:49859 УСТАНОВЛЕНО
tcp 0 0 68.183.37.102:22 61.177.142.158:55481 УСТАНОВЛЕНО
[[Электронная почта защищена] ~] #

Если вы установили много подключений и заинтересованы в поиске одного из IP-адресов, вы можете использовать другой grep.

[[Электронная почта защищена] ~] # netstat -natu | grep ‘ESTABLISHED’ | grep 61.177.142.158
tcp 0 1280 68.183.37.102:22 61.177.142.158:33932 УСТАНОВЛЕНО
[[Электронная почта защищена] ~] #

Прослушивание соединения

Допустим, вы запустили какой-то сервис, который должен прослушивать определенный IP: порт, это было бы удобно проверить.

[[Электронная почта защищена] ~] # netstat -an | grep ‘СЛУШАТЬ’
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN
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 Send-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 [::]: * СЛУШАТЬ
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 Тип State Путь I-узла
unix 2 [ACC] LISTENING STREAM 15108 / run / dbus / system_bus_socket
unix 2 [ACC] LISTENING STREAM 8202 / run / systemd / journal / stdout
unix 2 [ACC] SEQPACKET LISTENING 12813 / run / udev / control
unix 2 [ACC] LISTENING STREAM 17542 public / pickup
unix 2 [ACC] LISTINING STREAM 15165 /var/run/rpcbind.sock
unix 2 [ACC] LISTENING STREAM 17546 public / cleanup
unix 2 [ACC] LISTENING 15605 /var/lib/gssproxy/default.sock
unix 2 [ACC] LISTENING STREAM 12706 / run / systemd / private
unix 2 [ACC] LISTENING STREAM 17549 public / qmgr
unix 2 [ACC] LISTENING STREAM 17571 public / flush
unix 2 [ACC] СЛУЧАЙ ПОТОКА 17553 private / tlsmgr
unix 2 [ACC] LISTENING STREAM 17586 public / showq
unix 2 [ACC] LISTENING STREAM 17556 private / rewrite
unix 2 [ACC] LISTENING STREAM 17559 приват / отказов
unix 2 [ACC] LISTENING STREAM 17562 личное / отложенное
unix 2 [ACC] LISTENING STREAM 17565 private / trace
unix 2 [ACC] LISTENING STREAM 17568 частный / проверить
unix 2 [ACC] LISTENING STREAM 17574 private / proxymap
unix 2 [ACC] LISTENING STREAM 17577 private / proxywrite
unix 2 [ACC] LISTENING STREAM 17580 private / smtp
unix 2 [ACC] LISTENING STREAM 17583 частное / реле
unix 2 [ACC] LISTENING STREAM 17589 private / error
unix 2 [ACC] LISTENING STREAM 17592 частный / повтор
unix 2 [ACC] LISTENING STREAM 17595 приват / сброс
unix 2 [ACC] LISTENING STREAM 17598 частный / местный
unix 2 [ACC] LISTENING STREAM 17601 частный / виртуальный
unix 2 [ACC] LISTENING STREAM 17604 частный / lmtp
unix 2 [ACC] LISTENING STREAM 17607 личное / наковальня
unix 2 [ACC] LISTENING STREAM 17610 private / scache
unix 2 [ACC] LISTENING СТРИМ 15606 /run/gssproxy.sock
[[Электронная почта защищена] ~] #

Воспользуйтесь grep для фильтрации результатов.

Номер порта, используемый 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 упал из-за отсутствия маршрута
ИКМП:
Получено 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 задержанных подтверждений еще более отложены из-за заблокированного сокета
Режим Quick Ack был активирован 3082 раза
17 SYNs, чтобы LISTEN сокеты упали
28179 пакетов, поставленных в очередь на предварительную очередь recvmsg.
9802 байта, непосредственно полученные в контексте процесса из предварительной очереди
Предсказано 72106 заголовков пакетов
94182 подтверждений, не содержащих данных, полученных
40094 предсказанных подтверждений
332 раза восстановлено после потери пакета с помощью выборочных подтверждений
Восемь окон перегрузки восстановлены без медленного запуска DSACK
1173 окна перегрузки восстановлены без медленного запуска после частичного подтверждения
1029 таймаутов после восстановления SACK
8 таймаутов в состоянии потери
329 быстрых повторных передач
3 переадресации вперед
32 ретрансляции в медленном старте
44785 других таймаутов TCP
TCPLossProbes: 9763
TCPLossProbeRecovery: 1732
54 SACK повторной передачи не удалось
3144 DSACK отправлено для старых пакетов
4 DSACK отправлено для пакетов, вышедших из строя
Получено 695 DSACK
1 DSACKs для пакетов, вышедших из строя
44 соединения сброшены из-за непредвиденных данных
Сброс 76 соединений из-за раннего закрытия пользователя
6079 соединений прервано из-за тайм-аута
TCPDSACKIgnoredNoUndo: 448
TCPSpuriousRTO: 5
TCPSackShiftFallback: 465
IPReversePathFilter: 11
TCPRcvCoalesce: 32369
TCPOFOQueue: 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 ядра
Шлюз назначения Genmask Flags Окно MSS 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 eth0
68.183.32.0 0.0.0.0 255.255.240.0 U 0 0 0 eth0
link-local 0.0.0.0 255.255.0.0 U 0 0 0 eth0
[[Электронная почта защищена] ~] #

PID, используемый номером порта

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

[[Электронная почта защищена] ~] # netstat -anlp | grep 80 | grep 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, проверьте это Курс удэми.

TAGS:

  • Linux

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me
    Like this post? Please share to your friends:
    Adblock
    detector
    map