Устранение проблем с подключением с помощью Test-NetConnection

Перед появлением командлета Test-NetConnection в PowerShell у нас было много различных инструментов командной строки для устранения различных проблем с сетевым подключением.

У нас была команда ping для тестирования эхо-запросов и ответов ICMP; tracert для определения места, где могут быть потеряны наши пакеты; nslookup для выполнения DNS-запросов к нашим DNS-серверам; telnet для проверки открытых TCP-портов и различных других утилит. Для всего была своя утилита.

С появлением PowerShell v4 в Windows 8.1 и Windows Server 2012 R2 этот подход “одна утилита – одна задача” для устранения проблем с подключением устарел.

Позвольте мне представить вам новый, всемогущий командлет Test-NetConnection. Представьте себе PowerShell Test-NetConnection как комбинацию команд ping, tracert, nslookup, telnet и нескольких других утилит, объединенных в один пакет для устранения неполадок.

Устранение неполадок с Test-NetConnection

Давайте посмотрим, что мы можем сделать с командлетом test-netconnection в PowerShell и рассмотрим, как мы можем использовать его, когда у нас несчастное положение устранения проблем с сетевым подключением.

Чтобы продемонстрировать это, я собираюсь использовать PowerShell Test-NetConnection для устранения распространенной проблемы в реальном мире: “Не могу зайти на веб-сайт XYZ!”

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

  • Наличие интернет-соединения.
  • Наличие маршрута к вашему DNS-серверу.
  • Обращение к DNS-серверу для разрешения URL.
  • Наличие маршрута к IP-адресу, к которому разрешается URL.
  • Открытый TCP-порт 80.
  • И так далее, и так далее.

Подтвердите ваше интернет-соединение

Для начала устранения неполадок вам нужно подтвердить, что у вас есть интернет-соединение. Вы можете сделать это, просто запустив PowerShell Test-NetConnection без параметров. Однако, если вы хотите получить больше информации, я предлагаю использовать параметр InformationLevel с аргументом Detailed.

Test-NetConnection -InformationLevel Detailed

Эта простая команда проверяет ваше локальное соединение и интернет-соединение, а также подтверждает, что ваш клиент DNS может разрешать имена, направленные на ваш DNS-сервер, все сразу. Считайте это общей проверкой состояния вашего сетевого соединения. Эта команда проверяет три из пяти процессов, необходимых для отображения веб-сайта одним махом!

Используйте Test-NetConnection для проверки соединения с хостом веб-сайта.

Мы теперь должны направить наше устранение неполадок к веб-хосту вопроса. Давайте в качестве примера используем google.com. Вы также можете использовать удаленный компьютер.

Мы можем использовать Test-NetConnection с параметром ComputerName, чтобы одновременно убедиться, что хост веб-сайта может быть разрешен в DNS, что есть доступ к маршруту TCP для доступа к IP-адресу, к которому разрешается имя, и что он может быть пингован.

Test-NetConnection -ComputerName google.com

Хотя этот шаг технически проверяет, что у нас есть маршрут к веб-серверу google.com, я хочу получить более подробную информацию о том, через какие маршрутизаторы проходят мои пакеты, чтобы добраться до веб-сервера google.com. Для этого я буду использовать параметр TraceRoute, чтобы получить список.

Test-NetConnection -ComputerName google.com -TraceRoute

Убедитесь, что ваш TCP-порт открыт

Нашим последним тестом является проверка того, что TCP-порт, на котором мы ожидаем запуск веб-сервера, открыт. В этом случае, поскольку мы просто указываем google.com, я предполагаю, что это TCP-порт 80. Для этого мы просто добавим еще один параметр к Test-NetConnection. Поскольку Test-NetConnection понимает стандартный TCP-порт для нескольких различных служб, нам даже не нужно знать номер порта. Я могу просто передать HTTP в параметр CommonTCPPort, и он сделает работу за меня.

Test-NetConnection -ComputerName google.com -CommonTCPPort HTTP

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

Test-NetConnection -ComputerName google.com -Port 80

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

Source:
https://adamtheautomator.com/test-netconnection/