Ubuntu Server 的网络配置方式在近年来发生了重大变化,从传统的 /etc/network/interfaces 文件迁移到了更现代、更强大的 netplan。

核心概览:netplan vs. ifupdown
-
现代方式 (Ubuntu 18.04 及更高版本默认):
netplan- 优点: YAML 格式,清晰易懂;通过
systemd-networkd或NetworkManager后端工作,非常灵活;支持复杂的网络场景。 - 配置文件位置:
/etc/netplan/目录下,通常名为01-netcfg.yaml或50-cloud-init.yaml。 - 适用场景: 服务器、容器、虚拟化环境等绝大多数场景。
- 优点: YAML 格式,清晰易懂;通过
-
传统方式 (旧版 Ubuntu 或特定需求):
ifupdown- 优点: 非常成熟稳定,在许多自动化脚本中广泛使用。
- 配置文件位置:
/etc/network/interfaces。 - 适用场景: 需要兼容非常旧的系统或特定脚本时。
除非你有特殊需求,否则强烈建议学习和使用 netplan。
Part 1: 查看当前网络状态
在修改配置前,先了解当前状况。

查看网络接口信息
使用 ip 命令(推荐,比 ifconfig 更现代)。
# 显示所有网络接口的概览信息 ip a # 或者更详细的输出 ip addr show # 查看特定接口,eth0 ip addr show eth0
你会看到类似 eth0, ens33, lo (回环接口) 等名称,注意你的服务器实际使用的接口名。
查看路由表
ip route
查看网络连接状态
# 显示所有已建立的连接 ss -tuln # 或者使用更经典的 netstat netstat -tuln
测试网络连通性
# ping 一个域名或IP ping google.com # 使用更可靠的测试工具,如 curl 或 wget curl -I http://www.baidu.com # 测试 DNS 解析是否正常 nslookup www.google.com
Part 2: 使用 netplan 配置静态 IP 地址
这是最常见的服务器配置需求。
步骤 1: 找到并编辑 netplan 配置文件
配置文件通常在 /etc/netplan/ 目录下,文件名可能是 50-cloud-init.yaml(如果是云服务器,如 AWS, Azure)或 01-netcfg.yaml。

# 列出 netplan 目录下的文件 ls /etc/netplan/ # 使用你喜欢的编辑器打开文件,nano sudo nano /etc/netplan/01-netcfg.yaml
步骤 2: 编写配置
假设你的服务器网卡名为 ens33,你想配置以下静态信息:
- IP 地址:
168.1.100 - 子网掩码:
255.255.0(或/24) - 网关:
168.1.1 - DNS 服务器:
8.8.8和1.1.1
在 01-netcfg.yaml 文件中写入以下内容:
# 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 地址和子网掩码(CIDR 表示法)
gateway4: 192.168.1.1 # IPv4 网关
nameservers:
addresses: [8.8.8.8, 1.1.1.1] # DNS 服务器地址
search: [] # 可选,搜索域
关键点解释:
version: 2: 表示使用 netplan v2 语法。renderer: networkd: 指定网络配置由systemd-networkd服务处理,这是服务器环境下的标准选择,如果你的桌面环境需要,也可以用NetworkManager。ethernets: 定义以太网接口。ens33: 你的网卡名称。dhcp4: no: 明确禁用 DHCP。addresses: IP 地址列表,使用 CIDR 格式(如168.1.100/24)。gateway4: 默认网关。nameservers: DNS 服务器配置。
步骤 3: 应用配置
保存文件后,运行以下命令让 netplan 应用新配置。
# 测试配置文件语法是否正确 sudo netplan try # 如果测试通过,应用配置 sudo netplan apply
netplan try 会尝试应用配置,并在 120 秒后自动回滚(如果网络断开),非常安全。
步骤 4: 验证配置
# 检查 IP 地址是否已更改 ip addr show ens33 # 检查路由表,确认网关已添加 ip route # 测试 DNS 解析 nslookup www.google.com
Part 3: 使用 netplan 配置 DHCP (自动获取 IP)
如果网络环境有 DHCP 服务器,可以配置服务器自动获取 IP。
network:
version: 2
renderer: networkd
ethernets:
ens33:
dhcp4: yes # 启用 DHCP
保存后,同样执行 sudo netplan apply。
Part 4: 高级网络配置
配置多个 IP 地址 (多 IP)
在 addresses 列表中添加多个 IP 即可。
network:
version: 2
renderer: networkd
ethernets:
ens33:
dhcp4: no
addresses:
- 192.168.1.100/24
- 10.0.0.50/24 # 第二个 IP
gateway4: 192.168.1.1
nameservers:
addresses: [8.8.8.8]
配置 Bonding (网卡捆绑)
将多个物理网卡捆绑成一个逻辑接口,以增加带宽和提供冗余。
network:
version: 2
renderer: networkd
bonds:
bond0: # 逻辑接口名
interfaces: [ens33, ens37] # 要捆绑的物理网卡
parameters:
mode: balance-rr # 捆绑模式,balance-rr 为轮询模式
ethernets:
ens33:
dhcp4: no
ens37:
dhcp4: no
# 然后像配置普通网卡一样配置 bond0
interfaces:
bond0:
dhcp4: no
addresses: [192.168.1.101/24]
gateway4: 192.168.1.1
nameservers:
addresses: [8.8.8.8]
配置 Bridge (网桥)
常用于虚拟化环境(如 KVM),将虚拟机连接到物理网络。
network:
version: 2
renderer: networkd
bridges:
br0: # 逻辑网桥名
interfaces: [ens33] # 物理网卡作为网桥的端口
dhcp4: no
# 然后配置网桥的 IP
interfaces:
br0:
dhcp4: no
addresses: [192.168.1.102/24]
gateway4: 192.168.1.1
nameservers:
addresses: [8.8.8.8]
Part 5: 故障排查
如果网络不通,按以下步骤排查:
- 检查物理连接: 网线是否插好?交换机端口灯是否亮?
- 检查接口状态:
ip link show ens33
确保状态是
UP,如果不是,尝试sudo ip link set ens33 up。 - 检查 IP 地址和路由:
ip addr show ip route
