Hyper-V 虚拟机设置静态 IP 和外网访问

2024-03-30 14:12

本文主要是介绍Hyper-V 虚拟机设置静态 IP 和外网访问,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 环境说明
  • 1 问题简介
  • 2 解决过程

环境说明

  • 宿主机操作系统:Windows 11 专业版
  • 漏洞复现操作系:debian-live-12.5.0-amd64-standard

1 问题简介

在 Windows 上用自带的 Hyper-V 虚拟机管理应用创建了一个 Debian 12 虚拟机,配置静态 IP 的时候出了点问题。

Hyper-V 默认有一个 Default Switch 内部网络虚拟交换机,由于自动配置了 NAT 服务,所以在上面的虚拟机可以访问物理网络。但是问题是,这个默认的每次重启都会自动改变 IP, 即使你在网络适配器里手动设置了 IP 也没用。

2 解决过程

步骤01、

使用 Hyper-V 的图形界面向导创建虚拟交换机,图形界面的过程展示,如图所示。

在这里插入图片描述

步骤02、

新建虚拟网络交换机,输入名称,选择内部网络,点击确定,如图所示。

在这里插入图片描述

在这里插入图片描述

步骤03、

右键选中需要设置的虚拟机的设置选项,弹出如下框,选择刚才新建的 Debian 12 的虚拟交换机,点击确定,之后便可重启虚拟机使之生效,如图所示。

在这里插入图片描述

在这里插入图片描述

步骤04、

在宿主机的网络设置,打开控制面板->网络和共享中心->更改适配器设置: 找到刚刚在 Hyper-V 上新增的虚拟网络交换机,右键选择属性,如图所示。

在这里插入图片描述

步骤05、

选择如下 IPv4 协议,设置如下 IP 地址和子网掩码,其他可留空,IP地址必须是192.168.X.1 的设置,这里的 X=1 是刚才我们在 Debian 12 上设置的网段,需保持一致,如图所示。

在这里插入图片描述

步骤06、

然后给 Debian 12 虚拟机设置静态 IP 和 DNS nameserver,重启验证下,如图所示。

