Поделиться через


Настройка отладки сетевого ядра KDNET вручную

В этой статье показано, как настроить отладку сетевого ядра KDNET вручную с помощью средств отладки для Windows. Вы настраиваете как хост, так и целевые компьютеры, чтобы включить сетевое отладку.

Важный

Настройка отладки сети вручную является сложной и подверженной ошибкам. Для большинства сценариев используйте автоматическую настройку вместо этого:настройка отладки сетевого ядра KDNET автоматически. Программа KDNET настоятельно рекомендуется.

Что вы узнаете:

  • Настройка узлов и целевых компьютеров для отладки сети
  • Как установить и устранить неполадки при отладке подключений
  • Использование IPv6 и IPv4 для отладки

Компьютер, на котором запущен отладчик, называется хост-компьютером, а отлаживаемый компьютер называется целевым компьютером. Главный компьютер должен запускать Windows 7 или более поздней версии, а целевой компьютер должен запускать Windows 8 или более поздней версии.

Отладка по сети имеет следующие преимущества по сравнению с отладкой по другим типам подключения.

  • Хост и целевые компьютеры могут находиться в любом месте локальной сети.
  • Легко выполнить отладку нескольких целевых компьютеров с одного хост-компьютера.
  • Даны любые два компьютера, и, скорее всего, у них обоих есть адаптеры Ethernet. Маловероятно, что у них обоих есть последовательные порты или порты 1394.
  • Отладка сети выполняется быстрее, чем отладка последовательного порта.

Поддерживаемые сетевые адаптеры

Главная ЭВМ: Любой сетевой адаптер работает.

Целевой компьютер: Должен использовать поддерживаемый сетевой адаптер. Проверьте версию Windows:

Установка средств отладки для Windows

Убедитесь, что средства отладки для Windows установлены в системе узла. Сведения о скачивании и установке средств отладчика см. в разделе Средства отладки для Windows.

Определение IP-адреса хост-компьютера

Используйте одну из следующих процедур, чтобы определить IP-адрес хост-компьютера.

  1. На хост-компьютере откройте командную строку и введите следующую команду:

    ipconfig
    

    Запишите IPv4-адрес сетевого адаптера, который планируется использовать для отладки.

  2. На целевом компьютере откройте командную строку и введите следующую команду, где YourIPAddress является IP-адресом хост-компьютера:

    ping -4 <YourIPAddress>
    

Выбор порта для отладки сети

Рекомендуемый диапазон портов: 50000–50039

Вы можете использовать любой порт от 49152-65535, но рекомендуемый диапазон обеспечивает оптимальную совместимость. Отладчик использует этот порт исключительно, поэтому убедитесь, что другие приложения его не используют.

Важные замечания

  • Корпоративные брандмауэры могут ограничивать диапазоны портов. Обратитесь к администратору сети.
  • Каждому целевому компьютеру нужен уникальный порт (например, 50000, 50001, 50002).
  • Разные хост-компьютеры могут повторно использовать один и тот же диапазон портов.

Заметка

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

При подключении нескольких целевых компьютеров к одному узлу каждое подключение должно иметь уникальный номер порта. Например, при подключении 100 целевых компьютеров к одному узлу можно назначить порт 50000 для первого подключения, порт 50001 второму подключению и т. д.

Заметка

Другой главный компьютер может использовать тот же диапазон портов (50000 до 50099) для подключения к другим 100 целевым компьютерам.

Настройка целевого компьютера

  1. Убедитесь, что на целевом компьютере есть поддерживаемый сетевой адаптер. Дополнительные сведения см. в следующем разделе:

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

Важный

