You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Hyper-V上Ubuntu 22.04静态IP配置后vEthernet显示未识别网络及外网流量转发问题求助

Hyper-V上Ubuntu 22.04静态IP配置后vEthernet显示未识别网络及外网流量转发问题求助

嘿,我来帮你一步步搞定这个问题——这种未识别网络+外网流量转发的配置在Hyper-V里确实容易踩坑,咱们先解决未识别网络的核心问题,再搞定外网访问的配置。

一、先搞定vEthernet「未识别网络」的问题

这个现象大多是因为主机端的vEthernet接口没有正确配置,导致Windows没法识别网络类型。

  • 第一步:配置主机的vEthernet接口
    打开「网络连接」,找到对应内部虚拟交换机的vEthernet接口(比如叫「vEthernet (Internal Switch)」),右键选「属性」→ 双击「Internet 协议版本4 (TCP/IPv4)」,设置静态参数:

    • IP地址:比如设为192.168.50.1(要和你的VM IP在同一子网,比如VM计划用192.168.50.10)
    • 子网掩码:255.255.255.0(根据你的子网需求调整)
    • DNS服务器:可以填公共DNS比如8.8.8.8,或者你内网的DNS地址
      设置完之后,Windows应该会自动识别这个网络为「专用网络」,不会再显示「未识别网络」了。
  • 第二步:确保Ubuntu VM的静态IP配置正确(Ubuntu 22.04用Netplan)
    登录Ubuntu VM,先查网卡名称:ip a,找到对应的网卡(比如enp0s3或者eth0)。
    编辑Netplan配置文件:sudo nano /etc/netplan/00-installer-config.yaml(如果没有这个文件,就找/etc/netplan/目录下的其他yaml文件)
    写入以下配置(替换成你的实际信息):

    network:
      ethernets:
        enp0s3:  # 替换成你的网卡名
          addresses: [192.168.50.10/24]  # VM的静态IP+子网掩码
          gateway4: 192.168.50.1  # 主机vEthernet的IP,作为VM的网关
          nameservers:
            addresses: [8.8.8.8, 1.1.1.1]  # 公共DNS或内网DNS
      version: 2
    

    保存退出(Ctrl+O → 回车 → Ctrl+X),然后应用配置:sudo netplan apply。
    测试一下:ping 192.168.50.1(主机IP),再ping baidu.com,能通就说明网络基础配置没问题了。

二、配置外网流量转发到VM

要让外网访问你的nginx服务,需要做主机IP转发、NAT配置、端口映射,还要放行防火墙规则。

  • 第一步:开启主机的IP转发和NAT
    打开管理员权限的PowerShell,执行以下命令:

    1. 启用vEthernet接口的IP转发:
      Set-NetIPInterface -InterfaceAlias "vEthernet (你的内部交换机名称)" -Forwarding Enabled
      
      注意替换引号里的名称,比如你的交换机叫「Internal Switch」,就写vEthernet (Internal Switch)。
    2. 创建NAT网络(子网要和你之前设置的一致):
      New-NetNat -Name "InternalNAT" -InternalIPInterfaceAddressPrefix 192.168.50.0/24
      
  • 第二步:配置端口转发(把外网80端口转到VM的80端口)
    还是在管理员PowerShell里执行:

    Add-NetNatStaticMapping -NatName "InternalNAT" -ExternalIPAddress "0.0.0.0/0" -ExternalPort 80 -InternalIPAddress "192.168.50.10" -InternalPort 80 -Protocol TCP
    

    如果需要HTTPS服务,再执行一遍,把命令里的80换成443即可。

  • 第三步:防火墙放行流量

    1. Windows主机防火墙:打开「Windows Defender防火墙」→「高级设置」→「入站规则」→「新建规则」,选择「端口」,下一步勾选TCP,输入80(和443),下一步选「允许连接」,完成规则创建。
    2. Ubuntu VM防火墙:如果启用了ufw,执行以下命令放行nginx端口:
      sudo ufw allow 80/tcp
      sudo ufw allow 443/tcp
      sudo ufw reload
      

三、额外注意(主机在路由器后方的情况)

如果你的主机是通过家用路由器上网的,还需要在路由器后台设置端口转发:把路由器的80/443端口转发到主机的内网IP(比如主机在路由器子网里是192.168.1.100),这样外网请求才能通过路由器到达你的主机,再转发到VM。

现在可以测试一下:用一台不在你内网的设备,访问你的主机公网IP的80端口,应该能看到nginx的默认页面了。

备注:内容来源于stack exchange,提问作者DanConsultant

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.23 11:44:10