【Hyper-v 管理器虚拟机配置内网外网固定ip】

本文转自:https://blog.csdn.net/qq_34340582/article/details/129241425

1.1. Default Switch(Hyper-v默认虚拟网卡)无法设置固定ip

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

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

1.2. 解决方法

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

1.2.1. 创建内部虚拟交换网络

通过Hyper-V管理器的“虚拟交换机管理器”界面创建一个新的虚拟交换机(假设名字为privateNet,类型为“内部”):
【Hyper-v 管理器虚拟机配置内网外网固定ip】_第1张图片

1.2.2. 设置内部使用的虚拟交换机的地址

然后到Windows的“网络连接”里把vEthernet(privateNet)的IP设为固定IP,比如172.16.xxx.xxx。这样设置也决定了172.16.xxx.xxx就是以后虚拟机的网段:(网段根据自己网络环境设置)
【Hyper-v 管理器虚拟机配置内网外网固定ip】_第2张图片
【Hyper-v 管理器虚拟机配置内网外网固定ip】_第3张图片

1.2.3. 为虚拟机添加新网卡

在虚拟机上新增加一个网卡,加上原来的网卡,虚拟机就有两块网卡。然后将第一块网络适配器的虚拟交换机选为Default Switch,第二块选择前面新建的privateNet:
【Hyper-v 管理器虚拟机配置内网外网固定ip】_第4张图片
【Hyper-v 管理器虚拟机配置内网外网固定ip】_第5张图片

1.2.4. 虚拟机内设置两块网卡的网络配置

配置eth0

虚拟机启动后编辑/etc/sysconfig/network-scripts/ifcfg-eth0,把BOOTPROTO改为dhcp,ONBOOT改为yes,

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

【Hyper-v 管理器虚拟机配置内网外网固定ip】_第6张图片

配置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=172.16.xxx.xxx和NETMASK=255.255.xxx.0(注意:IP必须与privateNet一个网段,不需要设置GATEWAY)。

BOOTPROTO=static
#删除UUID那行
NAME=eth1
DEVICE=eth1
ONBOOT=yes
IPADDR=172.16.xxx.xxx
NETMASK=255.255.xxx.0

【Hyper-v 管理器虚拟机配置内网外网固定ip】_第7张图片

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

/etc/init.d/network restart
或者 reboot

重启后后就可以从宿主机ssh到该虚拟机了,也可以与其它同网段的虚拟机通讯。
【Hyper-v 管理器虚拟机配置内网外网固定ip】_第8张图片

总结

可能还有其它解决方案,但目前是我用过最有效的方法了。
如有其它更好的解决办法,请评论区留言一起探讨!

你可能感兴趣的:(#,VMware,+,Hyper-v,tcp/ip,网络协议,网络)