Прежде чем использовать BCDEdit для изменения сведений о загрузке, может потребоваться временно приостановить функции безопасности Windows, такие как BitLocker и безопасная загрузка, на тестовом компьютере. Повторно включите эти функции безопасности при завершении тестирования и соответствующим образом управляйте тестируемым компьютером при отключении функций безопасности.

  1. В командной строке с повышенными привилегиями введите следующие команды. Замените w.x.y.z IP-адресом компьютера узла и n выбранным номером порта:

    bcdedit /debug on
    bcdedit /dbgsettings net hostip:w.x.y.z port:n
    

    Рассмотрим пример.

    bcdedit /debug on
    bcdedit /dbgsettings net hostip:192.168.1.100 port:50000
    
  2. BCDEdit отображает автоматически созданный ключ. Скопируйте ключ и сохраните его на съемных устройствах хранения, таких как USB-флэш-накопитель. При запуске сеанса отладки на главном компьютере требуется ключ.

  3. Используйте диспетчер устройств, чтобы определить номера шины PCI, устройства и функции для адаптера, который вы хотите использовать для отладки. Эти значения отображаются в диспетчере устройств в разделе Расположение на вкладке "Общие ". Затем в командной строке с повышенными привилегиями введите следующую команду, где b, dи f — номер шины, номер устройства и номер функции адаптера:

    bcdedit /set "{dbgsettings}" busparams b.d.f
    
  4. Целевой компьютер перезагружается после подключения отладчика ядра.

Заметка

Если вы планируете установить роль Hyper-V на целевом компьютере, ознакомьтесь с Настройка сетевой отладки узла виртуальной машины.

Caution

Если целевой компьютер находится на док-станции и включите отладку сети для сетевого адаптера, который является частью док-станции, не удаляйте компьютер из док-станции. Если необходимо удалить целевой компьютер из док-станции, отключите отладку ядра. Чтобы отключить отладку ядра на целевом компьютере, откройте командную строку от имени администратора и введите команду bcdedit /debug off. Перезагрузите целевой компьютер.

Запуск сеанса отладки

Перед началом работы: Убедитесь, что сетевой адаптер хост-компьютера подключен к сетевому концентратору или коммутатору.

Вариант 1. Использование WinDbg (GUI)

  1. Откройте WinDbg на хост-компьютере.
  2. Выберите Файл>Отладка ядра.
  3. Откройте вкладку "Net ".
  4. Введите номер порта и ключ.
  5. Нажмите кнопку ОК.

Вариант 2. Использование WinDbg (командная строка)

Вы также можете запустить сеанс с WinDbg, открыв командную строку и введя следующую команду, где n — номер порта, и MyKey — это ключ, который BCDEdit автоматически создается при настройке целевого компьютера:

windbg -k net:port=<n>,key=<MyKey>

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

Используйте KD

На хост-компьютере откройте командную строку. Введите следующую команду, где n — номер порта, и MyKey — это ключ, который BCDEdit автоматически создается при настройке целевого компьютера:

kd -k net:port=<n>,key=<MyKey>

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

Перезапустите целевой компьютер

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

shutdown -r -t 0

При перезапуске целевого объекта отладчик в ОС-хоста подключается.

После подключения к целевому объекту на узле выберите перерыв в отладчике и вы можете начать отладку.

Разрешить отладчику проход через брандмауэр

При первой попытке установить подключение к отладке сети может потребоваться разрешить доступ к приложению отладки (WinDbg или KD) через брандмауэр. Клиентские версии Windows отображают запрос, но серверные версии Windows не отображают запрос. Ответьте на запрос, установив флажки для всех трех типов сети: домен, частный и общедоступный.

Если вы не получили запрос или не установили флажки, когда запрос был доступен, используйте Панель управления, чтобы разрешить доступ через брандмауэр на хост-компьютере, где выполняется отладчик. Откройте панель управления Система и безопасность > и выберите Разрешить приложению доступ через брандмауэр Windows.

  • (WinDbg) В списке приложений найдите процесс двигателя WinDbg (TCP) (все).

  • (Классический WinDbg) В списке приложений найдите символьный отладчик Windows GUI и отладчик Windows ядра.

Установите флажки, чтобы разрешить этим приложениям доступ через брандмауэр. Перезапустите приложение отладки (WinDbg или KD).

Ключ шифрования

Чтобы обеспечить безопасность целевого компьютера, пакеты, передаваемые между узлом и целевыми компьютерами, должны быть зашифрованы. Используйте автоматически созданный ключ шифрования (предоставленный BCDEdit при настройке целевого компьютера). Автоматически созданный ключ шифрования является более безопасным и предоставляет уникальное значение, используемое для установления подключения к определенному целевому объекту.

