Руководство по использованию инструментов диагностики сети

Обзор

В этой статье систематически рассмотрены стандартные команды и инструменты PowerShell для диагностики сетевых проблем в среде Windows Server. Рассматриваются проверки ICMP, анализ TCP-портов, разрешение DNS и сбор логов.

Обозначения переменных

В статье используются переменные, зависящие от среды. Замените их в соответствии с вашей конфигурацией.

Переменная Пример Описание
<<TARGET_HOST>> 192.168.10.1 Имя хоста или IP-адрес назначения
<<PORT_NUMBER>> 443 TCP-порт, используемый приложением
<<LOG_PATH>> C:\Logs\netdiag.txt Путь для сохранения логов

Шаг 1: Проверка ICMP-соединения (ping)

Проверяет доступность узла на сетевом уровне.

ping <<TARGET_HOST>>

Если нет ответа, проверьте:

  • Не блокирует ли Windows Defender Firewall ICMP
  • Работает ли целевой хост
  • Корректна ли таблица маршрутизации (route print)

Примечание: Если ICMP-ответы отключены, используйте проверку TCP-соединения.


Шаг 2: Проверка маршрута (tracert)

Определяет, на каком участке маршрута прерывается соединение.

tracert <<TARGET_HOST>>

Шаг 3: Проверка TCP-порта (Test-NetConnection)

Проверяет, возможно ли установить соединение на уровне приложений.

Test-NetConnection -ComputerName <<TARGET_HOST>> -Port <<PORT_NUMBER>>

Основные поля вывода:

Поле Описание
TcpTestSucceeded Указывает, успешно ли установлено TCP-соединение
PingSucceeded Отражает результат ICMP-проверки
RemoteAddress Разрешённый IP-адрес назначения
SourceAddress Используемый IP-адрес источника

Совет: При проблемах с DNS используйте IP-адрес напрямую.


Шаг 4: Проверка TCP-сессий (netstat / Get-NetTCPConnection)

Позволяет просмотреть активные TCP-соединения и порты, ожидающие подключения.

С помощью netstat

netstat -ano | findstr "<<PORT_NUMBER>>"

Параметры:

  • -a: показывает все соединения и порты ожидания
  • -n: отображает адреса и порты в числовом виде
  • -o: показывает идентификатор процесса

Определение соответствующего процесса:

tasklist /FI "PID eq <<PID_NUMBER>>"

С помощью PowerShell

Get-NetTCPConnection -State Established |
  Select-Object LocalAddress, LocalPort, RemoteAddress, RemotePort, State, OwningProcess
Get-NetTCPConnection | Where-Object { $_.LocalPort -eq <<PORT_NUMBER>> }

Большое количество соединений в состоянии SYN_SENT или TIME_WAIT может указывать на обрывы или чрезмерное количество попыток подключения.


Шаг 5: Проверка разрешения DNS (nslookup / Resolve-DnsName)

Проверяет корректность разрешения имён.

nslookup <<TARGET_HOST>>

Расширенная проверка с PowerShell:

Resolve-DnsName <<TARGET_HOST>> -Type A

Запрос к определённому DNS-серверу:

Resolve-DnsName <<TARGET_HOST>> -Type A -Server 8.8.8.8

Примечание: В IPv6-сетях используйте параметр -Type AAAA.


Шаг 6: Расширенная диагностика

Включение логирования брандмауэра

Если трафик блокируется, включите логирование для анализа.

Set-NetFirewallProfile -Profile Domain,Public,Private `
  -LogAllowed True -LogBlocked True `
  -LogFileName "C:\Windows\System32\LogFiles\Firewall\pfirewall.log" `
  -LogMaxSizeKilobytes 32767

По умолчанию размер лога ограничен 1 МБ; увеличение лимита упростит анализ.

Проверка ARP-таблицы (проблемы уровня 2)

arp -a

Несоответствия или дубликаты MAC-адресов могут указывать на ошибки кэша коммутатора или виртуального адаптера.


Заключение

Большинство сетевых проблем можно систематически диагностировать в пять шагов:
ICMP → Маршрут → TCP → DNS → Логирование

Используя стандартные инструменты ping, tracert, netstat, а также cmdlet’ы PowerShell Get-NetTCPConnection, Resolve-DnsName и Test-NetConnection, можно эффективно и воспроизводимо устранять неполадки в Windows Server.