netstat советы и хитрости

13

В том же духе, что и вопросы «Полезная командная строка» (для Windows , Linux и Mac ), я думаю, что было бы удобно иметь «полезные способы использования утилиты x». Страницы руководства говорят вам, что делают параметры, но не обязательно, почему вы будете их использовать, что означает результат, какие полезные действия делает команда, о которых вы никогда не узнаете, если не будете экспериментировать, или как получить ответ, который вам действительно нужен.

Я хотел бы знать о netstat . Может показаться, что я смогу определить, какие процессы используют пропускную способность и, действительно, насколько быстро система использует пропускную способность. Он также выглядит полезным для обнаружения нежелательных подключений (вероятно, virii) и предоставляет все виды информации о маршрутизации (с которой мне приходилось играть только при попытке заставить Sharp Zaurus PDA использовать TCP / IP через USB). Другими словами, он звучит как золотая жила, и я надеялся, что некоторые из вас поделятся частями найденной вами информации.

Пожалуйста, включите версию netstat и вашу ОС в свой ответ. Было бы неплохо увидеть пример выходных данных и узнать, что это значит. Я пометил этот вопрос как вики сообщества, и я надеюсь, что вы сделаете то же самое в своих ответах, чтобы другие люди, зная другую ОС, могли написать почти эквивалентную команду, если они знают, в том же ответе, и тогда мы можем голосовать, какие ответы являются наиболее полезными.

Клинтон Блэкмор
источник

Ответы:

4

Показать локальные прослушивающие порты TCP / UDP и процесс, к которому они принадлежат:

sudo netstat -tulpn
cmcginty
источник
4
Mac, почти эквивалентный, кажется, "sudo lsof -i -n -P | grep LISTEN". (Отключение флагов -n и -P заставит его искать имена хостов и портов).
Клинтон Блэкмор
1
Клинтон - это одна фантастическая команда.
SpacemanSpiff
3

Таблицы маршрутизации Netstat

[Это было проверено на Mac OS X 10.5.7. Я подозреваю, что результат почти одинаков для всех платформ, как было указано, для работы на Solaris.]

netstat -r 

даст вам таблицу маршрутизации.

netstat -nr

то же самое, но даст вам необработанные IP-адреса вместо поиска имен компьютеров. Его вывод выглядит так (только дольше):

Routing tables

Internet:
Destination        Gateway            Flags    Refs      Use  Netif Expire
default            192.168.40.250     UGSc       19        1    en1
127                127.0.0.1          UCS         0        0    lo0
127.0.0.1          127.0.0.1          UH          1     3140    lo0
169.254            link#5             UCS         0        0    en1
169.254.33.92      127.0.0.1          UHS         0        0    lo0
192.168.40         link#5             UCS        11        0    en1
192.168.40.1       0:17:f2:ca:a0:94   UHLW        0        0    en1   1150
...

Internet6:
Destination                             Gateway                         Flags      Netif Expire
::1                                     link#1                          UHL         lo0
fe80::%lo0/64                           fe80::1%lo0                     Uc          lo0
fe80::1%lo0                             link#1                          UHL         lo0
fe80::%en0/64                           link#4                          UC          en0
...
ff02::/32                               link#7                          UC          en2
ff02::/32                               link#8                          UC          en3

Колонки:

Пункт назначения и шлюз. Пункт назначения - это адрес (или диапазон адресов), на который мы можем отправлять информацию. Все данные, отправленные в этот пункт назначения, будут направлены в соответствующий шлюз. Шлюз знает, куда отправлять данные для следующего «перехода» в пути. Если мы хотим отправить данные в пункт назначения, который не имеет записи в таблице маршрутизации, он пройдет через шлюз по умолчанию.

Флаги: на странице man / info перечислены все флаги. Вот что означают настройки моего шлюза по умолчанию:

UGSc
U       - RTF_UP           Route usable
 G      - RTF_GATEWAY      Destination requires forwarding by intermediary
  S     - RTF_STATIC       Manually added
   c    - RTF_PRCLONING    Protocol-specified generate new routes on use

Любопытно, что он утверждает, что был добавлен вручную, так как он пришел через DHCP.

