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

Средства отладки для Windows поддерживают отладку ядра по сети. В этой статье описывается настройка отладки сети вручную.

Важно!

Настройка отладки сети вручную — это сложный и подверженный ошибкам процесс. Чтобы настроить автоматическую отладку сети, см . раздел "Настройка автоматической отладки сетевого ядра KDNET". Использование служебной программы KDNET настоятельно рекомендуется для всех пользователей отладчика.

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

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

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

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

Главный компьютер может использовать любой сетевой адаптер, но целевой компьютер должен использовать сетевой адаптер, поддерживаемый средствами отладки для Windows. Список поддерживаемых сетевых адаптеров см. в статье "Поддерживаемые сетевые адаптеры Ethernet" для отладки сетевого ядра в Windows 10 и поддерживаемых сетевых адаптерах Ethernet для отладки сетевого ядра в Windows 8.1.

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

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

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

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

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

    ipconfig
    

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

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

    ping -4 <YourIPAddress>
    

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

Выберите номер порта для отладки на узлах и целевых компьютерах. Вы можете выбрать любое число от 49152 до 65535. Рекомендуемый диапазон — 50000 – 50039. Выбранное порт открывается для монопольного доступа отладчиком, запущенным на хост-компьютере. Необходимо выбрать номер порта, который не используется другими приложениями, работающими на хост-компьютере.

Примечание.

Диапазон номеров портов, которые можно использовать для отладки сети, может быть ограничен политикой сети вашей компании. Нет способа определить, какие ограничения существуют на хост-компьютере. Чтобы определить, ограничивает ли политика вашей компании диапазон портов, которые можно использовать для отладки сети, проверка с администраторами сети.

При подключении нескольких целевых компьютеров к одному узлу каждое подключение должно иметь уникальный номер порта. Например, при подключении 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
    
  2. BCDEdit отображает автоматически созданный ключ. Скопируйте ключ и сохраните его на съемных устройствах хранения, таких как USB-флэш-накопитель. При запуске сеанса отладки на главном компьютере требуется ключ.

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

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

Примечание.

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

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

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

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

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

Вы также можете запустить сеанс с 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.

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

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

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

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

Чтобы указать собственный ключ, откройте командную строку с повышенными привилегиями на целевом компьютере. Введите следующую команду, где w.x.y.z находится 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.

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

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

Диапазон номеров портов, которые можно использовать для отладки сети, может быть ограничен политикой сети вашей компании. Чтобы определить, ограничивает ли политика вашей компании диапазон портов, которые можно использовать для отладки сети, проверка с администратором сети. На целевом компьютере откройте командную строку от имени администратора и введите команду 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 на целевом компьютере для проверки подключения.

C:\>Ping <HostComputerIPAddress>

Примечание.

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

Как отладчик получает 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 вручную

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

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

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

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

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

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

    bcdedit -deletevalue {dbgsettings} hostip
    

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

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

    bcdedit -deletevalue {dbgsettings} port
    

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

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

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

Сведения об отладке виртуальной машины Hyper-V см. в разделе "Настройка отладки сети виртуальной машины " KDNET".

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

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

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

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

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

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

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

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

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

IPv6

Поддержка IPv6 была добавлена в Windows версии 1809.

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

  1. Ping your <debughostname> and note the IPv6 address, который сообщается об ответе из выходных строк. Используйте этот 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 Использование
    hostip hostipv6 Для отладки загрузки и ядра
    targethostip targethostipv6 Особенности отладки ядра
    hypervisorhostip hypervisorhostipv6 Для отладки Hyper-v
  • Если вы задаете hostipv6 адрес стиля для любого из этих видов отладки, это означает, что вы хотите и получите IPv6.

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

  • Целевой объект будет выполнять только IPv4 или IPv6, а не одновременно. Версия используемого IP-протокола управляется целевым субдтингом на целевом компьютере. Если 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 в командной строке отладчика, вы также не получите подключение.

См. также