我们有一台安装了 Hyper-V 的 Win Server 2019(版本 1809,操作系统内部版本 17763.1282)。我们想使用内部 NAT 运行多个 Ubuntu VM,因此我们不需要为每个 VM 设置单独的外部 IP。我们使用的步骤是我们在互联网上看到的许多示例:-
New-VMSwitch –SwitchName "NATSwitch" –SwitchType Internal
Get-NetAdapter (to lookup the index of the new "vEthernet (NATSwitch)" - which is 24)
New-NetIPAddress –IPAddress 14.0.0.1 -PrefixLength 24 -InterfaceIndex 24
New-NetNat –Name NATNetwork –InternalIPInterfaceAddressPrefix 14.0.0.0/24
我们设置 VM 网络连接的属性以使用 NATSwitch,然后将 VM 配置为具有静态地址 - 网关为 14.0.0.1,VM 本身为 14.0.0.2。即:/etc/netplan/00-installer-config.yaml 如下所示:-
network:
version: 2
ethernets:
eth0:
addresses:
- 14.0.0.2/24
gateway4: 14.0.0.1
nameservers:
addresses: [14.0.0.1]
因此在虚拟机上,ip route 显示:
default via 14.0.0.1 dev eth0 proto static
14.0.0.0/24 dev eth0 proto kernel scope link src 14.0.0.2
ip a 包括:
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether 00:15:5d:1a:84:01 brd ff:ff:ff:ff:ff:ff
inet 14.0.0.2/24 brd 14.0.0.255 scope global eth0
valid_lft forever preferred_lft forever
inet6 fe80::215:5dff:fe1a:8401/64 scope link
valid_lft forever preferred_lft forever
从 Hyper-V 启动虚拟机后,我可以使用 Putty 成功通过 SSH 进入 14.0.0.2,但虚拟机无法访问互联网,也无法 ping 14.0.0.1。因此,NAT 似乎没有采取任何措施将 14.0.0.x 网络桥接到服务器上的主 NIC(当然可以访问互联网)。从 2019 Server,我可以 ping 14.0.0.1(本身 = 网关)和 14.0.0.2(虚拟机)。
我们可以在网络上使用外部地址来工作,方法是在 Hyper-V 中创建一个“外部交换机”,连接到该交换机,然后使用 DHCP 从我们的域控制器获取一个用于 VM 的 MAC 地址的 IP 地址 - 但我们不希望为所有 VM 分配外部 IP 地址。
有人知道我们遗漏了什么吗?
答案1
答案是,开箱即用,我们在“来宾或公共网络”上设置的 Windows Server 2019 防火墙设置阻止主机通过 ssh 连接到任何虚拟机。关闭该网络上的防火墙会启用 ssh,但我们应该正确配置它...