我正在运行带有 WSL2 Ubuntu 20.04 的 Windows 11 Home(21H2,内部版本 22000.434)。
在我的 Windows 本地机器(和本地 LAN)上,我运行
sudo nmap -sn 192.168.1.0/24
该命令的输出是:
Starting Nmap 7.92 ( https://nmap.org ) at 2022-01-17 09:44 Central Standard Time
Nmap scan report for raspberryshake.attlocal.net (192.168.1.74)
Host is up (0.024s latency).
MAC Address: B8:27:EB:69:C6:C6 (Raspberry Pi Foundation)
Nmap scan report for amazon-7e9f85f5b.attlocal.net (192.168.1.237)
Host is up (0.40s latency).
MAC Address: 00:71:47:21:7B:1A (Amazon Technologies)
Nmap scan report for dsldevice.attlocal.net (192.168.1.254)
Host is up (0.010s latency).
MAC Address: 08:9B:B9:89:B2:82 (Nokia Solutions and Networks GmbH & KG)
Nmap scan report for host.docker.internal (192.168.1.243)
Host is up.
Nmap done: 256 IP addresses (4 hosts up) scanned in 4.82 seconds
现在,进入 WSL2/Ubuntu 并运行相同的命令后,我得到以下内容:
Starting Nmap 7.80 ( https://nmap.org ) at 2022-01-17 09:42 CST
Nmap scan report for raspberryshake.attlocal.net (192.168.1.74)
Host is up (0.016s latency).
Nmap scan report for host.docker.internal (192.168.1.243)
Host is up (0.00060s latency).
Nmap scan report for dsldevice.attlocal.net (192.168.1.254)
Host is up (0.010s latency).
Nmap done: 256 IP addresses (3 hosts up) scanned in 12.26 seconds
你看出区别了吗?在 WSL2 中,缺少亚马逊设备,我不知道为什么。为什么 Alexa(或亚马逊)设备无法从 WSL 端注册?
附言:是的,我看过了为什么 nmap 有时不显示设备名称?,但这个问题/答案并不能解决我的困惑。
答案1
简短回答:
从 WSL2 开始,您应该能够通过以下方式将网络上的任何 Alexa 设备添加到扫描中:
sudo nmap -sn -PE -PS443,4070 -PA80 -PP 192.168.1.0/24
解释:
看起来 Echo 设备没有出现在 WSL2 的默认扫描中,原因是Nmap主机发现过程:
如果没有指定主机发现选项,Nmap 将发送 ICMP 回显请求、TCP SYN 数据包(发送到端口 443)、TCP ACK 数据包(发送到端口 80)以及 ICMP 时间戳请求。(对于 IPv6,ICMP 时间戳请求被省略,因为它不是 ICMPv6 的一部分。)这些默认值相当于 -PE -PS443 -PA80 -PP 选项。
Echo 上通过 Nmap 检测所需的所有端口/服务/协议均被禁用。
由于下一个限定符,它在从 Windows 主机扫描时会显示出来:
例外是 ARP(用于 IPv4)和邻居发现(用于 IPv6)扫描,它们可用于本地以太网网络上的任何目标。
如果你增加 Windows 主机下的 Nmap 的调试级别,你会看到这一点:
sudo nmap -d 192.168.1.237
您应该在输出中看到类似以下内容:
Host is up, received arp-response
另一方面,arp 发现不是在 WSL2 中无法工作,因为 (a) arp 是链路层协议,并且 (b) 您不在同一网络上。WSL2 网络接口是 Hyper-V 子系统提供的虚拟 NIC。它正在运行 NAT'd在后面Windows 主机。
因此,我们需要某种方法来检测亚马逊设备,即使 (a) 它位于不同的网络上,并且 (b) 它通常用于检测的所有端口都被过滤了。
首先,运行后sudo nmap -Pn 192.168.1.237 -p1-65535
你应该看到如下内容:
Host is up (0.0092s latency).
Not shown: 49146 filtered ports, 16385 closed ports
PORT STATE SERVICE
4070/tcp open tripe
4071/tcp open aibkup
55442/tcp open unknown
55443/tcp open unknown
利用端口 4070/tcp 已打开的知识,以及上面引用的 Nmap 书中的默认发现方法,我们可以将它们加在一起并得到:
sudo nmap -sn -PE -PS443,4070 -PA80 -PP 192.168.1.0/24
它应该会给你一份完整的报告,包括来自 WSL2 的 Alexa。
答案2
在提出原始问题时不一定可用的新可能性已被证实可行这篇 Reddit 帖子。
目前,它处于 Microsoft 的预览/实验阶段。要使用它,您需要:
使用 Windows 11 Professional 或更高版本(Hyper-V 管理所需)
从 Microsoft Store 安装 WSL 的预览版(当然,WSL 不一定是预览版,但可以作为应用程序安装的版本是预览版)。
创建桥接的外部 Hyper-V 网络交换机
.wslconfig
在 WSL2中通过创建或编辑来配置桥接模式网络视窗(非 Linux)配置文件夹包含以下内容:[wsl2] networkingMode=bridged vmSwitch=my-switch
...
my-switch
用 Hyper-V 中创建的交换机的名称替换。退出所有 WSL 会话,然后
wsl --shutdown
从 PowerShell重新开始
看这个 Github 评论了解原始信息。此外,这篇博文有更多细节和关于其他场景的有用信息。最后,这个 Github 评论有一些关于如何处理此类配置的 VPN 的详细信息。