我的 Windows 10 计算机有一个通过 USB 连接的额外网络接口,其Ethernet 2
列出时的名称为ipconfig
。Ethernet 2
其 IPv4 地址以 192.254 开头192.254.N.N
,其 IPv6 地址以 开头fe80::
。另一端连接的是 Raspberry Pi。
只要 Windows Defender 防火墙仅允许我的 Windows PC 上的某个应用程序在域和专用网络上通信,该应用程序就无法从该网络接收 UDP 数据包。将防火墙切换为允许在公共网络上通信(既不是域也不是专用的选项)解决了该问题。fe80:: 或 192.254 上的链路本地网络被归类为“公共”网络,而实际上它是点对点电缆,这让我觉得违反直觉?
我对术语或网络分类有什么误解?
答案1
Windows 防火墙中的“公共”与“私有”不会对 IP 网络前缀进行分类 - 它对整个网络接口的状态进行分类。(也就是说,全部来自给定网络接口的流量要么应用“私有”规则,要么应用“公共”规则,而不管源 IP 地址如何。
这种区别不仅与互联网可访问性有关,也与 RFC1918 中 IP 地址是否“私有”无关,而更多的是是否在你的主机当地的网络值得信赖或不信任。这将完全违背系统自动信任 fe80::/64 或 192.168.0.0/16 的初衷,因为与点对点链接上完全相同的“私有用途”前缀也用于开放访问网络,而开放访问网络可能充满同一子网中不受信任的主机。
例如,如果你连接到咖啡馆或图书馆的 Wi-Fi 网络,它几乎总是有一个 RFC1918 IPv4 地址(以及一个链路本地 IPv6 地址,这些都是必须的)。即使存在全局地址),使用同一 Wi-Fi 的所有其他客户的设备也是如此——但在大多数情况下,你不会希望他们访问您的 SMB 服务只是因为他们是从 fe80::/64 地址进行的。
Windows 确实使用前缀和各种其他信息来检测它当前是否连接到“域”网络(当加入 Active Directory 域时),但在其他情况下,它会偏向安全方面。(Windows 7-10 过去会在第一次连接到“新”网络时询问您;Windows 11 似乎每次都默认为“私人”。)
您可以更改当前网络的配置文件(对于以太网,这仅在 Windows 10 的最新版本中可用):
如果您希望 Windows 防火墙根据源前缀允许流量,则有一个单独的机制。当规则应用于“私有”接口时,Windows 防火墙 (wf.msc) 中的许多内置规则都允许“范围 → 远程:本地子网”;您可以对与您的应用相对应的规则执行相同操作: