Hyper V 默认的Default Switch同时支持了NAT网络以及DHCP,虚拟机能够访问外网。

但使用过程中发现这个IP网段经常变化,而且Hyper V没有提供管理其NAT网络与DHCP的图形化界面功能。

如果开发者需要同时管理多个VM,且在局域网中无法为他们单独分配固定IP时,使用可自行配置的NAT网络显得尤为重要。

本文提供一种自定义管理Hyper V NAT网络的方法,虚拟机能够通过固定IP连接至该网络,且能够访问外网。

如果你能够为虚拟机在外部网络中分配一个固定ip,应该优先考虑使用桥接模式,即创建“外部”虚拟交换机,跳过本教程。

目标

添加一个Switch能够支持 192.168.56.0 / 24 网段,并能够将 Linux(CentOS 7) 虚拟机通过固定IP连接到该网段。

支持物理机与虚拟机的相互访问,且支持虚拟机访问外网。

配置

以管理员身份启动PowerShell ,执行下列命令

# 创建虚拟交换机,等同于在Hyper-V管理器界面中新建虚拟网络交换机
New-VMSwitch -SwitchName "NAT-VM" -SwitchType Internal
# 查看 NAT-VM 的 ifindex
Get-NetAdapter
# 创建ip,InterfaceIndex参数自行调整为上一步获取到的ifindex。这一步等同于在 控制面版-网卡属性 中设置ip
New-NetIPAddress -IPAddress 192.168.56.1 -PrefixLength 24 -InterfaceIndex 6
# 创建nat网络,这一步是教程中的关键命令,24为子网掩码位数,即:255.255.255.0
New-NetNat -Name NAT-VM -InternalIPInterfaceAddressPrefix 192.168.56.0/24

在Hyper V管理器中设置该Linux虚拟机的网络适配器为 NAT-VM

设置Linux网络静态ip

#/etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE="eth0"
TYPE="Ethernet"
DEFROUTE="yes"
ONBOOT="yes"
BOOTPROTO="static"
IPADDR="192.168.56.101"
PREFIX="24"
GATEWAY="192.168.56.1"
DNS1="223.5.5.5" #需使用外网DNS,通过网关IP无法获取DNS
DNS2="119.29.29.29"

CentOS还可通过管理工具nmtui来设置ip

重启linux网络

service network restart

错误处理

操作失误或需要修改nat网络时,可以删除之前的创建的nat网络。

进行下面前你应该确认仅有一个nat网络

Get-NetNat #确认获取到的nat只有一个且是你想要删除的
Get-NetNat | Remove-NetNat #删除nat网络

win10 1903 有时会出现NAT网络无法访问外网的情况,此时需要重启物理机才能恢复正常。猜测与电脑睡眠或网络环境变化有关。

DHCP

前面我们已经可以通过固定ip访问网络,但是你需要为每个虚拟机配置一个固定Ip,

比起其他vm工具,还是缺少了一个dhcp网络。

如果你需要自动分配,可通过配置第三方的dhcp服务软件实现,例如tftpd64 、 dhcpserver

tftpd64

http://www.tftpd64.com/

  1. 下载服务版
  2. 在windows防火墙中,添加例外配置

  3. 配置dhcp服务

dhcpserver

下载: http://www.dhcpserver.de/cms/

使用方法:https://blog.csdn.net/candy1232009/article/details/80785367

注意:发现dhcpserver会影响win10的移动热点功能

虚拟机硬盘转换工具 vmware <=> hyper-v

https://www.starwindsoftware.com/starwind-v2v-converter

参考:

https://docs.microsoft.com/en-us/virtualization/hyper-v-on-windows/user-guide/setup-nat-network

https://anandthearchitect.com/2018/01/06/windows-10-how-to-setup-nat-network-for-hyper-v-guests/

https://github.com/docker/for-win/issues/1378#issuecomment-502380490

Hyper V NAT 网络设置 固定IP / DHCP的更多相关文章

  1. vmware fusion nat网络模式设置固定ip

    最近想在本地用虚拟环境搭一个k8s环境,但是发现虚拟机的ip会不定时自动变化,导致mosh客户端连接经常中断.于是就想让虚拟机的ip固定住,不再变动. mac 上的 vmware fusion 设置固 ...

  2. VMware workstation CentOs 7 虚拟机网卡设置为NAT模式并设置固定IP

    一.背景知识      虚拟机网络模式 无论是vmware workstation,virtual box,virtual pc等虚拟机软件,一般来说,虚拟机有三种网络模式: 1.桥接 2.NAT 3 ...

  3. VMware workstation 14 CentOs 7.5.1804 虚拟机网卡设置为NAT模式并设置固定IP

    一.背景知识     虚拟机网络模式 无论是vmware workstation,virtual box,virtual pc等虚拟机软件,一般来说,虚拟机有三种网络模式: 1.桥接 2.NAT 3. ...

  4. linux-centos7.6设置固定IP网络方法

    两种方法设置固定IP 本文分别用了虚拟机网络模式桥接模式和Net模式,至于两者直接的区别可查看其他文档. 一.安装时设置固定IP地址 1.在系统设置界面,点击“网络和主机名”选项,可以看到默认是未连接 ...

  5. docker 设置固定ip、配置网络

    Docker安装后,默认会创建下面三种网络类型 $ docker network ls NETWORK ID NAME DRIVER SCOPE 9781b1f585ae bridge bridge ...

  6. 转 -- Linux系列:Ubuntu虚拟机设置固定IP上网(配置IP、网关、DNS、防止resolv.conf被重写)

    原文转自:http://www.cnblogs.com/lanxuezaipiao/p/3613497.html#undefined 虚拟机里设置上网方式为NAT最方便,因为无需手动设置即可上网,但是 ...

  7. Linux系列:Ubuntu虚拟机设置固定IP上网(配置IP、网关、DNS、防止resolv.conf被重写)

    虚拟机里设置上网方式为NAT最方便,因为无需手动设置即可上网,但是NAT的上网方式默认是DHCP动态分配IP的,这意味着你每次重启虚拟机都 有不一样的IP地址,这对一般用户没任何问题.但是如果你的机子 ...

  8. 虚拟机中的CentOS 7设置固定IP连接最理想的配置

    说明:在网上搜了好多文章都是大同小异,都没有完全解决我想要的固定IP后要达到的如下效果, 1.笔记本主机IP为设置自动获取,不管什么情况下,不受虚拟机影响,只要连接外网就可以正常上网: 2.只要笔记本 ...

  9. centOS7虚拟机设置固定IP

      说明:想要达到的如下效果, 1.笔记本主机IP为设置自动获取,不管什么情况下,不受虚拟机影响,只要连接外网就可以正常上网: 2.只要笔记本主机可以正常访问外网,启动虚拟机中的CentOS 7系统就 ...

随机推荐

  1. OpenGL光照3:光源

    本文是个人学习记录,学习建议看教程 https://learnopengl-cn.github.io/ 非常感谢原作者JoeyDeVries和多为中文翻译者提供的优质教程 的内容为插入注释,可以先跳过 ...

  2. C# 修改配置文件

    /// <summary> /// 保存配置文件的设定 /// </summary> /// <param name="Key"></pa ...

  3. WPF自定义控件的制作

    因为有时候需要定制化的控件,需要多个控件的组合及复杂功能的集成,这样可以考虑自定义用户控件.下面分享一个简单的数值增减功能的自定义控件作为说明. 效果图如下: 1.创建自定义用户控件(添加->新 ...

  4. JDK1.8新特性——使用新的方式遍历集合

    JDK1.8新特性——使用新的方式遍历集合 摘要:本文主要学习了在JDK1.8中新增的遍历集合的方式. 遍历List 方法: default void forEach(Consumer<? su ...

  5. Java生鲜电商平台-生鲜供应链(采购管理)

    Java生鲜电商平台-生鲜供应链(采购管理) 在生鲜供应链系统中采购中心这一模块,它是电商公司管理采购的模块,包含供应商管理,采购订单管理,采购商品管理,在该模块中采购订单是采购中心的核心模块.在其他 ...

  6. PHP odbc_errormsg ODBC 函数

    定义和用法 odbc_errormsg - 获取最后一条错误消息 语法 odbc_errormsg ( [ resource $connection_id ] ) 返回包含最后一个ODBC错误消息的字 ...

  7. 深入浅出js实现继承的7种方式

    给大家介绍7中js继承的方法 有些人认为JavaScript并不是真正的面向对象语言,在经典的面向对象语言中,您可能倾向于定义类对象,然后您可以简单地定义哪些类继承哪些类(参考C++ inherita ...

  8. Service__cmd安装MySQL并连接SQLyog

    整理记录关于使用cmd安装mysql的过程   1.配置环境变量 1) 计算机->属性->高级系统设置->环境变量 2)先添加变量 变量名:MYSQL_HOME 变量值:D:\mys ...

  9. BayaiM__oracle切换归档模式步骤:

    BayaiM__oracle切换归档模式(步骤): ------------------oracle11g设置归档模式和非归档模式--------------------------[root@tes ...

  10. asp.net core全局异常过滤并监控系统BUG将异常信息记录到日志

    添加: using Dw.Util.Helper; using Microsoft.AspNetCore.Mvc.Filters; using System; using System.Collect ...