- Обзор
- Обозначения переменных
- Шаг 1: Проверка ICMP-соединения (ping)
- Шаг 2: Проверка маршрута (tracert)
- Шаг 3: Проверка TCP-порта (Test-NetConnection)
- Шаг 4: Проверка TCP-сессий (netstat / Get-NetTCPConnection)
- Шаг 5: Проверка разрешения DNS (nslookup / Resolve-DnsName)
- Шаг 6: Расширенная диагностика
- Заключение
Обзор
В этой статье систематически рассмотрены стандартные команды и инструменты 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.
