摘要:Hyper-V中的虚拟机CentOS7能固定IP并且连接外网

保证宿主机的Xshell始终只用同一个IP连接到该虚拟机

新建内部网络虚拟交换机

HYPER-V虚拟机配置内部网络固定IP并连接外网

修改虚拟网卡IP地址

经过第一步后,网络连接中会出现刚刚新建的虚拟网卡"InternalNat"
  • 打开 控制面板-网络和Internet-网络连接
  • 找到刚刚新建出来的虚拟网卡
  • 右击该网卡,属性-网络-Internet协议版本4(TCP/IPv4)
  • 填写固定IP地址,我这里填写的是192.168.137.1,子网掩码255.255.255.0
备注:192.168.137.1这个IP地址恰巧也是Windows网络适配器共享网络所使用的默认IP地址(注册表可修改) HYPER-V虚拟机配置内部网络固定IP并连接外网

应用到虚拟机的网卡上

HYPER-V虚拟机配置内部网络固定IP并连接外网

修改虚拟机网络设置

  • 定位到network-scripts目录,找到并编辑自己的网卡(一般叫ifcfg-eth0)
cd /etc/sysconfig/network-scripts/
sudo vi ifcfg-eth0
  • 主要需要修改以下键值
#dhcp动态获取改为static静态IP
BOOTPROTO=static
#自动启动no改为yes
ONBOOT=yes
#新增以下字段
IPADDR=192.168.137.10
GATEWAY=192.168.137.1
DNS1=192.168.137.1
NETMASK=255.255.255.0
BROADCAST=192.168.137.255
  • 修改完如下图
HYPER-V虚拟机配置内部网络固定IP并连接外网

重启网络服务

sudo service network restart
  • 查看IP
ip a
HYPER-V虚拟机配置内部网络固定IP并连接外网

可以看到修改的配置已经生效

到这一步为止,虚拟机已经使用InternalNat网卡(192.168.137.1)设置了自己的IP(192.168.137.10)

在宿主机上,使用 ping 192.168.137.10,发现能ping通

HYPER-V虚拟机配置内部网络固定IP并连接外网

解决SSH连接虚拟机慢的问题

网络上找到的教程大多数到此为止,但是我自己在实际尝试过程中还发现别的问题:

使用Xshell连接虚拟机,建立连接的过程很慢,大概需要等待半分钟至一分钟左右

让我一度以为我没配置成功或者配置出错或者防火墙阻碍了连接,但是连上之后输入命令一切正常

经搜索后发现,可能是由于虚拟机ssh尝试反向解析客户端的IP地址,如果DNS中没有这个IP的域名解析,则会等到DNS查询超时才会进行下一步,消耗很长时间。

解决办法如下:

  • 继续在虚拟机中编辑
sudo vi /etc/ssh/sshd_config
  • 将 #UseDNS yes 改成 UseDNS no(注意去掉#符号),修改后如下图所示(文件内容有些长,找不到这句话可以使用/UseDNS进行搜索)
HYPER-V虚拟机配置内部网络固定IP并连接外网
  • 保存修改后,重启sshd
sudo service sshd restart
重新使用Xshell连接虚拟机,发现连接速度正常了

此时宿主机能随时随地使用192.168.137.10连接虚拟机,但是虚拟机是无法访问到外网

内部网络-虚拟机访问外网

  • 打开 控制面板-网络和Internet-网络连接
  • 找到宿主机正常联网使用的网卡
  • 右击该网卡,属性-共享
  • 勾选“允许其他网络用户通过此计算机的Internet连接来连接”,然后下拉菜单中选择新建出来的InternalNat虚拟网卡
  • 确定的时候会提示虚拟网卡的IP地址将被设置成192.168.137.1,这个就是前文提到的他是默认的共享网络IP地址,由于之前我本身就设置的137,所以此处点我们不再需要做任何修改
(如果不想用137网段,需要修改注册表默认的共享网络IP地址) HYPER-V虚拟机配置内部网络固定IP并连接外网

点击“是”后,会短暂失去连接,重新使用Xshell连接虚拟机,此时虚拟机已经可以连接外网

HYPER-V虚拟机配置内部网络固定IP并连接外网

到这里,Hyper-V虚拟机配置内部网络固定IP地址,并且能够连接外网

(更换了网络环境,例如无线网络连接切换WiFi,虚拟机就连不上网了,需要重新再设置一下)