Refs : «Поле refcnt дает текущее число активных использований маршрута. Протоколы, ориентированные на соединение, обычно удерживают один маршрут на время соединения, в то время как протоколы без установления соединения получают маршрут при отправке в тот же пункт назначения». (Man страница)

Use: «Поле use предоставляет счетчик количества пакетов, отправленных по этому маршруту».

Netif: «Запись интерфейса указывает сетевой интерфейс, используемый для маршрута».

На моем Mac

  • lo0 - это петлевой интерфейс.
  • en0 - Ethernet.
  • en1 беспроводной.
  • en2 и en3 используются виртуальной машиной.

Срок действия: из справочной страницы для другой версии netstat: «Отображает время (в минутах), оставшееся до истечения маршрута».

Клинтон Блэкмор
источник
2

В окнах:

c:>netstat -a | find /c "TCP"
68

Показывает количество соединений TCP / IP. Полезно при устранении высоких сетевых систем, работающих под управлением из портов TCP и нужно увеличить MaxUserPorts .

Christopher_G_Lewis
источник
OS X 10.5.7 эквивалент: netstat -a | grep -c tcp
Клинтон Блэкмор
2

Скорость передачи / приема

На Mac [OS X 10.5.7]:

netstat -i -w 10

[См . Ответ Чака для заметок об использовании в Solaris и Linux.]

Вывод выглядит так:

            input        (Total)           output
   packets  errs      bytes    packets  errs      bytes colls
       794     0    1166796        763     0      50358     0
       789     0    1167773        765     0      52542     0
       792     0    1166548        765     0      51174     0
       796     0    1167262        598     0      40152     0
       929     0    1278561        846     0      65625     0
       563     0     815570        530     0      36828     0
        32     0       4360          1     0        774     0
         9     0        705          0     0        684     0
         9     0        631          0     0          0     0

Это показывает, сколько пакетов и байтов было передано в данный интервал времени. (10 секунд в этом примере). Я был подключен к YouTube и загружал более 1 МБ каждый интервал, пока не закрыл вкладку браузера и скорость не достигла дна.

Это может оказаться полезным, если вы ожидаете окончания загрузки или загрузки. Контролируйте скорость, и когда она резко падает, вы знаете, что это сделано.

Обратите внимание, что команда выше показывает всю пропускную способность на всех интерфейсах. Чтобы привязать его к определенному интерфейсу (в данном примере WiFi), используйте -Iфлаг следующим образом:

netstat -I en1 -w 10
Клинтон Блэкмор
источник
1

Окна:

