为了本地开发的目的,Asker以及具有类似用例的任何人都可能在工作站(不是Windows Server版本)上运行,在这种情况下,存在一个相对简单的解决方案。
创建开关
在Hyper-V Manager中,在下创建一个新的虚拟交换机Actions panel -> Virtual Switch Manager... -> Create Virtual Switch
。假设虚拟机应该能够连接到Internet,请选择External
交换机类型。
在下一个屏幕上,为交换机命名,例如internet-enabled
,然后选择连接到Internet的物理网络接口。
结果开关应如下所示:
硬编码交换机的IP地址(VM的网关)
找到与新交换机关联的网络适配器,即Control Panel -> Network and Internet -> Network Connections
;其名称将反映上一步中给出的名称,例如vEthernet (internet-enabled)
。右键单击适配器,然后选择Properties
。
接下来,单击Internet Protocol Version 4 (TCP/IPv4)
,然后单击Properties
。输入192.168.10.1
的IP address
,并且255.255.255.0
为Subnet mask
。设置应如下所示:
在来宾VM中分配静态IP地址
最后一步是在来宾VM中分配静态IP地址。
不幸的是,Vagrant自v2.2.1起不支持静态IP配置(请参阅:https : //github.com/hashicorp/vagrant/issues/8384),因此在配置VM之前不能分配此静态IP。
在Vagrant支持此功能之前,您可以简单地正常配置VM并随后编辑网络配置。
设置静态IP的过程因来宾操作系统而异,例如,在Ubuntu 18.04 LTS中,就像编辑一样简单,/etc/netplan/01-netcfg.yaml
以包括与上面的虚拟交换机配置匹配的值(空格必须精确!):
network:
version: 2
ethernets:
eth0:
dhcp4: no
addresses: [192.168.10.10/24]
gateway4: 192.168.10.1
nameservers:
addresses: [8.8.8.8,8.8.4.4]
保存文件后,使用以下命令应用更改:
$ sudo netplan apply
VM应该立即反映静态IP,可以通过以下方式确认ifconfig
:
$ sudo ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.10.10 netmask 255.255.255.0 broadcast 192.168.10.255
inet6 fe80::215:5dff:fe38:12a prefixlen 64 scopeid 0x20<link>
ether 00:15:5d:38:01:2a txqueuelen 1000 (Ethernet)
...
主机现在可以在ping通访客192.168.10.10
,而访客可以在ping通主机192.168.10.1
。
参考文献: