Командная строка Windows. Часть 3. Сетевые функции

467 прочитали

Ну, что же, продолжим тему командной строки. Теперь разберемся с некоторыми командами для тестирования и настройки локальной сети: ping, tracert, pathping, ipconfig, netstat, netsh, getmac.

ping

Самая попсовая команда - ее использовали все, кто хоть раз проверял работу интернета или локалки после настройки ПК или роутера.

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

Для ping используется протокол управляющих сообщений ICMP. При запуске команда отправляет сообщение (Echo Request) выбранному узлу и ждет ответ (Echo Reply). В зависимости от результата пишется, сколько пакетов получено и потеряно, сколько времени это заняло и через какие узлы "прыгал" пакет.

Некоторые сайты или устройства могут не отвечать на ваши сообщения, потому что админ их так настроил. Нечего им с незнакомцами разговаривать :)

Синтаксис команды:

ping [-t] [-a] [-n <число>] [-l <размер>] [-f] [-i <TTL>] [-v <TOS>]
[-r <число>] [-s <число>] [[-j <список узлов>] | [-k <список узлов>]]
[-w <тайм-аут>] [-R] [-S <адрес источника>] [-4] [-6] конечный_узел

Рассмотрим часть команд, все можно посмотреть, введя PING /? :

-t Непрерывная отправка пакетов. Для отображения статистики и продолжения проверки нажимаем CTRL+BREAK, для прекращения отправки CTRL+C
-a Определение имен узлов по адресам
-n <число> Число отправляемых запросов
-r <число 1-9> Запись маршрута для указанного числа прыжков (только IPv4)

Пример. Показать маршрут до узла и имена узлов, отправив один пакет:
ping -n 1 -r 9 -a xxx.xxx.xxx.xxx

Допустим, знаем конечный адрес, хотим узнать имя узла и через кого мы к нему подключаемся
Допустим, знаем конечный адрес, хотим узнать имя узла и через кого мы к нему подключаемся

Можно поиграться с размером пакета и таймаутами:

-l <размер 0-65500> Размер буфера отправки в байтах
-i <TTL> Задание срока жизни пакетов
-w <число> Тайм-аут для каждого ответа (в мс)

Пример. Отправить пакет объемом 1000 байт с максимальным TTL = 100 и таймаутом 100 мс:

ping -l 1000 -i 200 -w 100 [адрес_узла]

Более "толстые" пакеты не успевают проходить за заданное время
Более "толстые" пакеты не успевают проходить за заданное время

И еще парочка ключей для выбора протокола:

-4 Принудительное использование протокола IPv4
-6 Принудительное использование протокола IPv6

Пример обращения к соседу по локалке по разным протоколам
Пример обращения к соседу по локалке по разным протоколам

tracert

Если путь до узла длиннее 9 прыжков, ping не поможет его познать... Тут поможет tracert:

tracert [-d] [-h макс_число] [-j список_узлов] [-w таймаут] [-R]
[-S адрес_источника] [-4] [-6] конечный_узел

Ключи примерно такие же, как в ping:

-d Без разрешения в имена узлов
-h макс_число Максимальное число прыжков при поиске узла
-j список_узлов Свободный выбор маршрута по списку узлов (только IPv4)
-w таймаут Таймаут каждого ответа в миллисекундах
-R Трассировка пути (только IPv6)
-S адрес_источника Используемый адрес источника (только IPv6)
-4 Принудительное использование IPv4
-6 Принудительное использование IPv6

Пример длиинного пути до сайта
Пример длиинного пути до сайта

pathping

I have a ping, i have an tracert. Oh! pathping!

Сия утилита объединяет в себе функционал описанных выше команд и позволяет оценивать качество сети.

pathping [-g <список_узлов>] [-h <число_прыжков>] [-i <адрес>] [-n]
[-p <пауза>] [-q <число_запросов>] [-w <таймаут>] [-4] [-6] <конечный_узел>

Ключи:

-g <список_узлов> Свободный выбор маршрута по списку узлов
-h <число_прыжков> Максимальное число прыжков при поиске узла

Пример. Посмотрим статистику для первых двух узлов

pathping -h 2 <адрес_узла>

Ну, что же, продолжим тему командной строки. Теперь разберемся с некоторыми командами для тестирования и настройки локальной сети: ping, tracert, pathping, ipconfig, netstat, netsh, getmac.-5

