关于Hyper-V网络设置经验总结(Default Switch/固定IP/SSH)

举报
Yuchuan 发表于 2022/01/09 23:35:46 2022/01/09
【摘要】 Hyper-v设置固定IP

关于Hyper-V网络设置经验总结(Default Switch/固定IP/SSH)
背景
最近想在本机WIN10上创建几个Centos用于做几个试验,在VMWare、VirtualBox和Hyper-V中选择了Hyper-V,原因是VMWare免费版不能商用(在公司里最好不要用);Windows的Docker据说从VirtualBox也换成了Hyper-V,所以也不用VirtualBox(我不用界面,所以要求也不高)。

需求
我对虚机网络的基本需求是:

可以通过本机SSH工具(如Putty或XShell)连接虚机(所以虚机最好有固定IP);
虚机可以上外网,用于执行yum下载软件之类的操作。
试了网上几种方法都不理想,最后自己想到了一种还比较满意的方案,所以总结记录一下。

遇到的问题
1、Default Switch(默认网络)无法设置固定IP
Hyper-V自带一个不能删除的Default Switch虚拟交换机,虚拟机使用该网络可以自动获取IP直接上网。但这个网络的网关地址每次重启后都会改变,所以你无法在虚拟机上设置固定IP用于宿主机SSH访问。

微软官方说明:每次主机重启后Hyper-V会自动找一个未使用的网络然后修改Default Switch的网络地址。

2、自己创建虚拟交换机设置Internet连接共享
网上搜了一把,有一种方式是自己在Default Switch之外创建一个新的虚拟交换机,然后在Windows网络适配器界面里选择当前上网的网卡,在其属性里设置Internet连接共享,里面选择新建的虚拟交换机(IP将自动固定在192.168.137.x网段)。但这种方法不适合我这种一会用有线LAN上网一会用无线WLAN上网的情况,因为每次都需要重新设置Internet连接共享很麻烦。

3、命令行自己创建虚拟交换机及NAT
这是国外网站资料里比较常见的方案,即参考https://docs.microsoft.com/en-us/virtualization/hyper-v-on-windows/user-guide/setup-nat-network 用命令行创建虚拟交换机,并为其设置一个内网网段,然后为这个网段设置NAT,最后在虚拟机里设置静态IP以及DNS。这个方法确实可以达到我的目的,但是缺点是DNS需要手动设置(比如用阿里的223.6.6.6),不像用Default Switch那样可以自动根据当前的联网情况使用当前的DNS。可用但不完美。

解决方法
最后灵光一闪用双网卡方案解决了问题。大概方案是用虚拟机第一块网卡连接Default Switch自动获得IP和DNS上外网,用第二块网卡设置内部固定IP地址用于宿主机或其它虚拟机SSH连接。具体操作步骤如下:

1、创建内部虚拟交换网络
通过Hyper-V管理器的“虚拟交换机管理”界面创建一个新的虚拟交换机(假设名字为MyPrivateNet,类型为“内部”):
在这里插入图片描述

2、设置内部使用的虚拟交换机的地址

然后到Windows的“网络连接”里把vEthernet(MyPrivateNet)的IP设为固定IP,比如192.168.218.1。这样设置也决定了192.168.218.x就是以后虚拟机的网段:(网段也可自己随心设置)

在这里插入图片描述

3、为虚拟机添加新网卡

在虚拟机上新增加一个网卡,加上原来的网卡,虚拟机就有两块网卡。然后将第一块网络适配器的虚拟交换机选为Default Switch,第二块选择前面新建的MyPrivateNet:

在这里插入图片描述

4、虚拟机内设置两块网卡的网络配置
配置eth0
虚拟机启动后编辑/etc/sysconfig/network-scripts/ifcfg-eth0,把BOOTPROTO改为dhcp,ONBOOT改为yes,如下:

BOOTPROTO=dhcp #保持不变
...
NAME=eth0
DEVICE=eth0
ONBOOT=yes #从no变为yes

配置eth1
注意,如果你是创建虚拟机时就加了一个新网卡,则安装Centos后里面应该已经有/etc/sysconfig/network-scripts/ifcfg-eth1配置文件,如果是安装操作系统之后才新增网卡的,则可以通过以下命令从/etc/sysconfig/network-scripts/ifcfg-eth0拷贝一份修改:

cp /etc/sysconfig/network-scripts/ifcfg-eth0 /etc/sysconfig/network-scripts/ifcfg-eth1

修改重点是把BOOTPROTO设成static;把NAME和DEVICE改为eth1;ONBOOT还是yes;记得删除UUID那行(不能和eth0相同)。最后就是加上IPADDR=192.168.218.2和NETMASK=255.255.255.0(注意:IP必须与MyPrivateNet一个网段,不需要设置GATEWAY)。

BOOTPROTO=static
...
#记得删除UUID那行
NAME=eth1
DEVICE=eth1
ONBOOT=yes
IPADDR=192.168.218.2
NETMASK=255.255.255.0

重启网络:(如果报错就重启虚拟机)

/etc/init.d/network restart

然后就可以从宿主机ssh到该虚拟机了,也可以与其它同网段的虚拟机通讯。
为了以后自己查找方便作此记录。困扰此问题终于从网上找到解决方案:

地址:https://blog.csdn.net/jasonhwang/article/details/115287437

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。