Ubuntu服务器配置网络的核心是编辑netplan配置文件,掌握YAML语法和常见参数即可实现静态IP、DNS和路由设置。
Ubuntu 静态IP配置文件的编写方法
静态IP是服务器场景中最常用的网络配置方式,Ubuntu从17.10版本开始默认使用netplan作为网络配置工具,配置文件统一存放在/etc/netplan/目录下,后缀为.yaml,绝大多数情况下,你只需要操作这一个文件就能完成所有网络参数设定。
找到并备份当前配置文件
登录服务器后,先查看当前生效的配置文件:
ls /etc/netplan/
常见文件名有01-netcfg.yaml、00-installer-config.yaml或50-cloud-init.yaml,强烈建议在修改前备份原始文件:
sudo cp /etc/netplan/01-netcfg.yaml /etc/netplan/01-netcfg.yaml.bak
这样就算配置出错,也能快速回滚。
编写静态IP配置示例
使用sudo nano /etc/netplan/01-netcfg.yaml打开文件,清空内容后填入以下配置(以网卡名ens33为例):
network:
version: 2
renderer: networkd
ethernets:
ens33:
addresses:
- 192.168.1.100/24
routes:
- to: default
via: 192.168.1.1
nameservers:
addresses:
- 8.8.8.8
- 8.8.4.4
dhcp4: false
- addresses:指定IP地址和子网掩码,格式为CIDR。
- routes:定义默认网关,
to: default表示0.0.0.0/0。 - nameservers:DNS服务器地址,可填多个。
- dhcp4: false:关闭DHCP,启用静态IP。
注意:Ubuntu 20.04及更新版本已弃用gateway4字段,统一使用routes方式,如果你仍在使用旧版语法,gateway4: 192.168.1.1也能工作,但官方建议迁移到routes。
应用配置并验证
保存后执行以下命令使配置生效:
sudo netplan apply
用ip addr show ens33确认IP地址,用ip route show default检查默认路由,用ping -c 4 8.8.8.8测试外网连通性,如果配置有误,netplan apply会提示语法错误,此时可快速恢复备份文件后重新修改。
多网卡场景下的静态IP配置
当服务器有多个物理网卡时,在ethernets下并列添加接口即可:
ethernets:
ens33:
addresses: [192.168.1.100/24]
routes: [{to: default, via: 192.168.1.1}]
nameservers: {addresses: [8.8.8.8]}
ens34:
addresses: [10.0.0.100/24]
# 该网卡仅用于内网,不设默认网关
不同网卡可配置不同网段、不同DNS,甚至不同路由策略,netplan都支持。
多网卡与路由配置详解
生产环境中,服务器可能需要同时连接内网和外网,或者需要自定义路由表,netplan提供了强大且清晰的配置方式。
配置多个网关与策略路由
如果内网和外网各有一个网关,需要指定默认路由的优先级,例如外网网关为192.168.1.1,内网网关为10.0.0.1,且希望默认流量走外网:
routes:
- to: default
via: 192.168.1.1
metric: 100
- to: 10.0.0.0/8
via: 10.0.0.1
metric: 200
metric值越小优先级越高,这样内网段走内网网关,其余流量走外网网关,无需额外配置。
使用netplan绑定多个网卡(Bonding)
对于高可用或带宽聚合场景,可在netplan中配置bonding,例如绑定eth0和eth1为bond0:
bonds:
bond0:
interfaces: [eth0, eth1]
parameters:
mode: 802.3ad
mii-monitor-interval: 100
addresses: [192.168.1.200/24]
routes: [{to: default, via: 192.168.1.1}]
netplan会调用内核的bonding模块,无需额外安装软件。
Ubuntu 配置DNS的常见问题
DNS配置是网络配置中容易出错的部分,很多用户配置了静态IP,却无法解析域名,问题往往出在DNS设置上。
在netplan中配置DNS
在netplan的nameservers部分,可以指定多个DNS服务器和搜索域:
nameservers:
addresses:
- 8.8.8.8
- 114.114.114.114
search:
- localdomain
- example.com
search用于自动补全短域名,非必需,配置后执行sudo netplan apply即可。
检查DNS是否生效
使用resolvectl status(Ubuntu 18.04+)查看当前DNS服务器列表,如果netplan配置的DNS未出现,可能是systemd-resolved缓存或配置冲突,可尝试重启systemd-resolved服务:
sudo systemctl restart systemd-resolved
若仍不生效,检查/etc/resolv.conf是否为systemd-resolved的软链接(ls -l /etc/resolv.conf),如果是,netplan的配置应通过systemd-resolved自动写入,如果该文件被手动修改过,会被锁定,导致配置失效。行业共识认为,保持/etc/resolv.conf为软链接是最稳妥的做法。
传统ifupdown下的DNS配置
对于Ubuntu 16.04及更早版本,编辑/etc/network/interfaces,在接口配置中加入dns-nameservers 8.8.8.8,但这类系统已逐渐退出主流,建议升级后使用netplan。
Ubuntu 网络配置命令和工具
掌握必要的命令能让你快速排查和验证配置。
核心命令清单
- netplan apply:应用配置,立即生效。
- netplan try:安全测试,配置错误时自动回滚(60秒超时)。
- netplan generate:将YAML配置转换为后端配置(NetworkManager或systemd-networkd)。
- ip a:查看所有接口及IP地址。
- ip route:查看路由表。
- resolvectl status:查看DNS解析状态。
- ping:测试连通性。
- traceroute:追踪路由路径(需安装
traceroute)。
排查配置错误的实用流程
- 运行
netplan try,若提示超时或错误,系统会自动回滚,不会导致断网。 - 如果已
apply且网络中断,可通过服务器控制台(IPMI、iDRAC或物理显示器)登录,手动恢复备份文件。 - 使用
journalctl -u systemd-networkd查看networkd日志,定位具体错误原因。 - 检查
/etc/netplan/下是否有多个配置文件,netplan按字母顺序合并,后者可能覆盖前者,建议只保留一个主文件。
Ubuntu 配置网络文件常见问题解答
Q1:Ubuntu 18.04和20.04在静态IP配置上有什么区别?
主要区别在于默认渲染器,18.04可能使用NetworkManager(桌面版)或networkd(服务器版),而20.04服务器版统一使用renderer: networkd,另外20.04已弃用gateway4,建议使用routes方式定义默认网关,配置语法整体兼容,但推荐按官方最新文档编写。
Q2:配置静态IP后无法上网,但IP地址已生效,如何排查?
首先检查默认路由:ip route show default,确保网关IP正确且可达,其次检查DNS:resolvectl status,确认DNS服务器是否可访问,尝试直接ping 8.8.8.8,若通但域名不通,是DNS问题;若都不通,检查网关和上层防火墙,最后确认/etc/resolv.conf是否为软链接,若不是,恢复为指向/run/systemd/resolve/stub-resolv.conf的软链接。
Q3:修改netplan后如何快速回滚?
如果使用了netplan try,在60秒内按回车确认即可永久应用,否则自动回滚,若已netplan apply且网络中断,可通过控制台运行sudo cp /etc/netplan/01-netcfg.yaml.bak /etc/netplan/01-netcfg.yaml还原备份,再执行sudo netplan apply,没有备份时,可临时进入紧急模式或单用户模式,删除或修改配置文件后重启。
配置Ubuntu服务器的网络看似琐碎,但只要理解netplan的YAML结构,并掌握备份、应用、回滚的流程,就能快速应对各种网络需求,一个稳定的网络配置是服务器可靠运行的基础,值得花时间彻底搞懂。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/536224.html



