VMware + Linux(Ubuntu) + 桥接网络知识梳理

文章目录

安装Linux系统后网络不通

问题定位与处理

1. 修改虚拟机设置

  1. 关闭虚拟机
  2. 虚拟机网络适配器
    • 模式:桥接模式
    • 勾选:复制物理网络连接状态
    • 桥接至:在虚拟网络编辑器选择本机正在上网的网卡 (WiFi/有线网卡二选一,别自动)

      解决的问题:物理层连通性
  • 把虚拟网卡 ens33 和宿主机真实的上网网卡(WiFi/有线),通过桥接技术连起来
  • 如果这一步没做好(比如桥接选错了网卡),虚拟机的网络数据根本传不到路由器,Ubuntu 里再怎么折腾也拿不到IP
  • 这一步是前提条件,必须先做

2. Ubuntu 系统内修复

解决的问题:系统层网络配置

  • 让 Ubuntu 正确开启 DHCP 自动获取,拿到路由器分配的 IP、网关、DNS
  • 如果这一步没做好(比如配置了静态IP、NetworkManager异常),就算桥接物理连接是通的,系统也不会主动去路由器申请IP,自然上不了网
  • 这一步是必要条件,必须在物理连接正常后做
方法1:自动获取IP(最常用)
bash 复制代码
# 重启网络
sudo systemctl restart NetworkManager
# 释放重新获取IP
sudo dhclient -r
sudo dhclient
方法2:关闭冲突

Ubuntu 的 netplan 配置文件,只要放在 /etc/netplan/ 目录下,文件名不影响,核心规则是:

  1. 文件名以数字开头(比如 00-01-),数字决定加载顺序
  2. 后缀必须是 .yaml.yml
  3. 系统会按数字从小到大依次加载这些文件
bash 复制代码
# 关闭Netplan静态冲突
sudo nano /etc/netplan/00-installer-config.yaml

清空里面内容,粘贴:

yaml 复制代码
network:
  ethernets:
    ens33:
      dhcp4: true
  version: 2

保存退出 Ctrl+O 回车 Ctrl+X

应用配置:

bash 复制代码
sudo netplan apply

3. 其他问题排查

  1. 本机开了VPN/代理 → 关掉,桥接极易冲突
  2. 宿主机防火墙拦截 → 临时关闭Windows防火墙
  3. Ubuntu网卡名不对
    查看网卡名:
bash 复制代码
ip a

把上面ens33改成你看到的网卡名(eth0/ens160等)

4. 测试

bash 复制代码
ping www.baidu.com

网络不通的原因、这样改在系统内部发生了什么

一、桥接模式不通网根本原因

1. 桥接模式原理

桥接 = 虚拟机直接当成局域网里一台独立电脑

  • 和你电脑同网段、同路由器
  • 路由器DHCP给虚拟机分配内网IP
  • 外网流量直接走路由器,不走宿主机转发
2. 最常见不通网5个真实原因
  1. 桥接选错网卡
    电脑连WiFi却桥接到有线网卡,物理不通,自然没网。
  2. Netplan配置错乱
    装系统时手动填过静态IP,DHCP自动获取被关闭,拿不到地址。
  3. 宿主机防火墙/360/火绒拦截
    禁止虚拟机桥接网卡收发数据包。
  4. 虚拟网卡服务异常
    VMware/VirtualBox虚拟网桥服务没启动。
  5. 路由器限制
    开启MAC绑定、IP黑名单、设备数量限制,不给虚拟机分配IP。

二、每一步修改作用+原理

1. 虚拟机设置:桥接指定上网网卡

改了什么

桥接至 → 选中正在上网的物理网卡 (WiFi/有线)
发生了什么

虚拟机网络数据流精准对接真实上网网卡,不再乱匹配空网卡。

2. dhclient -r && dhclient

作用

  • -r:释放当前无效IP
  • 重新向路由器DHCP服务器 申请新内网IP
    解决:旧IP失效、IP冲突、没拿到IP
3. 修改 netplan yaml 配置

原问题:

之前配置写了静态IP,强行固定地址,不和路由器自动匹配,自然上不了网。

写入这段:

yaml 复制代码
network:
  ethernets:
    ens33:
      dhcp4: true
  version: 2

实际发生

  1. 关闭手动静态IP
  2. 开启DHCP自动获取IPv4
  3. 让虚拟机主动找路由器要IP、网关、DNS
  4. 完全和手机、电脑一样自动联网