# /etc/resolv.conf
nameserver 8.8.8.8
nameserver 8.8.4.4# /etc/network/interfaces
source /etc/network/interfaces.d/*# The loopback network interface
auto lo
iface lo inet loopback# The primary network interface
auto eth0
# iface eth0 inet dhcp
iface eth0 inet static
address 192.168.20.20
netmask 255.255.255.0
gateway 192.168.20.1

在这里插入图片描述

这里遇到了一个问题,设置好 IP 在同一个网段后,宿主机可以 ping 通虚拟机,但是虚拟机没法 ping 通宿主机。这和 Hyper-V 内部类型网络的描述不相符啊,后来坑了好久,才发现是宿主机防火墙禁掉了 ping 的 icmp 协议包,通过 telnet 其他放开的端口验证确实没问题。

步骤06、

Hyper-V NAT 网络设置固定 IP / DHCP

Hyper-V 默认的 Default Switch 同时支持了 NAT 网络以及 DHCP,虚拟机能够访问外网。
但使用过程中发现这个 IP 网段经常变化,而且 Hyper-V 没有提供管理其 NAT 网络与 DHCP 的图形化界面功能。
如果开发者需要同时管理多个 VM,且在局域网中无法为他们单独分配固定 IP 时,使用可自行配置的 NAT 网络显得尤为重要。
本文提供一种自定义管理 Hyper-V NAT 网络的方法,虚拟机能够通过固定 IP 连接至该网络,且能够访问外网。

添加一个虚拟交换机能够支持 192.168.20.0 / 24 网段,并能够将 Debian 12 虚拟机通过固定IP连接到该网段。
支持物理机与虚拟机的相互访问,且支持虚拟机访问外网。

以管理员身份启动PowerShell ,执行下列命令,如图所示。

New-NetNat -Name Static-NAT -InternalIPInterfaceAddressPrefix 192.168.20.0/24

其中 Static-NAT 为新建 NAT 对象的名称,可根据实际情况自行设定;

192.168.20.0/24 为需要NAT的内网地址,注意是网络地址。

在这里插入图片描述

需要注意的是,Windows 系统只能同时为一个网段提供 NAT 服务。

步骤07、

到这里就已经配置完成了,验证外网是否可以访问,如图所示。

在这里插入图片描述

步骤08、

如果你配置成功了,这一步可以忽略。

操作失误或需要修改 NAT 网络时,可以删除之前的创建的 NAT 网络,进行下面前你应该确认仅有一个 NAT 网络,如图所示。

# 确认获取到的 NAT 只有一个且是你想要删除的
Get-NetNat # 删除 NAT 网络
Get-NetNat | Remove-NetNat # 删除 NetIPAddress 命令
Remove-NetIPAddress -InterfaceAlias "vEthernet (NAT)"

有时会出现 NAT 网络无法访问外网的情况,一般与移动热点、电脑睡眠、网络环境变化等情况有关。
如果开启了 Win10 自带的“移动热点”功能,可尝试将其关闭,再查看网络是否正常。
实在不行只有重启物理机了~~

在这里插入图片描述

这篇关于Hyper-V 虚拟机设置静态 IP 和外网访问的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/861707

相关文章

MySQL中的InnoDB单表访问过程

《MySQL中的InnoDB单表访问过程》:本文主要介绍MySQL中的InnoDB单表访问过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、背景2、环境3、访问类型【1】const【2】ref【3】ref_or_null【4】range【5】index【6】

前端如何通过nginx访问本地端口

《前端如何通过nginx访问本地端口》:本文主要介绍前端如何通过nginx访问本地端口的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、nginx安装1、下载(1)下载地址(2)系统选择(3)版本选择2、安装部署(1)解压(2)配置文件修改(3)启动(4)

Qt 设置软件版本信息的实现

《Qt设置软件版本信息的实现》本文介绍了Qt项目中设置版本信息的三种常用方法,包括.pro文件和version.rc配置、CMakeLists.txt与version.h.in结合,具有一定的参考... 目录在运行程序期间设置版本信息可以参考VS在 QT 中设置软件版本信息的几种方法方法一:通过 .pro

Spring Boot 实现 IP 限流的原理、实践与利弊解析

《SpringBoot实现IP限流的原理、实践与利弊解析》在SpringBoot中实现IP限流是一种简单而有效的方式来保障系统的稳定性和可用性,本文给大家介绍SpringBoot实现IP限... 目录一、引言二、IP 限流原理2.1 令牌桶算法2.2 漏桶算法三、使用场景3.1 防止恶意攻击3.2 控制资源

PostgreSQL 默认隔离级别的设置

《PostgreSQL默认隔离级别的设置》PostgreSQL的默认事务隔离级别是读已提交,这是其事务处理系统的基础行为模式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价... 目录一 默认隔离级别概述1.1 默认设置1.2 各版本一致性二 读已提交的特性2.1 行为特征2.2

一文详解MySQL如何设置自动备份任务

《一文详解MySQL如何设置自动备份任务》设置自动备份任务可以确保你的数据库定期备份,防止数据丢失,下面我们就来详细介绍一下如何使用Bash脚本和Cron任务在Linux系统上设置MySQL数据库的自... 目录1. 编写备份脚本1.1 创建并编辑备份脚本1.2 给予脚本执行权限2. 设置 Cron 任务2

mtu设置多少网速最快? 路由器MTU设置最佳网速的技巧

《mtu设置多少网速最快?路由器MTU设置最佳网速的技巧》mtu设置多少网速最快?想要通过设置路由器mtu获得最佳网速,该怎么设置呢?下面我们就来看看路由器MTU设置最佳网速的技巧... 答:1500 MTU值指的是在网络传输中数据包的最大值,合理的设置MTU 值可以让网络更快!mtu设置可以优化不同的网

SpringBoot服务获取Pod当前IP的两种方案

《SpringBoot服务获取Pod当前IP的两种方案》在Kubernetes集群中,SpringBoot服务获取Pod当前IP的方案主要有两种,通过环境变量注入或通过Java代码动态获取网络接口IP... 目录方案一:通过 Kubernetes Downward API 注入环境变量原理步骤方案二:通过

MySQL 设置AUTO_INCREMENT 无效的问题解决

《MySQL设置AUTO_INCREMENT无效的问题解决》本文主要介绍了MySQL设置AUTO_INCREMENT无效的问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参... 目录快速设置mysql的auto_increment参数一、修改 AUTO_INCREMENT 的值。

详解Linux中常见环境变量的特点与设置

《详解Linux中常见环境变量的特点与设置》环境变量是操作系统和用户设置的一些动态键值对,为运行的程序提供配置信息,理解环境变量对于系统管理、软件开发都很重要,下面小编就为大家详细介绍一下吧... 目录前言一、环境变量的概念二、常见的环境变量三、环境变量特点及其相关指令3.1 环境变量的全局性3.2、环境变