Ubuntu网卡配置文件的核心答案是:新版Ubuntu(18.04及以上)统一管理在/etc/netplan/目录下的YAML文件,旧版则用/etc/network/interfaces,改完执行sudo netplan apply即刻生效,今天我把这份配置文件的完整玩法、踩坑点和问得最多的几个问题一次讲透。

ubuntu网卡配置文件在哪
不少朋友第一次找网卡配置,习惯性去看/etc/network/interfaces,结果发现里面空空如也,行业共识认为,Ubuntu从18.04开始用Netplan取代了旧版ifupdown,配置文件的主目录固定在/etc/netplan/。
这个目录下通常放着.yaml后缀的文件,最常见的是01-network-manager-all.yaml或者50-cloud-init.yaml(云服务器上常见),我建议你执行这条命令看清楚实际情况:
ls -l /etc/netplan/
区分设备命名规则
网卡名字在配置里容易认错,老规矩是用eth0、eth1,但新版本普遍采用Predictable Network Interface Names,也就是ens33、ens160、enp0s3这种带硬件位置信息的名字,你用ip a或ifconfig -a先确认当前网卡的真实名称,再动笔改配置文件,这一步能避免一半的返工。
云端实例的网卡配置路径
如果你用的是简米云、酷番云这类国内云服务器,ubuntu网卡配置文件可能多了一个cloud-init生成的过程,某些机型重启后配置会被云初始化脚本重置,属于正常行为,别惊讶,直接改YAML里的对应内容即可,之后别再手动去动interfaces文件就行。
Ubuntu静态IP配置步骤
静态IP是局域网服务器最常用的场景,我以Ubuntu 22.04 LTS + Netplan为例,给你一套能直接照抄的流程,重点是把网卡名称替换成你自己机器上的实际名称。
第一步:备份原文件
动手前先做个备份,这个习惯能救你无数次,尤其是远程连接的情况下:
sudo cp /etc/netplan/01-network-manager-all.yaml /etc/netplan/01-network-manager-all.yaml.bak
第二步:编辑YAML配置
用sudo nano /etc/netplan/01-network-manager-all.yaml打开文件,把内容整理成下面这个结构(IP地址和网关按你自己的网段填):
network:
version: 2
renderer: networkd
ethernets:
ens33:
dhcp4: no
addresses:
- 192.168.1.100/24
routes:
- to: default
via: 192.168.1.1
nameservers:
addresses: [223.5.5.5, 119.29.29.29]
这里我把DNS地址写成国内公共DNS,因为在百度搜索“ubuntu静态IP配置方法”的不少朋友是部署网站服务,解析速度也是我考虑到的点。
第三步:应用配置
检查配置语法没问题之后,执行:

sudo netplan try
try模式会先试应用,等十几秒让你确认网络没断,没报错再按回车最终应用,远程SSH操作时强烈建议用try代替apply,万一写错IP地址也不至于把自己锁在门外,确认无误后运行:
sudo netplan apply
用ip a查看IP是否生效,再用ping -c 4 网关IP测一下连通性。
ubuntu网卡配置修改后不生效的排查清单
改完配置发现没动静,这是被问得最多的问题,多数情况下不是Netplan的锅,而是下面这五个细节出了岔子。
YAML缩进和空格问题
YAML对缩进极其敏感,必须用空格不能按Tab,而且层级关系要一致。ethnics:下面每行缩进两个空格,addresses:列表项要再缩进四个空格,一个多余的空格或者不对齐的缩进,直接导致netplan apply报错或静默失效。
渲染器冲突
renderer: networkd是服务器版默认,桌面版经常是renderer: NetworkManager,如果你Ubuntu桌面版想固定IP,建议保留NetworkManager渲染器,或者在文件里明确指定,混用容易造成配置被NetworkManager覆盖,修改后重启又打回原形。
多文件优先级冲突
/etc/netplan/目录下有多个yaml文件时,Netplan按文件名排序合并,后加载的同名配置会覆盖先加载的,设计上01开头的文件优先级最高,别放两个文件里都定义同一块网卡的不同IP地址,否则结果不可控。
cloud-init劫持
云主机整改前,先看一眼/etc/netplan/50-cloud-init.yaml是否存在,存在的话,建议把你的静态IP配置写到50之后的文件里(比如99-custom.yaml),因为cloud-init在重启时会重新生成配置,这时候你需要sudo cloud-init clean --machine-id配合处理,或者直接在云控制台修改弹性IP,这比在系统里改更省心。
配置生效但网络服务没重启
极少数情况下netplan apply成功了,ip a也显示新IP但外网不通,我遇到的多是路由表还有旧网关残留,跑一遍sudo ip route flush default再重新加载配置,问题就能解决。
Ubuntu新旧版本网卡配置对比
不只一个朋友来问“ubuntu网卡配置文件版本区别”,干脆整理成表格,方便你按需查阅。

| Ubuntu版本 | 默认配置文件 | 生效命令 |
|---|---|---|
| 04及以上 | /etc/netplan/.yaml |
sudo netplan apply |
| 04及以下 | /etc/network/interfaces |
sudo systemctl restart networking |
老版本安装netplan怎么处理
有些生产环境还在用16.04跑老业务,想统一配置文件也不是不可能,Ubuntu 16.04可以手动安装netplan,但依赖关系复杂,我不建议强行升级这层组件,在这些机器上继续用interfaces文件里iface eth0 inet static那套写法更稳妥,你不要试图一刀切。
桌面版与服务器版差别
桌面版Ubuntu默认图形化网络管理接管网卡,配置文件里渲染器是NetworkManager,你直接用命令行改YAML当时有效,但重启后可能被图形化设置还原,我的建议是桌面环境直接在“设置→网络→齿轮图标→IPv4”里改静态IP,系统和文件配置是同一个底层,改起来更直观。
双网卡配置的实用场景
做软路由、内网穿透、流量转发的话会遇到双网卡配置,这个问题百度搜“ubuntu双网卡配置”的人也很多,在Netplan下的思路其实很简单:准备两个物理接口,分别定义各自的addresses和routes,默认路由只让其中一张卡走。
network:
version: 2
renderer: networkd
ethernets:
ens33:
dhcp4: no
addresses: [192.168.1.100/24]
routes:
- to: default
via: 192.168.1.1
ens34:
dhcp4: no
addresses: [10.0.0.100/24]
routes:
- to: 10.0.0.0/24
via: 10.0.0.1
改动生效后,用ip route show table main查看默认路由走哪张卡,流量方向不对就用ip rule加策略路由,这部分属于进阶玩法了,有兴趣的可以单独研究。
Ubuntu网卡配置文件常见问题解答
ubuntu网卡配置文件改了不生效怎么办
按顺序检查:先验证DNS和网关IP是否填错,再检查YAML缩进是否符合规则,然后看/etc/netplan/目录下有没有多个文件互相覆盖,都没问题的话,执行sudo netplan apply后立刻用ip addr对照实际地址,再设置一个闲置的vlan接口测试网络状态,通常排查到这三步问题就跑不掉了。
Ubuntu 22.04改静态IP和20.04有区别吗
没有本质区别,两者都用Netplan方案管理ubuntu网卡配置文件,字段语法完全一致,不同的是22.04默认开启了一些网络安全增强属性,但配置静态IP的核心路径没有变化,你在20.04上用的配置文件可以直接搬到22.04上跑,重点确认网卡接口名和实际设备名一致,其它不用大动。
netplan配置语法怎么用
通用格式就是network: version: 2打头,接下来声明ethernets、wifis、bridges等类型,每个类型下再写具体网卡名,官方语法还支持link聚合和VLAN子接口,写这些复杂内容时先把基础字段背熟,再配合netplan generate做静态检查,错误时的报错信息会精确告诉你在第几行出的问题。