-i <адрес> Использовать указанный адрес источника
-n Не определять имена узлов по адресам
-p <пауза> Пауза между отправками пакетов (мсек)
-q <число_запросов> Число запросов при каждом прыжке

Пример. Пусть запросов будет 10, а не 100, пауза 1 мс, имена узлов нас не интересуют:

pathping -p 10 -q 10 -n <адрес_узла>

Стало быстрее проходить, без ограничений очень долго считало :)
Стало быстрее проходить, без ограничений очень долго считало :)

-w <таймаут> Время ожидания каждого ответа (мсек)
-4 Обязательное использование протокола IPv4
-6 Обязательное использование протокола IPv6

ipconfig

Данная команда позволяет просматривать и изменять настройки сетевых интерфейсов.

ipconfig [/allcompartments] [/? | /all |
/renew [адаптер] | /release [адаптер] |
/renew6 [адаптер] | /release6 [адаптер] |
/flushdns | /displaydns | /registerdns |
/showclassid адаптер | /setclassid адаптер [идентификатор_класса] ]
/showclassid6 адаптер | /setclassid6 адаптер [идентификатор_класса] ]

Ключи:

/all Вывод подробных сведений о конфигурации

Ну, что ж, введем ipconfig /all

Ну, что же, продолжим тему командной строки. Теперь разберемся с некоторыми командами для тестирования и настройки локальной сети: ping, tracert, pathping, ipconfig, netstat, netsh, getmac.-7

/release Освобождение адреса IPv4 для указанного адаптера
/release6 Освобождение адреса IPv6 для указанного адаптера
/renew Обновление адреса IPv4 для указанного адаптера
/renew6 Обновление адреса IPv6 для указанного адаптера

Иногда бывает полезно сбросить IP-адрес и получить новый:

ipconfig /release <имя_адаптера>
ipconfig /renew <имя_адаптера>

Если точное имя вводить лень, можно неизвестные символы заменить звездочкой:

ipconfig /release Подключение* -- что-то, начинающееся с "Подключение"
ipconfig /release *локальн* -- что-то, содержащее "локальн"

Если имя не вводить, сбросятся и обновятся все адаптеры.

Пример использования
Пример использования

/displaydns Отображение содержимого кэша сопоставителя DNS

Последняя запись моего DNS-кэша :)
Последняя запись моего DNS-кэша :)

DNS-кеш содержит в себе IP-адреса посещенных сайтов и ускоряет их загрузку при повторном посещении.

/flushdns Очистка кэша сопоставителя DNS

Если сайт не грузится или глючит из-за того, что неправильно сохранился в кэше, можно попробовать вычистить кэш:

ipconfig /flushdns
ipconfig /displaydns

После очистки остались только "системные" кэши
После очистки остались только "системные" кэши

/registerdns Обновление всех DHCP-аренд и перерегистрация DNS-имен

Данный ключ инициирует обмен данными с DNS-сервером и сервером DHCP для перерегистрации с ними. Иногда бывает полезно при неполадках подключения к провайдеру ввести:

ipconfig /registerdns

Ну, что же, продолжим тему командной строки. Теперь разберемся с некоторыми командами для тестирования и настройки локальной сети: ping, tracert, pathping, ipconfig, netstat, netsh, getmac.-11

Следующие ключи дома вам не понадобятся... У меня вот даже не запускаются :)

/showclassid Отображение всех допустимых для этого адаптера идентификаторов классов DHCP
/setclassid Изменение идентификатора класса DHCP
/showclassid6 Отображение всех допустимых для этого адаптера идентификаторов классов DHCP IPv6
/setclassid6 Изменение идентификатора класса DHCP IPv6

netstat

Иногда бывает надо посмотреть текущие сетевые подключения.

NETSTAT [-a] [-b] [-e] [-f] [-n] [-o] [-p протокол] [-r] [-s] [-t] [интервал]

Некоторые ключи (все можно посмотреть, набрав NETSTAT /?):

-a Отобразить все подключения и ожидающие порты
-b Отобразить исполняемые файлы, участвующие в создании каждого подключения, или ожидающего порта
-f Отобразить полное имя домена (FQDN) для внешних адресов
-p <протокол> Отобразить подключения для протокола, задаваемые этим параметром. Допустимые значения: TCP, UDP, TCPv6 или UDPv6

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

netstat -b -f -p TCP

Картинка ужата, информация зачастую "повторяется" несколько раз
Картинка ужата, информация зачастую "повторяется" несколько раз