sudo netplan apply

= 不重启电脑,立刻生效网络配置

4. 重启NetworkManager

作用:重置Ubuntu网络管理服务,清空异常网络缓存、断开错误连接。


三、整套操作完整逻辑链

故障根源

虚拟机桥接网卡匹配错误 + 系统禁用自动IP获取 → 无IP、无网关、无DNS → 无法联网

修复流程逻辑

  1. 虚拟机层面:打通物理通路(选对上网网卡)
  2. 系统层面:取消手动固定IP
  3. 开启自动向路由器获取网络参数
  4. 重置网络服务刷新状态
  5. 拿到正确IP→网关→DNS→正常访问外网

四、最简单判断你是哪种故障

  1. ip a 网卡没有 192.168.x.x 内网IP
    → 没拿到地址,用dhclient重新获取
  2. 有内网IP,但ping不通网关
    → 桥接网卡选错/宿主机防火墙拦截
  3. 能ping网关,ping不通百度
    → DNS错误,改公共DNS即可

分配的IP地址,重启后会不会变化,如何处理

IP地址**不是固定的**,重启后大概率会变,原因:

  • 这个IP是路由器的 DHCP服务 临时分配给你的,叫「动态IP」
  • 分配规则:租约(valid_lft)有时间限制,图里你看到的 6821sec 就是剩余租约时间(大概1.9小时)
  • 租约到期/重启后,路由器会重新给你分配IP,不一定还是101,也可能是102、103等,只要没人用就行。

没有写入到netplan文件里,是DHCP服务器(路由器)临时分配的,只存在于当前会话中。

它的完整生成过程是这样的:

  1. 虚拟机桥接模式 :把 ens33 网卡桥接到你宿主机的物理网卡,让虚拟机和宿主机在同一个局域网里。
  2. 虚拟机发出请求:Ubuntu的NetworkManager会通过DHCP协议,向路由器发送「我要IP地址」的广播请求。
  3. 路由器分配IP :路由器收到请求后,从它的「可用IP池」(比如 192.168.0.100~200)里,挑一个没人用的IP(比如101),连同子网掩码、网关、DNS一起发给虚拟机。
  4. 虚拟机接收并使用 :虚拟机把这些参数配置到 ens33 网卡上,就能上网了。

这个过程完全由路由器控制,不是你系统里的文件写死的。

Ubuntu开启「DHCP自动获取IP」

方案1:保持 renderer: NetworkManager

  • 原理:让Netplan把所有网卡的控制权,交给Ubuntu桌面版自带的「图形网络管理工具」(NetworkManager)。
  • 它的工作方式:你在图形界面看到的「有线连接」,其实就是NetworkManager在后台帮你做这些事:
    • 监听网卡状态
    • 自动发起DHCP请求
    • 处理IP、网关、DNS的配置
  • 为什么能解决问题:你之前的网络不通,大概率是NetworkManager服务异常,或者桥接网卡没选对,导致它没法正常发起DHCP请求。重启服务+选对网卡后,它就能正常工作了。

方案2:在Netplan里直接写 dhcp4: true

bash 复制代码
network:
  version: 2
  renderer: NetworkManager
  ethernets:
    ens33:  # 改成你自己的网卡名,用 ip a 查看
      dhcp4: true
  • 原理:绕过NetworkManager,直接让Netplan自己来配置网卡,强制开启DHCP自动获取。
  • 它的工作方式:Netplan直接把配置写入系统底层的网络配置文件(比如systemd-networkd),直接发起DHCP请求,不依赖NetworkManager服务。
  • 为什么能解决问题:如果NetworkManager本身出了问题(比如服务崩溃、配置冲突),直接让Netplan接管,就可以跳过故障点,直接完成DHCP请求。

两者的区别,该怎么选?

对比项 方案1:NetworkManager管理 方案2:Netplan直接DHCP
适用场景 Ubuntu桌面版(带图形界面) 服务器版/无图形界面的系统
配置方式 图形界面点一点,就能改IP、开关网络 只能改yaml文件,再netplan apply生效
IP控制 可以在图形界面设置「自动/手动IP」 只能通过yaml文件配置
维护难度 新手友好,有问题重启服务就行 更底层,出问题需要查配置文件

想让IP固定不变,怎么办?