Netstat -n
(Show active TCP connections, don't slow down trying to do name resolution)

Proto  Local Address          Foreign Address        State
TCP    192.168.1.38:4853    69.59.196.212:80       ESTABLISHED

Показывает активные соединения TCP, но без активности UDP.

Netstat -an
  (Show all connections, don't slow down trying to do name resolution)

Proto  Local Address          Foreign Address        State
TCP    0.0.0.0:80             0.0.0.0:0              LISTENING
TCP    192.168.1.38:4853    69.59.196.212:80       ESTABLISHED

Показывает все активные соединения TCP, а также прослушивает соединения TCP и UDP. Здесь не отображается исходящая активность UDP.

Майк
источник
Я сейчас добавлю комментарий, но когда у меня будет достаточно представителей, я отредактирую ответ. netstat в Mac OS X 10.5.7 эквивалентно - добавьте -p tcp, чтобы он ограничивался протоколом tcp. то есть. netstat -p tcp -nилиnetstat -p tcp -an
Клинтон Блэкмор
Еще одна полезная пара параметров в Windows: -o (показать PID владельца каждого сокета) и -b (показать имя процесса каждого сокета). Особенно удобно при исследовании машин, которые вы подозреваете, были скомпрометированы.
Мурали Суриар
netstat -nt делает то же самое (только для
чисел
1

Windows

netstat -b

Показать процесс с использованием соединения

user640
источник
1

Windows 7 (возможно, так как ранее, хотя):

netstat -ano

список активных сессий с соответствующими PID

Active Connections

  Proto  Local Address          Foreign Address        State           PID
  TCP    0.0.0.0:135            0.0.0.0:0              LISTENING       776
  TCP    0.0.0.0:445            0.0.0.0:0              LISTENING       4
  TCP    0.0.0.0:554            0.0.0.0:0              LISTENING       1724

или сохранить шаг

netstat -anb

(из повышенного приглашения CMD) дает имя процесса

Active Connections

  Proto  Local Address          Foreign Address        State
  TCP    0.0.0.0:135            0.0.0.0:0              LISTENING
  RpcSs
 [svchost.exe]
  TCP    0.0.0.0:445            0.0.0.0:0              LISTENING
 Can not obtain ownership information
  TCP    0.0.0.0:554            0.0.0.0:0              LISTENING
 [wmpnetwk.exe]
  TCP    0.0.0.0:2048           0.0.0.0:0              LISTENING
TristanK
источник
1

Я уверен, что заново изобретаю колесо, но вот простой Perl-скрипт для запуска netstat и сортировки выходных данных, так что IP-адреса, в основном подключенные в данный момент, выходят на первое место. Это лучше всего использовать с программой 'watch' для обновления с 2-секундными интервалами.

Обновление: значительная перезапись 2013-02-11, чтобы избавиться от многих проблем и отобразить имена хостов

Пример вывода:

Distant inbound connections: 2
   85.93.216.17:772               <-- 78.141.139.10       :    1        ip-78-141-139-10.dyn.luxdsl.pt.lu     1 x ESTABLISHED
   80.90.47.155:443               <-- 78.141.139.10       :    1        ip-78-141-139-10.dyn.luxdsl.pt.lu     1 x ESTABLISHED
Distant outbound connections: 3
   80.90.63.61                    --> 80.90.63.48:25      :    2        smtp.m-plify.net                      2 x TIME_WAIT
   85.93.216.17                   --> 85.93.216.18:772    :    1        maya.m-plify.net                      1 x ESTABLISHED
Looping connections: 57 (10 duplicates)
   127.0.0.1                      --> 127.0.0.1:9355      :   20                                              1 x ESTABLISHED, 8 x TIME_WAIT, 11 x CLOSE_WAIT
   127.0.0.1                      --> 127.0.0.1:4713      :   10                                             10 x CLOSE_WAIT
   127.0.0.1                      --> 127.0.0.1:9353      :    9                                              4 x TIME_WAIT, 5 x CLOSE_WAIT
   127.0.0.1                      --> 127.0.0.1:3306      :    8                                              6 x ESTABLISHED, 1 x TIME_WAIT, 1 x CLOSE_WAIT
   127.0.0.1                      --> 127.0.0.1:5445      :    5                                              1 x ESTABLISHED, 4 x TIME_WAIT
   127.0.0.1                      --> 127.0.0.1:9354      :    2                                              2 x CLOSE_WAIT
   127.0.0.1                      --> 127.0.0.1:7998      :    1                                              1 x TIME_WAIT
   127.0.0.1                      --> 127.0.0.1:3351      :    1                                              1 x ESTABLISHED
   127.0.0.1                      --> 127.0.0.1:32000     :    1                                              1 x ESTABLISHED
оборота Дэвид Тонхофер
источник
0

Из книги Wicked Cool Shell Scripts:

Скрипт № 90.1 : Каждые 'n' минуты, получать значения netstats (через crontab)

Сценарий # 90,2 : Анализ NETSTAT работает журнал производительности, выявляя важные результаты и тенденции.

(Люблю эту книгу - стоит купить!)

gharper
источник
0

В Solaris многие люди привыкли делать «netstat -i 1» для получения количества запущенных пакетов. Netstat для Linux имеет бесполезную версию этой функции, так как она показывает необработанный счетчик, а не дельту. Чтобы получить аналогичные результаты, выполните "sar -n DEV 1 0". Рассмотрим фактически «LANG = C sar -n DEV 1 0 | grep interfacename» (sar устанавливает время с AM и PM в начале строки в определенных локалях, поэтому лучше всего привыкнуть всегда запускать «LANG = C sar "на случай, если вы когда-нибудь разберетесь).

Карлито
источник
Пример вывода и использования Mac см. На serverfault.com/questions/11289/netstat-tips-and-tricks/… .
Клинтон Блэкмор
0

На Солярисе,

netstat -k

Показывает сводку различной статистики. Полезно для проверки ошибок и т. Д.

Джодер Хо
источник
0

Так как никто еще не упомянул это:

netstat -s 

предоставляет массу полезной статистики по протоколу под Linux.

dmourati
источник