Отладка сети использует 256-битный ключ, указанный как четыре 64-битных значения, в 36-ричной системе, разделенных точками. Каждое 64-разрядное значение указывается с помощью до 13 символов. Допустимые символы — это буквы через z и цифры от 0 до 9. Специальные символы не допускаются.

Чтобы указать собственный ключ, откройте командную строку с повышенными привилегиями на целевом компьютере. Введите следующую команду, где является IP-адресом хост-компьютера, n номер порта, а ключом является ваш ключ:

bcdedit /dbgsettings net hostip:w.x.y.z port:n key:Key

Целевой компьютер необходимо перезагрузить в любое время, когда вы измените dbgsettings.

Советы по устранению неполадок

Разрешить отладку приложения через брандмауэры

При первой попытке установить подключение к отладке сети может потребоваться разрешить доступ к приложению отладки (WinDbg или KD) через брандмауэр. Клиентские версии Windows отображают запрос, но серверные версии Windows не отображают запрос. Ответьте на запрос, установив флажки для всех трех типов сети: домен, частный и общедоступный.

Если вы не получаете запрос или не установите флажки при наличии запроса, необходимо использовать панель управления, чтобы разрешить доступ через брандмауэр. Откройте панель управления Система и безопасность > и выберите Разрешить приложению доступ через брандмауэр Windows.

  • (WinDbg) В списке приложений найдите процесс двигателя WinDbg (TCP) (все).

  • (WinDbg (классическая модель)) В списке приложений найдите символьного отладчика Windows GUI и отладчик ядра Windows.

Установите флажки, чтобы разрешить этим приложениям доступ через брандмауэр. Прокрутите вниз и нажмите кнопку ОК, чтобы сохранить изменения брандмауэра. Перезапустите отладчик.

Номер порта должен находиться в диапазоне, разрешенном политикой сети.

Политика сети вашей компании может ограничить диапазон номеров портов, которые можно использовать для отладки сети. Чтобы узнать, ограничивает ли политика вашей компании диапазон портов для отладки сети, обратитесь к администратору сети. На целевом компьютере откройте командную строку от имени администратора и введите команду bcdedit /dbgsettings. Результат аналогичен следующему примеру:

C:\> bcdedit /dbgsettings
key                     XXXXXX.XXXXX.XXXXX.XXXXX
debugtype               NET
hostip                  169.168.1.1
port                    50085
dhcp                    Yes
The operation completed successfully.

В предыдущих выходных данных значение порта равно 50085. Если значение порта находится за пределами диапазона, разрешенного администратором сети, введите следующую команду. Значение w.x.y.z является IP-адресом хост-компьютера, а YourDebugPort — номер порта в допустимом диапазоне.

bcdedit /dbgsettings net hostip:w.x.y.z port:YourDebugPort

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

Используйте ping для проверки подключения

Если отладчик не подключается, используйте команду ping на целевом компьютере для проверки подключения.

C:\>Ping <HostComputerIPAddress>

Заметка

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

Как отладчик получает IP-адрес для целевого компьютера

KDNET на целевом компьютере пытается использовать протокол конфигурации динамических узлов (DHCP), чтобы получить маршрутизируемый IP-адрес сетевого адаптера, который используется для отладки. Если KDNET получает назначаемый DHCP-адрес, хост-компьютеры в любой точке сети могут отлаживать целевой компьютер. Если KDNET не может получить назначаемый DHCP-адрес, он использует автоматическую частную IP-адресацию (APIPA) для получения IP-адреса локальной связи. IP-адреса локальной связи не являются маршрутизируемыми, поэтому узел и целевой объект не могут использовать IP-адрес локальной связи для обмена данными через маршрутизатор. В этом случае отладка сети работает при подключении узла и целевых компьютеров к одному сетевому концентратору или коммутатору.

Всегда указывайте busparams при настройке KDNET на физическом компьютере с сетевым адаптером на основе PCI