方法1:路由器端设置「静态IP绑定」(不碰系统)

  • 登录你的路由器后台,找到「DHCP静态绑定/IP与MAC绑定」
  • 把你虚拟机 ens33 的MAC地址(比如 00:0c:29:cc:b0:f3),和你想要的IP(比如 192.168.0.111)绑定
  • 这样路由器每次都会给这个MAC地址分配同一个IP,永远不会变。

方法2:在Ubuntu里设置静态IP(修改配置)

编辑你现在的 01-network-manager-all.yaml,改成:

yaml 复制代码
network:
  version: 2
  renderer: NetworkManager
  ethernets:
    ens33:
      addresses:
        - 192.168.0.101/24
      gateway4: 192.168.0.1  # 你的路由器网关,ip route 可以查到
      nameservers:
        addresses: [192.168.0.1, 8.8.8.8]

然后执行 sudo netplan apply 生效,这样IP就固定了。

ens33虚拟网卡与路由器

一、ens33 是什么?是虚拟网卡吗?

是的,ens33 就是虚拟机里的「虚拟网卡」,它是这么来的:

  • 它是 VMware 为你的 Ubuntu 虚拟机虚拟出来的一块网卡,就像你给电脑插了一张虚拟的"有线网卡"。
  • 在桥接模式下,VMware 会把这块 ens33 虚拟网卡,直接桥接到你宿主机真实的 WiFi/有线网卡上。
  • 对 Ubuntu 来说,它看到的就是一张叫 ens33 的"物理网卡",根本意识不到这是虚拟出来的。

你可以把它理解成:

VMware 给 Ubuntu 做了一根虚拟网线,一头插在虚拟机的 ens33 上,另一头直接插到了你家里路由器的网口上(通过宿主机的真实网卡中转)。


二、给你分配 IP 的路由器,就是你家真实 WiFi 的路由器吗?

没错,就是你家真实的 WiFi 路由器

整个流程是这样的:

  1. 你的宿主机(Windows 电脑)连到了家里的 WiFi 路由器,拿到了 192.168.0.x 网段的 IP。
  2. VMware 桥接模式下,把虚拟机的 ens33 网卡,直接"接"到了同一个路由器的局域网里。
  3. 路由器的 DHCP 服务 发现了虚拟机这个新设备,就从它的地址池里,给虚拟机分配了 192.168.0.101 这个 IP。
  4. 所以你的虚拟机和你的手机、电脑,现在都在同一个局域网里,IP 都是同一个网段的。

举个更形象的例子:

你家路由器就像一个小区,宿主机是你家,虚拟机是你邻居家。桥接模式下,虚拟机直接住进了这个小区里,和你用同一个物业(路由器)、同一个门牌号规则(IP 地址)。


补充:为什么 NAT 模式就不一样?

顺便帮你区分一下,避免搞混:

  • 桥接模式:虚拟机 = 小区里的独立住户,路由器直接给它分配公网IP。
  • NAT 模式:虚拟机 = 住在你家里的客人,它的所有网络请求都要通过你家(宿主机)转发,路由器只看到你家这一个设备。

你现在桥接模式下,虚拟机和宿主机是平级的,都直接和路由器通信。


如果你想验证一下,可以在 Ubuntu 里执行:

bash 复制代码
ip route

你会看到默认网关是 192.168.0.1,这就是你家路由器的真实管理地址,和你手机/电脑上看到的网关是同一个。

相关推荐
TechWayfarer4 小时前
街道级IP定位的技术边界:IP精准定位服务在本地生活场景的落地实践
大数据·网络·python·tcp/ip·生活
少年攻城狮4 小时前
阿里云系列---【申请域名并绑定到主机ip】
linux·服务器·tcp/ip·阿里云·云计算
XiYang-DING4 小时前
【Java EE】TCP—连接管理
网络·tcp/ip·java-ee
周末也要写八哥4 小时前
TCP三次握手与四次挥手的过程
java·网络·tcp/ip
汤愈韬4 小时前
hcip-security_防火墙高可靠技术4—双机热备结合NAT
网络·网络协议·网络安全·security
BIG_PEI4 小时前
如何判断Linux服务器上是否安装了rabbitmq
linux·服务器·rabbitmq
陳10304 小时前
Linux:System V 消息队列与信号量
linux·运维·服务器
辣椒思密达4 小时前
大规模数据采集如何稳定使用海外住宅IP?3种实战方法
网络·网络协议·tcp/ip
xhbh6664 小时前
Linux转发完全教程:ip_forward开启、iptables端口映射、双网卡NAT实战
服务器·网络·智能路由器·端口转发·端口映射·映射