поради та поради


13

Так само, як і питання щодо "Корисного командного рядка" (для Windows , Linux та Mac ), я думаю, було б корисно мати "корисні способи використання питань x". Сторінки довідників розповідають про те, які параметри виконуються, але не обов'язково, для чого ви їх використовуєте, що означає результат, які корисні речі виконує команда, які ви ніколи не дізнаєтесь без обширних експериментів, або як отримати відповідь, яку ви дійсно хочете.

Я хотів би дізнатися про netstat . Здавалося б, я маю змогу зрозуміти, які процеси використовують пропускну здатність, і, справді, як швидко система використовує пропускну здатність. Він також виглядає корисним для виявлення небажаних з'єднань (ймовірно, virii), і він надає всіляку інформацію про маршрутизацію (з якою мені довелося грати лише при спробі змусити PDA Sharp Zaurus використовувати TCP / IP через USB.) Іншими словами, це звучить як золота шахта, і я сподівався, що хтось із вас поділиться самородками інформації, яку ви знайшли.

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

Відповіді:


4

Показати локальні порти прослуховування TCP / UDP та процес, до якого вони належать:

sudo netstat -tulpn

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.

Посилання: "Поле refcnt дає поточну кількість активних застосувань маршруту. Протоколи, орієнтовані на з'єднання, зазвичай тримаються на одному маршруті протягом тривалості з'єднання, тоді як протоколи без з'єднання отримують маршрут під час надсилання до того ж пункту призначення." (Сторінка людини)

Використання: "Поле використання забезпечує підрахунок кількості пакетів, надісланих за цим маршрутом."

Нетиф: "Запис інтерфейсу вказує на мережевий інтерфейс, який використовується для маршруту."

На моєму Mac

  • lo0 - інтерфейс зворотного зв'язку.
  • en0 - ethernet.
  • en1 - бездротовий.
  • en2 та en3 використовуються віртуальною машиною.

Термін дії : зі сторінки, призначеної для іншої версії netstat: "Відображається час (у хвилинах), що залишився до закінчення маршруту."



2

У вікнах:

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

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


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

Windows:

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
-не роби


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

1

Я впевнений, що я вигадую колесо, але ось простий скрипт Perl, щоб запустити netstat і сортувати вихід, щоб IP-адреси, які в даний час підключені, виходили зверху. Це найкраще використовувати в програмі "дивитися" для оновлень через 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

З книги скриптів про злі круті оболонки:

Сценарій №90.1 : Кожні 'n' хвилини, захоплюйте значення netstats (через crontab)

Сценарій №90.2 : Проаналізуйте журнал результатів роботи нетстату, визначивши важливі результати та тенденції.

(Люблю цю книгу - варто придбати!)


0

У Solaris багато людей звикли робити "netstat -i 1", щоб отримати кількість запущених пакетів. Linux netstat має непотрібну версію цієї функції, оскільки вона показує кількість необроблених даних, а не дельту. Щоб отримати подібні результати, зробіть "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

На Solaris,

netstat -k

Показує резюме різних статистичних даних. Корисно для перевірки помилок тощо.


0

Оскільки це ще ніхто не згадував:

netstat -s 

надає багато корисних статистичних даних за протоколом під Linux.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.