目前,我只进行了基本设置,在我的 Wi-Fi 适配器上创建了一个虚拟 Hyper-V 外部交换机,到目前为止,我的基于 Linux 的单个客户操作系统通过其虚拟 NIC 连接到该交换机。
这是我经常带到校园的一台笔记本电脑,它允许学生使用带有 WPA2+RADIUS 身份验证的 Wi-Fi 无线访问互联网和校园网络。学生通过其用户名和密码进行身份验证。
我在校园里遇到的直接问题是,当我启动客户机时,它尝试使用 DHCP 配置其虚拟网卡,以适应主机所连接的同一网关,后者会失去所有上行链路连接,直到我重新开始Windows。我怀疑这与校园内的 RADIUS 身份验证系统不喜欢我这边有两个不同的 IP 端点,与一个 802.11 身份验证令牌或其他东西相关联有关。它甚至可能配置为明确检测和阻止这种情况,我不知道。
另一个问题是,即使网关能够适应上述设置,它通常也会通过 DHCP 向两者分发地址,并且我发现客户机过于频繁地更改其 IP 地址,这会带来问题,因为当我需要从主机(例如,通过 SSH)连接到它时,我会“失去它”。
考虑到这一点,我决定我的 Internet 连接不应依赖于上行网关的配置方式,据我所知,NAT 是解决此问题的完美方案。主机上的虚拟 NAT 系统应该可以做到这一点,对吗?
无论如何,我需要的是:
- 让我的客户机和主机位于同一层 2 或 LAN 网络上。客户机是基于 Linux 的操作系统,我需要能够通过 SSH 访问它,我还计划通过 SMB 在客户机上安装主机文件夹。
- 我希望客户机和主机在上述网络上都有永久地址,这样我就能始终知道从哪里可以访问另一个。没有 DHCP。
- 显然,我需要以某种方式从主机和客户机上行。我认为,这个要求加上其他两个要求强烈建议使用 NAT,其中客户机与主机形成第 2 层网络或 LAN,或者主机充当客户机的路由器/网关。
我的主机上有一个以太网和一个 Wi-Fi 适配器,尽管我经常使用 Wi-Fi,但我希望通过以太网进行上行链路也能正常工作。
我阅读有关 WinNAT 的信息相信这就是我想要的,但是在主机上的管理 PowerShell 控制台中发出以下命令时,我不确定我处于什么位置:
New-NetIPAddress -IPAddress 192.168.0.1 -PrefixLength 24 -InterfaceIndex 24
New-NetNat -Name HelloNAT -InternalIPInterfaceAddressPrefix 192.168.0.0/24
内部虚拟交换机是之前设置的,Get-NetAdapter
它告诉我交换机的接口索引是24
,也就是上面使用的。Debian Linux VM 的设置如下/etc/network/interfaces
:
iface eth0 inet static
address 192.168.0.3
netmask 255.255.255.0
gateway 192.168.0.1
我甚至无法从 VM ping 或 traceroute 网关地址,更不用说任何 WAN 地址了8.8.8.8
(Google 公共 DNS 服务器之一)。
答案1
一段时间后,我发现我的 NAT 设置不正确,因为它似乎分配了一个完全虚假的 IP 地址,我不记得设置或发明了它。这个值太随机了,所以我认为它是某种杂散值。我记得我把一切都设置为微软指导了我所以我唯一的选择就是重做一遍。
我用 删除了 NAT 网络,Get-NetNat | Remove-NetNat
还用 从虚拟交换机中删除了 IP 地址记录Remove-NetIPAddress -InterfaceIndex
,最后只剩下裸交换机,没有与其关联的地址。
然后我再次按照指南重新操作,这次确保我分配的“192.168.0.1/24”地址保持不变。结果确实如此。
到目前为止,一切都按预期运行。这是为了后代——按照微软的文章,你应该有一个像问题中描述的那样工作的NAT。但没有DNS,这需要额外的步骤。