交叉计算机连接与网络交换机,广播数据包差异?使用网络调试启动时间真的很慢

交叉计算机连接与网络交换机,广播数据包差异?使用网络调试启动时间真的很慢
  • 问题:

    • 网络配置导致操作系统加载时间为 10 分钟。
  • 设置

    • 两个 Windows 10 系统,最新更新
    • 直接通过以太网电缆连接(非交叉)
    • 两者都有静态 IP
    • Windows 内核网络已启用调试
    • 目标上的 Windows 防火墙已禁用
    • 主机有两个网络接口
  • 问题:

    • 交叉连接如何影响广播数据包?
    • 网络交换机存储转发表能起到这个作用吗?
  • 观察结果:

    • 启动时 10 分钟的挂起时间是在旋转的 Windows 启动画面上
    • 我认为 KDNET 过滤器遇到了困难......
    • 当我将两台电脑连接到网络交换机时,问题解决了
    • 当我禁用网络调试时,问题解决了
    • Connected to target 169.254.78.132 on port 50008 on local IP 192.168.128.1使用网络交换机或交叉电缆在 WinDbg 中打印连接情况
    • Connected to target 172.29.2.197 on port 50008 on local IP 172.29.13.140当目标上启用 DHCP 时,通过主网络接口进行连接。
    • 关闭 WinDbg(没有打开内核调试会话),仍然很慢
    • 根据 netadapter 列出的目标 IP 地址
IP ADDRESSES

unicast            ffffd206bfefb040 - 192.168.128.100
multicast          ffffd206bfef2040 - 224.0.0.1
multicast          ffffd206ccdd1040 - 224.0.0.251
multicast          ffffd206ccddb040 - 224.0.0.252
multicast          ffffd206cd375040 - 239.255.255.250
broadcast          ffffd206bfef8040 - 255.255.255.255
broadcast          ffffd206ccda9040 - 192.168.128.255

答案1

TL;Dr:使用bcdedit /set {dbgsettings} dhcp Nonodhcp标记。

bcdedit /dbgsettings NET HOSTIP:ip PORT:port [KEY:key] [nodhcp] [newkey] [/start startpolicy] [/noumex]

WinDBG 使用 Windows 10 (RS5/17763.1) 内核进行网络调试需要 DHCP经过默认以达到最佳功能。

回想一下,KDNET 内核模块在比 Windows 操作系统更低的级别上运行。不使用“Microsoft 内核调试网络适配器”连接的 IP 地址设置,也不使用隐藏的真实 (Intel/Realtek/Broadcom) 适配器,该适配器也有其 IP 地址。

例如,在网络连接控制面板中将 IPV4 地址设置为 192.168.128.1,调试器(连接到交换机时)会报告以下内容:

Connected to target 172.29.1.132 on port 50008 on local IP 172.29.13.140.

这与我之前的观察结果相关,即使用交叉电缆时:

Connected to target 169.254.78.132 on port 50008 on local IP 192.168.128.1

因此,没有 DHCP 服务器的交叉电缆会导致 KDNET 在 DHCP 上停滞 10 分钟,然后最终回到链路本地地址。

经证实https://community.osr.com/discussion/290941/network-debugging-took-pcs-off-the-dhcp-network-windbg-can-no-longer-connect

内核调试器(即嵌入在目标计算机内核中的部分)能够连接具有静态 IP 的机器上的 windbg,但它从不支持为自己分配静态 IP。您要么使用 DHCP,要么获取 169.254.xx 范围内的后备地址。该范围不可路由,因此两台计算机必须直接连接。

注意,操作系统分配给网络适配器的 IP 地址是无关紧要的。内核调试器有自己独立的驱动程序堆栈。

此外,通信是通过 UDP 数据包而不是 TCP 完成的……因此它实际上不需要 IP 地址。以下是 Wireshark 数据包捕获,显示了使用交叉电缆的 DHCP 请求:

Wireshark 数据包捕获

仔细查看输出bcdeditbcdedit /dbgsettings我发现 Windows 自动使用了 DHCP 标志,尽管我从未添加过它。我看到他们还添加了“nodhcp”选项,尽管在文档中很难找到它

debug                   Yes
----- dbgsettings -----
busparams               3.0.0
key                     1.2.3.4
debugtype               NET
hostip                  192.168.128.1
port                    50008
dhcp                    Yes

将 DHCP:no 添加到我的网络调试设置批处理脚本中解决了这个问题!

@echo off

rem get bus device function from Device Manager of network adapter
set bdf=3.0.0

rem port used in WinDbg
set port=50008

rem set your workstation machine to the following IP on a secondary adapter
set ip=192.168.128.1

rem enable network debug using the ip address of the dev system
bcdedit /debug on
bcdedit /create {dbgsettings} > NUL 2>&1
bcdedit /dbgsettings NET HOSTIP:%ip% PORT:%port% KEY:1.2.3.4
bcdedit /set {dbgsettings} busparams %bdf%
bcdedit /set {dbgsettings} dhcp No

rem rebuilt BCDs don't contain these sections / inheritance, and prevents Microsoft Kernel Debug Network Adapter from appearing
bcdedit /set {current} inherit {globalsettings}
bcdedit /create {globalsettings} > NUL 2>&1
bcdedit /set {globalsettings} inherit {dbgsettings}

pause

还有由没有 DNS 标记为“公共”的静态网络引起的防火墙问题,我有这个 powershell 代码片段来修复它,但它在启动时是必需的......我只是禁用了这台目标机器的防火墙来缓解这个问题。

# Name             : Unidentified network
# InterfaceAlias   : nameOfYourNetworkAdapter
# InterfaceIndex   : 6
# NetworkCategory  : Public
# IPv4Connectivity : NoTraffic
# IPv6Connectivity : NoTraffic

# converts the "Public" network to "Private" so file sharing and such works with Windows firewall
# this is good for local connections that do not need gateway / dns

get-netconnectionprofile -InterfaceAlias *
set-netconnectionprofile -InterfaceAlias nameOfYourNetworkAdapter -NetworkCategory Private
get-netconnectionprofile -InterfaceAlias *

# note, I don't believe this persists between reboots... so add to startup menu if needed
# it makes it easier to rename your nework adapter to 'debug' or something without spaces

相关内容