-n Отобразить адреса и номера портов в числовом формате
-o Отобразить код (ID) процесса каждого подключения

Пример. Отобразить порты и PID подключения:

netstat -n -o

Ну, что же, продолжим тему командной строки. Теперь разберемся с некоторыми командами для тестирования и настройки локальной сети: ping, tracert, pathping, ipconfig, netstat, netsh, getmac.-13

-r Отобразить таблицу маршрутов

В домашней сети пользы мало :)
В домашней сети пользы мало :)

-e Отобразить статистику Ethernet. Может применяться вместе с параметром -s
-s Отобразить статистику протоколов IP, IPv6, ICMP, ICMPv6, TCP, TCPv6, UDP и UDPv6. Параметр -p позволяет указать подмножество выводимых данных

Начало отчета
Начало отчета

[интервал] Повторный вывод статистических данных через указанный интервал в секундах. Для прекращения вывода данных нажмите клавиши CTRL+C. Если параметр не задан, сведения о текущей конфигурации выводятся один раз

netsh

Программа netsh (от net shell, сетевая оболочка) позволяет настраивать сетевые параметры. Настраивать можно всё: от беспроводной сети до файрвола.

Список команд
Список команд

Рассмотрю наиболее часто используемые команды:

Включение статического IP-адреса

netsh interface ip set address <имя> static <IP> <маска сети>

Включение DHCP (динамического IP-адреса)

netsh interface ip set address <имя> dhcp

Изменение и добавление DNS-сервера

netsh interface ip set dns <имя> static <адрес DNS>
netsh interface ip add dns <имя> static <адрес DNS> [index = <номер>]

~ Лирическое отступление ~

Помню, для работы одного ПО нужно было сделать компьютер-"маму": на нем стояло ПО для лицензирования, а компьютеры-"дети" получали ключи от него и могли пользоваться лицензией. Обращались они по статическому адресу, а сеть уже была настроена на динамические адреса...

В качестве временного решения на компутере-базе режим статика-динамика включался вручную запуском батников со следующим содержанием:

netsh interface ip set address "Ethernet 2" static 192.168.0.1 255.255.255.0
netsh interface ip set address "Ethernet 2" dhcp

Потом настроила маршрутизатор так, чтобы закреплял за конкретным MAC-адресом конкретный же IP-адрес, и необходимость во включении статического режима пропала. Но это уже совсем другая история :)

~ Конец лирического отступления ~

Еще одна популярная команда winsock reset позволяет сбросить Windows Sockets API, который определяет, как приложение Windows будет общаться с сетью.

Бывает, что после неудачного обновления, криво вставших дров, нападения вируса и т.п. интернет перестает работать или глючит. Иногда можно "отремонтировать" его работу путем сброса Winsock. Вводим:

netsh winsock reset

Если все пройдет успешно, по подсказке CMD перезагружаем компьютер и радуемся жизни. С некоторой вероятностью проблемы разрешатся.

getmac

Нужно узнать MAC-адрес компутера? Не проблема, вводим команду:

GETMAC [/FO <формат>] [/NH] [/V]

Параметры:

/FO <формат> Формат, в котором следует отображать результаты запроса (TABLE, LIST, CSV)
/NH Указывает, что строка заголовков столбцов не должна отображаться в результирующем файле форматов TABLE и CSV
/V Отображение подробной информации

Примеры использования - простой и более подробный запрос запрос MAC-адреса:

Ну, что же, продолжим тему командной строки. Теперь разберемся с некоторыми командами для тестирования и настройки локальной сети: ping, tracert, pathping, ipconfig, netstat, netsh, getmac.-17

Примеры использования ключа /FO для выбора оформления:

getmac /FO TABLE

Ну, что же, продолжим тему командной строки. Теперь разберемся с некоторыми командами для тестирования и настройки локальной сети: ping, tracert, pathping, ipconfig, netstat, netsh, getmac.-18

Как-то надо было собрать MAC-адреса нескольких компьютеров, собирала в файлике с помощью команды:

GETMAC /NH >> D:/mac_addresses.txt

Ну, что же, продолжим тему командной строки. Теперь разберемся с некоторыми командами для тестирования и настройки локальной сети: ping, tracert, pathping, ipconfig, netstat, netsh, getmac.-19

Вот такие сетевые команды, друзья эникея...

И, напоследок, список моих статей про CMD: