Ubuntu Server 18.04 及更高版本默认使用 netplan 作为网络配置工具,本指南将重点介绍 netplan,同时也会提及旧版系统使用的 ifupdown 工具。

核心概念:网络配置文件的位置
在 Ubuntu Server 中,网络配置文件通常位于 /etc/netplan/ 目录下,当你第一次安装服务器时,这里会有一个默认的配置文件,01-netcfg.yaml 或 50-cloud-init.yaml。
重要提示:
- YAML 文件对空格和缩进极其敏感,切勿使用 Tab 键,必须使用空格。
- 修改配置后,必须运行命令使更改生效。
使用 Netplan (Ubuntu 18.04 及更高版本推荐)
netplan 通过 YAML 文件定义网络,然后使用 networkd 或 NetworkManager 来应用配置,服务器环境中通常使用 networkd。
场景 1:配置静态 IP 地址
这是最常见的服务器场景,假设你的网络信息如下:

- 网卡名称:
ens33(你可以使用ip a命令查看) - IP 地址:
168.1.100 - 子网掩码:
255.255.0(在 netplan 中写成/24) - 网关:
168.1.1 - DNS 服务器:
8.8.8和1.1.1
步骤 1:找到并编辑配置文件
# 进入配置目录 cd /etc/netplan/ # 列出文件,找到你的配置文件,50-cloud-init.yaml ls -l # 使用你喜欢的编辑器打开文件,nano sudo nano 50-cloud-init.yaml
步骤 2:修改配置文件内容 修改为如下格式(务必根据你的实际情况修改网卡名称、IP、网关和DNS):
# This file is generated from information provided by the datasource. Changes
# to it will not persist across an instance reboot. To disable cloud-init's
# network configuration capabilities, write a file
# /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg with the following:
# network: {config: disabled}
network:
version: 2
renderer: networkd # 指定使用 systemd-networkd 来渲染配置
ethernets:
ens33: # 替换成你的网卡名称
dhcp4: no # 禁用 DHCP
addresses:
- 192.168.1.100/24 # 设置你的静态IP地址和子网掩码
routes:
- to: default
via: 192.168.1.1 # 设置你的网关
nameservers:
addresses: [8.8.8.8, 1.1.1.1] # 设置你的DNS服务器
search: [] # 可选,搜索域
字段解释:
version: 2:表示使用 netplan v2 格式。renderer: networkd:指定后端渲染器,服务器环境推荐使用networkd。ethernets:定义以太网设备。ens33:你的网卡名称。dhcp4: no:禁用 IPv4 的 DHCP。addresses:设置一个或多个静态 IP 地址。routes:设置静态路由。to: default指的是默认网关。nameservers:设置 DNS 服务器。
步骤 3:应用并测试配置

保存并关闭编辑器(在 nano 中是 Ctrl+X,Y,Enter)。
# 应用 netplan 配置 sudo netplan apply # 检查配置是否成功应用 ip a show ens33 ping 8.8.8.8 ping google.com
ping 通,说明配置成功,如果遇到问题,可以使用以下命令查看 systemd-networkd 的日志进行排错:
journalctl -u systemd-networkd -f
场景 2:配置 DHCP (自动获取 IP)
如果你希望服务器自动从路由器获取 IP 地址,配置非常简单。
编辑 /etc/netplan/ 下的配置文件:
network:
version: 2
renderer: networkd
ethernets:
ens33: # 替换成你的网卡名称
dhcp4: yes # 启用 DHCP
# 可选:设置一个可选的静态主机名
# optional: true
然后应用配置:
sudo netplan apply
重启后,服务器也会自动获取 IP。
使用 /etc/network/interfaces (传统方法,适用于 Ubuntu 16.04 及更早版本)
在旧版 Ubuntu 中,网络配置文件是 /etc/network/interfaces,虽然新系统不推荐,但了解它仍然有用,尤其是在维护旧服务器时。
步骤 1:编辑配置文件
sudo nano /etc/network/interfaces
步骤 2:配置静态 IP 可能如下:
# The primary network interface
auto ens33 # 开机时自动启用此网卡
iface ens33 inet static # 使用静态 IP 配置
address 192.168.1.100 # IP 地址
netmask 255.255.255.0 # 子网掩码
gateway 192.168.1.1 # 网关
dns-nameservers 8.8.8.8 1.1.1.1 # DNS 服务器
步骤 3:重启网络服务
# 重启整个网络服务 sudo systemctl restart networking # 或者只重启特定网卡 sudo ifdown ens33 && sudo ifup ens33
配置 DHCP:
将 iface 行改为 iface ens33 inet dhcp 即可。
高级场景:配置多网卡 (Bonding)
服务器常使用多网卡来实现负载均衡或冗余,这可以通过 netplan 的 ethernets 和 bonds 配置来实现。
假设有两块网卡 ens33 和 ens37,要将它们绑定成一个名为 bond0 的逻辑网卡,模式为 balance-rr (轮询)。
/etc/netplan/50-cloud-init.yaml 配置示例:
network:
version: 2
renderer: networkd
ethernets:
ens33:
dhcp4: no
ens37:
dhcp4: no
bonds:
bond0:
interfaces: [ens33, ens37] # 指定要绑定的物理网卡
parameters:
mode: balance-rr # 绑定模式,可选:balance-rr, active-backup, lacp, etc.
mii-monitor-interval: 100
addresses:
- 192.168.1.101/24
routes:
- to: default
via: 192.168.1.1
nameservers:
addresses: [8.8.8.8, 1.1.1.1]
应用配置:
sudo netplan apply
你可以使用 ip a show bond0 来查看绑定后的网卡状态。
常用网络命令
无论使用哪种配置方法,以下命令都是日常管理和排错的关键:
| 命令 | 功能 |
|---|---|
ip a 或 ip addr show |
显示所有网络接口的 IP 地址信息 |
ip r 或 ip route |
显示路由表信息 |
ping <hostname_or_ip> |
测试与另一台主机的网络连通性 |
ss -tulnp 或 netstat -tulnp |
显示当前监听的 TCP/UDP 端口 |
systemctl restart networking |
重启网络服务 (Netplan) |
ifdown <interface> & ifup <interface> |
关闭/启动指定网卡 (传统方法) |
journalctl -u systemd-networkd |
查看 systemd-networkd 的日志,用于 Netplan 排错 |
故障排查
如果网络配置不生效,请按以下步骤检查:
- 检查 YAML 语法:这是最常见的问题,确保缩进正确(用空格),没有拼写错误,可以使用
yamllint工具检查。sudo apt install yamllint yamllint /etc/netplan/50-cloud-init.yaml
- 检查网卡名称:
ip a查看到的名称是否和配置文件中的一致。 - 检查服务状态:确保 `
