Ну, что же, продолжим тему командной строки. Теперь разберемся с некоторыми командами для тестирования и настройки локальной сети: 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 <адрес_узла>
-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
/release Освобождение адреса IPv4 для указанного адаптера
/release6 Освобождение адреса IPv6 для указанного адаптера
/renew Обновление адреса IPv4 для указанного адаптера
/renew6 Обновление адреса IPv6 для указанного адаптера
Иногда бывает полезно сбросить IP-адрес и получить новый:
ipconfig /release <имя_адаптера>
ipconfig /renew <имя_адаптера>
Если точное имя вводить лень, можно неизвестные символы заменить звездочкой:
ipconfig /release Подключение* -- что-то, начинающееся с "Подключение"
ipconfig /release *локальн* -- что-то, содержащее "локальн"
Если имя не вводить, сбросятся и обновятся все адаптеры.
/displaydns Отображение содержимого кэша сопоставителя DNS
DNS-кеш содержит в себе IP-адреса посещенных сайтов и ускоряет их загрузку при повторном посещении.
/flushdns Очистка кэша сопоставителя DNS
Если сайт не грузится или глючит из-за того, что неправильно сохранился в кэше, можно попробовать вычистить кэш:
ipconfig /flushdns
ipconfig /displaydns
/registerdns Обновление всех DHCP-аренд и перерегистрация DNS-имен
Данный ключ инициирует обмен данными с DNS-сервером и сервером DHCP для перерегистрации с ними. Иногда бывает полезно при неполадках подключения к провайдеру ввести:
ipconfig /registerdns
Следующие ключи дома вам не понадобятся... У меня вот даже не запускаются :)
/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
-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-адреса:
Примеры использования ключа /FO для выбора оформления:
getmac /FO TABLE
Как-то надо было собрать MAC-адреса нескольких компьютеров, собирала в файлике с помощью команды:
GETMAC /NH >> D:/mac_addresses.txt
Вот такие сетевые команды, друзья эникея...
И, напоследок, список моих статей про CMD:
- Вводная статья цикла: Часть 1. Знакомство
- Предыдущая статья: Часть 2. Batch-file, Планировщик заданий и SchTasks
- В Миниобзоре программ-терминалов первый пункт посвящен отправке и получению данных с COM-порта
- Статья о том, как проверять и активировать лицензию MS Office из CMD