Если вы настраиваете KDNET на физическом компьютере с сетевым адаптером на основе PCI или PCIe, всегда указывайте параметры шины для адаптера, который вы хотите использовать с KDNET. Чтобы указать параметры шины, откройте диспетчер устройств и найдите сетевой адаптер, который требуется использовать для отладки. Откройте страницу свойств сетевого адаптера и запишите номер шины, номер устройства и номер функции, отображаемый на вкладке "Расположение " на вкладке "Общие ". В командной строке с повышенными привилегиями введите следующую команду, где b, d и f — это номера шины, устройства и функции в десятичном формате:

bcdedit /set "{dbgsettings}" busparams b.d.f

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

shutdown -r -t 0

Удаление записей BCDEdit вручную

Обычно не требуется вручную удалять записи BCDEdit. Однако эту процедуру можно использовать для устранения необычных ситуаций.

При использовании служебной программы kdnet вам не нужно вручную удалять записи. Дополнительные сведения см. в статье Настройка отладки сетевого ядра KDNET автоматически.

При использовании bcdedit –deletevalueнеобходимо указать допустимое имя элемента bcd. Дополнительные сведения см. в разделе BCDEdit /deletevalue.

Чтобы вручную удалить записи bcdedit, выполните следующие действия.

  1. На целевом компьютере откройте командную строку от имени администратора.

  2. В качестве примера введите следующую команду, чтобы удалить запись отладки BCDEdit для IP-адреса узла:

    bcdedit -deletevalue {dbgsettings} hostip
    

При удалении hostip необходимо указать target= в командной строке отладчика.

  1. В качестве другого примера удалите запись порта с помощью следующей команды:

    bcdedit -deletevalue {dbgsettings} port
    

При удалении записи порта KDNET использует порт отладчика 5364, зарегистрированный в ICANN по умолчанию.

Настройка Hyper-V

Если вы хотите установить роль Hyper-V на целевом компьютере, см. статью "Настройка отладки сети" узла виртуальной машины.

Для получения информации об отладке Hyper-V виртуальной машины см. раздел Настройка сетевой отладки виртуальной машины — KDNET.

Включение KDNET на узле Hyper-V, на котором выполняются виртуальные машины с подключением к внешней сети

Иногда возникает ситуация, которая приводит к остановке работы сети в виртуальных машинах:

  • Вы можете включить Hyper-V на компьютере, создать внешний сетевой коммутатор, указывающий на физический сетевой адаптер на компьютере, и настроить виртуальные машины для использования этого внешнего коммутатора для сети.

  • Вы включите KDNET в ОС узла Hyper-V с помощью той же физической сетевой карты, на которую указывает внешний сетевой коммутатор. Перезагрузите хост.

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

Эта остановка преднамеренна. KDNET принимает монопольный контроль над сетевой картой, которую он настроен для использования. Операционная система не загружает родной NDIS минипорт для этого сетевого интерфейса. Внешний сетевой коммутатор больше не может взаимодействовать с собственным драйвером минипорта NDIS и перестает работать. Чтобы обойти эту ситуацию, выполните следующие действия.

  1. Откройте диспетчер виртуальных коммутаторов из диспетчера Hyper-V и выберите существующий виртуальный коммутатор. Измените сетевой адаптер внешней сети на сетевой адаптер для отладки Microsoft Kernel , выбрав его в раскрывающемся меню, а затем выбрав ОК в диалоговом окне диспетчера виртуальных коммутаторов.

  2. После обновления сетевого адаптера виртуального коммутатора завершите работу и перезапустите виртуальные машины.

При отключении отладки KDNET выполните ту же процедуру, чтобы перенаправить внешний коммутатор обратно на минипорт NDIS для NIC (сетевой карты). В противном случае подключение к виртуальной машине теряется при перезагрузке компьютера после отключения отладки.

IPv6

Windows версии 1809 добавляет поддержку IPv6.

