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

    技术2025-05-01  34

    摘要: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地址,并且能够连接外网

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

    Processed: 0.012, SQL: 9