刚接触 Ubuntu 的时候,我干过一件蠢事:在虚拟机里装好系统,用 DHCP 自动获取地址跑得挺好;第二天重启,SSH 连不上了,IP 变了,我只能屁颠屁颠跑回机房接显示器看新地址。那一刻我就明白,凡是需要长期稳定连接的 Linux 机器,固定 IP 不是“可选项”,是“必选项”。
这篇东西不打算写成一本正经的官方文档,就把我这些年踩过的坑、反复用到的配置方式、以及排查链路里最容易被忽略的细节,一次性整理出来。不管你是刚把 Ubuntu 装进 VMware 的新手,还是被公司网络逼着改静态地址的老油条,这篇文章都能让你少走弯路。
固定 IPv4 这件事,听起来只是改几个数字,但实际涉及 Netplan、systemd-networkd、NetworkManager、DHCP 保留、路由表和 DNS 优先级一堆东西。我先从最常见的场景讲起,再逐步深入。
1. 配置固定 IP 前的三件套:看清网卡名、搞懂网络模式、找准配置文件
1.1 先搞清楚你的网卡叫什么名字
传统 Linux 网卡名是 eth0、eth1,但从 Ubuntu 18.04 开始,systemd 的命名规则接管了一切,网卡名变成了 eno1、ens33、ens192、enp0s3 这种带总线位置的名称。很多网上教程直接让你改 eth0,如果你照抄,大概率会得到一个“无可用的配置文件”报错。
怎么看自己机器的网卡名?跑这条:
bash复制ip addr show
或者更精确一点:
bash复制ip link show
输出结果里你会看到类似这样的内容:
bash复制2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 00:0c:29:12:34:56 brd ff:ff:ff:ff:ff:ff
inet 192.168.1.100/24 brd 192.168.1.255 scope global dynamic ens33
看到 dynamic 这个关键字没?这说明你这块网卡正以 DHCP 方式从路由器接收地址。这里的 ens33 就是网卡名称,后面所有配置都要基于这个名字,别弄错了。
1.2 物理机、虚拟机、云服务器的网络模型差异
固定 IP 这事儿在不同环境下,实现路径差别非常大。我不止一次看到有人在云服务器上折腾 Netplan,改完直接 SSH 断连——因为云平台的网络模型根本不是传统物理网络。
| 环境 | 网络模型 | 推荐配置方式 |
|---|---|---|
| 物理机/VMware/ VirtualBox(桥接模式) | 直接暴露在局域网,地址由路由器 DHCP 分配 | 改 Netplan 静态配置 |
| VMware 的 NAT 模式 | 宿主机做网关,虚拟机隐藏在后端网段 | 改 Netplan + 确认虚拟网络编辑器参数 |
| VirtualBox 默认 NAT | 虚拟机出网靠 NAT,外部无法直接访问 | 尽量不使用,要固定用桥接 |
| 云服务器(阿里云/AWS等) | 底层虚拟化 + 云平台配置 | 在云控制台设置固定内网 IP,系统层只保持默认即可 |
重点提醒一句:云服务器千万别在系统里面乱改 IP,这不是经验,是我当年亲手把自己从某云服务器上“踢下来”的教训——内网 IP 是云平台下发的,你改了系统配置,控制台都不知道,问题就变成“明明配置没问题,网络就是不通”。
1.3 从 /etc/network/interfaces 到 Netplan:配置文件时代的分水岭
如果你在百度上搜 Ubuntu 固定 IP,搜出来的结果可能还是老一套:改 /etc/network/interfaces,添加 auto eth0、iface eth0 inet static 之类的老代码。这套玩法在 Ubuntu 16.04 及以前确实没问题,但 Ubuntu 18.04 之后,系统默认的网络配置管理工具已经切换到 Netplan。
Netplan 是一个 YAML 配置的前端抽象层,它接收 /etc/netplan/*.yaml 文件的配置描述,然后根据配置里的 renderer(默认情况下有 networkd 和 NetworkManager 两种后端)生成对应的底层配置文件。
我见过不少人跳过这一步,直接改后端配置文件,结果系统一重启配置被覆盖,白白折腾半天。正确顺序永远是先弄懂你的 YAML 写在哪儿,改完之后再去应用,别绕到后端的配置文件里去做文章,那是下策。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. Netplan YAML 手把手配置:从 DHCP 到静态地址的完整切换流程
2.1 找到正确的 YAML 文件
Netplan 的配置文件位于 /etc/netplan/ 目录,具体文件名因系统版本有些差别。最常见的两种:
00-installer-config.yaml(Ubuntu Server 18.04 及以上安装器默认生成)01-network-manager-all.yaml(桌面版通常走 NetworkManager 后端)
查看当前文件内容:
bash复制cat /etc/netplan/00-installer-config.yaml
如果是 Server 版默认安装,大概率你会看到类似这样的配置:
yaml复制network:
ethernets:
ens33:
dhcp4: true
version: 2
这行配置的意思是:让 ens33 网卡通过 DHCPv4 获取地址,其他规则一概不管。我们的目标就是把这段配置改成固定 IP。
2.2 静态地址配置的最小完整示例
要改的 YAML 文件内容如下,我直接给一个可以“抄作业”的完整版本:
yaml复制network:
version: 2
renderer: networkd
ethernets:
ens33:
dhcp4: no
dhcp6: no
addresses:
- 192.168.1.88/24
routes:
- to: default
via: 192.168.1.1
nameservers:
addresses:
- 192.168.1.1
- 223.5.5.5
- 8.8.8.8
search:
- localdomain
逐行解释一下,这对理解 YAML 的意义比直接复制粘贴重要得多:
dhcp4: no:明确关闭 IPv4 DHCP,告诉系统不要再向路由器求地址了。addresses:这里写你要指定的静态 IP,格式必须带子网掩码长度(CIDR)。192.168.1.88/24表示 IP 是 192.168.1.88,掩码是 255.255.255.0。很多人只写192.168.1.88不写/24,Netplan 会直接报错。routes:配置默认网关。to: default是默认路由的代称,via后面写你的路由器管理地址。有的机器用gateway4这个选项,但 Netplan 已经弃用它了,新版本会报警告,所以直接用routes最稳妥。nameservers.addresses:这里配置 DNS 服务器。我都建议把路由器和公共 DNS 都加上,形成冗余。223.5.5.5 是国内访问速度不错的阿里 DNS,8.8.8.8 是谷歌 DNS,你按需选择,没有绝对标准,但一定要确保列表里有至少一个可达的 DNS。
还有 search 这个选项,如果你所在的局域网有内部域名解析需求才需要配置,没有这个需求就别画蛇添足。
2.3 应用配置的正确姿势与备份策略
改完 YAML 文件之后,先做语法检查再应用,这个习惯能帮你免掉 90% 的“网络挂了”事故:
bash复制sudo netplan generate
这条命令的作用是让 Netplan 读取 YAML 配置并生成后端配置文件。如果 YAML 有问题,这里就会直接报错,不会影响当前运行中的网络。
确认语法无误后,接着执行:
bash复制sudo netplan apply
这条命令会立即把新配置生效到系统。但注意,如果你是通过 SSH 远程连接的,执行完这一步一定要做好心理准备:IP 可能瞬间变化,连接会断开。你需要在本地终端(或者云控制台的 VNC)窗口从头连接新 IP。
我用 server 版时最推荐的实操流程其实是这样的——先备份,再改配置,然后分两步应用:
bash复制sudo cp /etc/netplan/00-installer-config.yaml /etc/netplan/00-installer-config.yaml.bak
sudo nano /etc/netplan/00-installer-config.yaml
# 修改完成后,先做 dry-run 之类的测试(但 netplan 无 dry-run)
# 实测更稳妥的做法是直接重启网络服务,而不是 netplan apply 硬切
sudo netplan apply
重启网络服务的方式:
bash复制sudo systemctl restart systemd-networkd
如果你是桌面版(renderer 是 NetworkManager),重启服务可能不够,直接重启网络管理:
bash复制sudo systemctl restart NetworkManager
之后用 ip addr show 确认 ens33 上是否绑定了新地址。
2.4 验证配置是否生效的关键命令
照完镜子才知道自己长什么样,配置也一样,得验。验证固定 IP 是否生效,三连命令走一遍:
bash复制ip addr show ens33
ip route show
resolvectl status
ip addr:看网卡地址、掩码是否变成你配置的静态 IP。ip route:看默认路由是否通过你设置的网关出去。resolvectl status:看 DNS 是否生效,这个最容易被忽略,很多人配完 IP 能 ping 通网关但上不了网,原因就是 DNS 解析失败。
测通外网和域名解析:
bash复制ping -c 4 223.5.5.5
ping -c 4 www.baidu.com
第一条验证三层连通性,第二条验证 DNS 解析加连通性,两条都通才算真的搞定。
3. 桌面版用户的另一条路:通过 GUI 与 NetworkManager 设置固定 IP
如果你用的是 Ubuntu Desktop,且当前系统网络是由 NetworkManager 管理的,那其实不用去编辑 YAML 文件,图形界面就能完成大部分工作。这在很多转载教程里没讲清楚——图形界面里“手动”填 IP 的具体含义,值得展开说。
3.1 图形界面完整步骤
- 点击右上角网络图标,选择“有线设置”(Wired Settings)。
- 在设置界面中点击当前连接旁边的齿轮图标(设置按钮)。
- 切换到“IPv4”或“IPv6”选项卡。
- 把“地址”(Addresses)的配置方式从“自动(DHCP)”改为“手动”(Manual)。
- 填入地址、掩码和网关。注意图形界面填地址时,掩码是单独一栏,不需要写 CIDR。
- 在 DNS 栏填入 DNS 服务器地址,用逗号分隔多个地址。
- 点击“应用”(Apply),然后关闭并重新打开网络连接开关,让配置生效。
这样操作完,桌面版也能固定 IP。但这里有个小坑:桌面版的 NetworkManager 和 Netplan 之间有个“谁说了算”的问题。如果你的 /etc/netplan/ 下的 YAML 文件里面 renderer 写的是 NetworkManager,那么图形界面的修改会被 NetworkManager 直接管理,Netplan 文件反而成了摆设。反过来,如果 renderer: networkd,图形界面改了可能也不会立刻让你看到效果,因为它俩的后台管理方式是分开的。
3.2 GUI 配置的适合人群与局限
图形界面适合什么场景?临时改一下马上用、或者对 YAML 语法还不熟的新手。但它有个让我痛苦过的毛病:NetworkManager 在有多个连接配置文件的时候,会出现“配置了静态 IP 但没用上”的现象——因为它默认激活了“自动连接”的那个 DHCP 配置,你改的静态配置根本不在当前活跃连接上。
这种时候用命令行反而更快,可以先把当前连接断开,再确保静态配置文件的 autoconnect 选项为真。我个人的经验是:桌面版如果要长期固定 IP,还是老老实实编辑 Netplan 的 YAML,把 renderer 设置为 networkd,然后把 NetworkManager 的服务停掉。当然这会牺牲桌面右下角点两下就连 WiFi 的便利性,自己权衡罢。
3.3 nmcli 命令行:不打开界面也能配置固定 IP
如果实在不想碰 YAML,同时又不想点鼠标,可以用 nmcli 命令搞定。这套玩法在 Ubuntu Server 上装了 NetworkManager 之后也能用:
bash复制# 先查看当前连接名称,不是网卡名,是 NetworkManager 的连接名
nmcli con show
# 假设连接名是 ens33,IP 配置从 DHCP 改为静态
nmcli con mod ens33 ipv4.addresses 192.168.1.88/24
nmcli con mod ens33 ipv4.gateway 192.168.1.1
nmcli con mod ens33 ipv4.dns "223.5.5.5 8.8.8.8"
nmcli con mod ens33 ipv4.method manual
# 重启连接让配置生效
nmcli con down ens33 && nmcli con up ens33
需要注意的是 nmcli con mod 修改的是连接配置,不是直接改当前生效状态。改完必须重新激活连接(down 再 up),而且如果当前这台机器正在走这个网卡跑业务,断开重连期间会闪断,提前做好准备。
4. 固定 IP 后依旧翻车:一张排查表带你定位 90% 的问题
固定 IP 这件事,本身配置不复杂,真正折磨人的是配完之后网络不通但你又不知道为什么。列出我这十年运维生涯里高频出现的翻车场景和对应排查手段。
4.1 IP 冲突:两个设备用同一个地址,网络时好时坏
这是刚设置完静态 IP 最容易踩的问题。你设了 192.168.1.88,路由器 DHCP 池又是从 192.168.1.100 开始分配,但家里另外一台手机可能已经被分到了 192.168.1.88——因为你设备之前用 DHCP 租到的地址还在租约期内,或者有人手动指定过同 IP。
症状非常典型:刚配置完静态 IP 能 ping 通一会儿,过几分钟又断,再 ping 网关也通,但是时延忽高忽低,甚至提示 Destination Host Unreachable。
排查思路:
bash复制# 查看局域网内有没有冲突地址,用 arp 扫描目标网段的全部在线设备
# 安装 arp-scan 前提:本机已有网络的某个出口
sudo apt install arp-scan
sudo arp-scan --interface=ens33 192.168.1.0/24
如果发现有两个不同 MAC 地址响应同一个 IP,恭喜,冲突实锤。解法:一个改地址避开冲突段,另一个在路由器 DHCP 地址池里做静态 DHCP 绑定。
4.2 网关地址写错导致的内网通、外网不通
内网能 ping 通,外网完全出不去,这是排查顺序里的第二大经典场景。我在给一台 Ubuntu Server 配固定 IP 时,把网关填成了 192.168.1.2——因为那台机器的网口上贴着“网关 192.168.1.2”的标签,我却没意识到那标签是别的交换机管理地址。
排查手段:
bash复制ip route show
ping -c 3 192.168.1.1 # 能通说明内网可达
ping -c 3 223.5.5.5 # 不通说明问题在出网链路
如果内网正常、外网不通,拿到路由表看一眼,默认路由的 via 地址是不是你真实的路由器管理地址。跟你路由器实际管理地址做一次确认,最简单的办法就是从另一台能正常上网的电脑上执行 ip route 对比。
4.3 DNS 配置缺失导致的上不了网
这类问题最容易伪装成“路由器坏了”。现象是你能 ping 通网关,也能 ping 通公网 IP 地址如 223.5.5.5,但访问任何网站解析不了域名。
检查 DNS 是否配置正确:
bash复制resolvectl status
cat /etc/resolv.conf
注意,/etc/resolv.conf 在 Ubuntu 18.04 之后通常是软链接指向 systemd-resolved 生成的临时文件,你手动编辑它会发现重启后内容被覆盖。正确的做法永远是去 Netplan 里面配置 DNS,而不是直接改这个文件。
如果 resolvectl 输出显示配置的 DNS 没有生效,可以临时指定一下:
bash复制systemd-resolve --set-dns=223.5.5.5 --interface=ens33
但这只是临时,重启又没了。正解还是回到 Netplan 的 YAML 里把 nameservers 写清楚,重新 apply。
4.4 掩码长度搞错:能通自己、不能通网关
这个错误的隐蔽程度很高。如果你的静态 IP 写的是 192.168.1.88/24,网关是 192.168.1.1,两者必须在同一子网段。如果你不小心写成了 /16,而你的路由器掩码是 /24,大概率会出现“自 ping 通、ping 网关通、ping 网关延迟高,但外网完全不通”的状况。排查思路:
ip addr看掩码是否和局域网其他机器一致;- 对比同局域网一台正常机器的掩码,通常都是 255.255.255.0(/24),如果是 /16 或 /23,就要调整 CIDR。
4.5 虚拟机环境里的特殊坑:VMware 虚拟网络编辑器干扰
用虚拟机装 Ubuntu 的读者特别多,我专门提一下。VMware 的 NAT 模式里,虚拟机的网段是由 VMware 的虚拟网络编辑器决定的,不是你想设什么就设什么。你可以在宿主机上打开 VMware → 编辑 → 虚拟网络编辑器 → 选择 VMnet8,查看它的子网 IP 段。比如它显示 192.168.88.0/24,那你的 Ubuntu 虚拟机里静态 IP 就必须设成 192.168.88.x,网关是 192.168.88.2(VMware NAT 默认网关是 .2)。同理,桥接模式下则要看你实际的局域网参数,把 VMware 虚拟网卡的 IP 段跟你公司/家庭路由器保持同一网段,否则虚拟机之间通信会变得稀奇古怪。
| 排查症状 | 优先检查项 | 验证命令 |
|---|---|---|
| 内网通、外网不通 | 默认路由网关地址 | ip route show |
| DNS 解析失败 | nameservers、/etc/resolv.conf | resolvectl status |
| IP 冲突,时好时坏 | ARP 扫描同 IP 不同 MAC | arp-scan |
| ping 自己通,ping 网关超时 | CIDR 掩码是否匹配 | ip addr show ens33 |
| 虚拟机重启后地址变回 DHCP | 网卡 DHCP 是否完全关闭 | cat /etc/netplan/*.yaml |
| 配置了静态 IP 但 GUI 连不上 | NetworkManager 与 networkd 后端冲突 | 查看渲染器配置 |
5. 重启后配置丢失、桌面版连不上网:冷门但致命的三个细节
5.1 重启丢配置:你的 YAML 文件权限或者语法被自动修复了
Netplan 比较较真,对 YAML 文件的权限有要求。如果你的配置文件让其他人可写,Netplan 会拒绝加载,报错类似:
bash复制PermissionError: [Errno 13] Permission denied: '/etc/netplan/00-installer-config.yaml'
正解是权限收紧:
bash复制sudo chmod 600 /etc/netplan/00-installer-config.yaml
另外,YAML 文件里禁止出现制表符(tab),必须用空格缩进。这个错误极其隐蔽,因为 YAML 本身不报错,但 Netplan 解析完之后某些字段被忽略了,导致你感觉“改了个寂寞”。用 cat -A 可以看文件里有没有 tab 符号,出现 ^I 就说明有 tab。
5.2 网卡没被 Netplan 接管:Ubuntu Server 安装器留下的隐藏配置
有时候你改了 /etc/netplan/ 下的 YAML,netplan apply 也执行了,但网卡状态纹丝不动。这时候要检查一下有没有其他配置文件也在管同一块网卡。Ubuntu Server 安装器偶尔会同时生成多个 YAML 文件,比如 00-installer-config.yaml 和 99_config.yaml,文件名越小的优先级越高——但优先级不是“覆盖”,而是“合并同一新键判断”。如果两个文件里同时定义了一个网卡,可能后面的配置会覆盖前面的,或者直接合并出冲突。
我的建议是简单粗暴:把 /etc/netplan/ 目录下的非必要文件全部移到备份目录,只留一个 YAML,避免多文件互相打架。
5.3 NetworkManager 和 systemd-networkd 打架:谁抢到了网卡控制权
这个话题在桌面版尤其常见。桌面版安装时默认的 renderer 是 NetworkManager,它会无差别接管所有网卡。你如果用 networkd 后端写了一套静态配置,而 NetworkManager 同时也连上了网,两个服务会试图控制同一网卡,最终 Netplan 应用的时候可能报错。
排查方法:
bash复制systemctl status NetworkManager
systemctl status systemd-networkd
如果两个服务都在跑,看谁在占用 ens33:
bash复制nmcli device status
解决途径:如果确定要使用 Netplan + networkd,可以停掉 NetworkManager,让它别再管有线连接:
bash复制sudo systemctl stop NetworkManager
sudo systemctl disable NetworkManager
反之,如果你习惯了 NetworkManager,就在 Netplan 的 YAML 文件顶部设置 renderer: NetworkManager,确保 Netplan 生成的配置交给 NetworkManager 解释。两个后端二选一,别同时管一块网卡,这是铁律。
5.4 Ubuntu 桌面版“已连接但无法上网”的一个隐藏原因
还有个我不太愿意回想的事情,某次给 Ubuntu 20.04 桌面版配完静态 IP,网络图标显示“已连接”,但浏览器打不开任何网页,ping 网关通,ping 223.5.5.5 通,就是域名解析失败。
最后排查半天才发现,问题出在系统里沿用旧 DHCP 的 DNS 配置残留,/run/systemd/resolve/ 下的 stub 文件指向了 127.0.0.53,但本机并没有运行 systemd-resolved 服务。这属于典型的“系统组件半吊子状态”。
解法:
bash复制# 查看系统 DNS 解析状态
systemctl status systemd-resolved
# 如果 stub 文件挂了,重装一下相关组件
sudo systemctl enable --now systemd-resolved
sudo ln -sf /run/systemd/resolve/stub-resolv.conf /etc/resolv.conf
顺带一提,桌面版那个“网络”设置界面可能出现“IPv4 手动配置无法保存”的 bug,这通常是 GNOME 设置面板与后台的连接配置冲突。你可以先删除掉旧的连接配置,重新建立一个,或者直接放弃界面用 nmcli。
6. 进阶玩法与避坑经验:DHCP 保留绑定、双网卡静态路由与我的工作流
如果你只是想让一台 Ubuntu 设备固定下来,前面几节内容已经足够。但如果你在搞服务器、边缘网关、甚至软路由这种稍微复杂的东西,有一些进阶思路可以帮你省掉未来工作中的大麻烦。
6.1 DHCP 保留绑定:路由器的“伪固定 IP”策略
有种思路很多老运维都在用:不在系统里配置静态 IP,而是在路由器里把设备的 MAC 地址绑定一个固定地址。这样设备永远以 DHCP 方式获取地址,但获取到的结果每次都是一样的。
这种方式的好处是:不用碰任何系统配置,不会出现静态 IP 配置和网络环境冲突的问题,而且将来 DHCP 网段变了你改路由器一个地方就行。
坏处是:你的设备离开这个路由器环境就失效了。所以适合用在公司内部服务器、打印机、NAS 这种不会移动的设备上。
具体操作不展开了,但路径基本统一:路由器后台 → DHCP 服务器 → 静态地址保留(Address Reservation)→ 添加 MAC 地址和 IP。前提是你得先拿到设备的 MAC,在 Ubuntu 上执行 ip link 看到的 link/ether 那串就是。
6.2 双网卡场景和设备重启后的静态路由
如果你有一台 Ubuntu 同时接了内网和公网,或者同时接了两个网段,静态 IP 之后还需要考虑路由策略问题。Netplan 里可以写多条路由规则:
yaml复制network:
version: 2
ethernets:
ens33:
dhcp4: no
addresses:
- 192.168.1.88/24
routes:
- to: default
via: 192.168.1.1
- to: 10.0.0.0/8
via: 192.168.2.1
ens34:
dhcp4: no
addresses:
- 192.168.2.88/24
这样做的效果是:去往 10.x.x.x 段的内网请求走 ens34 那条链路,默认的互联网走 ens33。注意这里有个坑,如果两个网卡都配了默认路由,系统会出现路由竞争。实际测试下来系统会选 metric 值更小的那条,所以如果你真的要做策略路由,更复杂的需求要上 ip rule + ip route 多路由表方案,Netplan 的 YAML 这块支持不够灵活。建议路由策略简单一点,别让系统在两个默认路由之间摇摆。
6.3 我的实际操作流:三步完事但绝不裸奔
最后说一下我目前配置 Ubuntu 固定 IP 的个人工作流。不一定适合所有人,但至少已经让我这十年里少浪费了很多时间:
- 拿到机器后第一件事,先做
/etc/netplan/备份,配置文件名改成00-bak-xxx.yaml或挪到/root/backup/,防止系统已存在配置干扰。 - 只在 YAML 文件里维护一份配置,不需要花哨。我会顺便把
optional: true这一行加上(针对带 DHCP 情况下某些环境启动卡顿的问题),保证 systemd 不会因为没有 DHCP 响应而卡住网络启动流程。 - 配上静态地址后,立刻在另一台机器上用
nmap -sP或者arp-scan测一遍是否有 IP 冲突,再验证ping和外网 DNS,如果这几项都过了,再收工。
加上 optional: true 的完整 YAML 示例:
yaml复制network:
version: 2
renderer: networkd
ethernets:
ens33:
dhcp4: no
addresses:
- 192.168.1.88/24
routes:
- to: default
via: 192.168.1.1
nameservers:
addresses:
- 223.5.5.5
- 192.168.1.1
optional: true
这条 optional 的作用是:如果启动时网卡没连网线或后端没准备好,它不会无限期地等待导致系统启动卡住几分钟。特别是你在无头服务器上配置完固定 IP 后,重启时如果没有网络环境,systemd-networkd-wait-online 会一直等到超时,加上它之后,至少启动流程不会因为这破事卡住。
6.4 最后给新手的几句忠告
配置固定 IP 看起来是 Linux 基础得不能再基础的技能,但它的诡异之处恰在于:不同版本、不同桌面环境、不同虚拟机模式下的行为都有差异。网上的教程往往只讲其中一种环境,你照搬了不一定适用。
所以别管教程怎么牛,最终判别标准永远是三条:ping 通网关,ping 通外网 IP,nslookup 能解析域名。这三步验证都过了,配置就是对的;哪一步失败,就对着上面的排查表去查。把这套思维固定下来,你的 Ubuntu 网络配置能力就真正过关了。