Чтобы использовать IPv6 с отладчиком, выполните следующие действия.

  1. Ping your <debughostname> и запишите IPv6-адрес, который сообщается в строках ответа выходных данных. Используйте этот IPv6-адрес вместо x:y:z:p:d:q:r:n.

  2. Используйте BCDEdit для удаления всех существующих значений IP-адресов в dbgsettings.

    bcdedit -deletevalue {dbgsettings} hostip
    
  3. Задайте IPv6-адрес узла. Строка hostipv6=s:t:u:v:w:x:y:z не может содержать пробелы. <YourPort> — это номер сетевого порта, используемый для этого целевого компьютера. < > YourKey — это четырехкомпонентный ключ безопасности. <b.d.f> — это номера расположения функции шины для сетевого адаптера, который вы хотите использовать для KDNET.

    bcdedit /dbgsettings net hostipv6:s:t:u:v:w:x:y:z port:<YourPort> key:<YourKey> busparams:<b.d.f>
    
  4. Введите эту команду, чтобы убедиться, что параметры dbgsettings заданы правильно.

    C:\> bcdedit /dbgsettings
    busparams               0.25.0
    key                     2steg4fzbj2sz.23418vzkd4ko3.1g34ou07z4pev.1sp3yo9yz874p
    debugtype               NET
    hostipv6                  2001:db8:0:0:ff00:0:42:8329
    port                    50010
    dhcp                    Yes
    The operation completed successfully.
    
  5. На хост-компьютере выполните следующую команду, чтобы запустить отладчик:

    Windbg -k net:port=<yournetworkportnumber>,key=<key_output_from_kdnet>,target=::<YourIPv6Address> 
    
  6. Когда отладчик работает на хост-компьютере и ожидает подключения, перезагрузите целевой компьютер.

  7. Отладчик подключается к отладчику узла рано во время загрузки. Вы можете увидеть, что KDNET использует подключение IPv6, так как IP-адреса, сообщаемые в подключенном сообщении, являются IPv6-адресами вместо IPv4-адресов.

Примечания

  • Каждый параметр BCD отладчика, позволяющий указать hostip, имеет соответствующий элемент hostipv6. Существует три пары.
IPv4 IPv6 Употребление
хостip (хостовый IP-адрес) hostipv6 Для отладки загрузочных процессов и ядра
IP-адрес целевого хоста targethostipv6 Особенности отладки ядра
hypervisorhostip hypervisorhostipv6 Для отладки Hyper-V
  • Если задать hostipv6 адрес стиля для любого из этих типов отладки, вы получите IPv6.

  • Если задать hostip адрес стиля для любого из этих типов отладки, вы получите IPv4.

  • Целевой объект выполняет только IPv4 или IPv6, а не одновременно. Версия используемого IP-протокола управляется параметрами dbgsettings на целевой машине. Если задано hostip, целевой объект использует IPv4. Если задано hostipv6, целевой объект использует IPv6.

  • Отладчик узла обычно автоматически выбирает использование IPv4 или IPv6. По умолчанию отладчик прослушивает как сокет IPv4, так и сокет IPv6 и автоматически подключается к целевому компьютеру.

  • Если вы хотите принудительно использовать IPv6 в отладчике на узле, но вы хотите, чтобы отладчик прослушивал подключение из целевого объекта, можно добавить target=:: в командную строку отладчика. :: — это IPv6-адрес 0.

  • Если вы хотите принудительно выполнить отладку IPv4 в отладчике на узле, но вы хотите, чтобы отладчик прослушивал подключение из целевого объекта, можно добавить target=0.0.0.0 в командную строку отладчика. 0.0.0.0 — это IPv4-адрес 0.

  • Если указать target= в командной строке отладчика и использовать имя компьютера, отладчик преобразует это имя компьютера в IPv4-адрес и IPv6-адрес. Затем отладчик пытается подключиться к обоим.

  • При указании target= в командной строке отладчика и использовании IP-адреса, если IP-адрес содержит какие-либо символы, отладчик предполагает, что это IPv6-адрес и принудительно использует IPv6 для этого подключения. Если IP-адрес содержит любой . символов отладчик предполагает, что это IPv4-адрес и принудительно использует IPv4 для этого подключения.

  • Если вы настроили IPv6 в целевом объекте и принудительно используете IPv4 в командной строке отладчика, вы не получите подключение.

  • Если вы настроили IPv4 в целевом объекте и принудительно используете IPv6 в командной строке отладчика, вы также не получите подключение.