2019/10/23 Hyper-V CentOS7
摘要:Hyper-V中的虚拟机CentOS7能固定IP并且连接外网
保证宿主机的Xshell始终只用同一个IP连接到该虚拟机
新建内部网络虚拟交换机
修改虚拟网卡IP地址
经过第一步后,网络连接中会出现刚刚新建的虚拟网卡"InternalNat"
1.打开 控制面板-网络和Internet-网络连接
2.找到刚刚新建出来的虚拟网卡
3.右击该网卡,属性-网络-Internet协议版本4(TCP/IPv4)
4.填写固定IP地址,我这里填写的是192.168.137.1,子网掩码255.255.255.0
备注:192.168.137.1这个IP地址恰巧也是Windows网络适配器共享网络所使用的默认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
修改完如下图
重启网络服务
sudo service network restart ip a #查看IP
可以看到修改的配置已经生效
到这一步为止,虚拟机已经使用InternalNat网卡(192.168.137.1)设置了自己的IP(192.168.137.10)
在宿主机上,使用 ping 192.168.137.10,发现能ping通
解决ssh连接虚拟机慢的问题
网络上找到的教程大多数到此为止,但是我自己在实际尝试过程中还发现别的问题:
使用Xshell连接虚拟机,建立连接的过程很慢,大概需要等待半分钟至一分钟左右
让我一度以为我没配置成功或者配置出错或者防火墙阻碍了连接,但是连上之后输入命令一切正常
经搜索后发现,可能是由于虚拟机ssh尝试反向解析客户端的IP地址,如果DNS中没有这个IP的域名解析,则会等到DNS查询超时才会进行下一步,消耗很长时间。
解决办法如下:
继续在虚拟机中
sudo vi /etc/ssh/sshd_config
将 #UseDNS yes 改成 UseDNS no(注意去掉#符号),修改后如下图所示(文件内容有些长,找不到这句话可以使用/UseDNS进行搜索)
保存修改后,重启sshd
sudo service sshd restart
重新使用Xshell连接虚拟机,发现连接速度正常了
此时宿主机能随时随地使用192.168.137.10连接虚拟机,但是虚拟机是无法访问到外网
内部网络-虚拟机访问外网
1.打开 控制面板-网络和Internet-网络连接
2.找到宿主机正常联网使用的网卡
3.右击该网卡,属性-共享
4.勾选“允许其他网络用户通过此计算机的Internet连接来连接”,然后下拉菜单中选择新建出来的InternalNat虚拟网卡
5.确定的时候会提示虚拟网卡的IP地址将被设置成192.168.137.1,这个就是前文提到的他是默认的共享网络IP地址,由于之前我本身就设置的137,所以此处点我们不再需要做任何修改
(如果不想用137网段,需要修改注册表默认的共享网络IP地址)
点击“是”后,会短暂失去连接,重新使用Xshell连接虚拟机,此时虚拟机已经可以连接外网
到这里,Hyper-V虚拟机配置内部网络固定IP地址,并且能够连接外网