Ubuntu 24.04 双网卡配置:移除指定网卡默认网关实现流量分离
在实际生产环境中,服务器或工作站常常配备多块网卡,连接不同的网络。例如一块网卡连接内网/校园网提供服务访问,另一块连接外网负责出站流量。本教程将演示如何在 Ubuntu 24.04 桌面版上配置双网卡,移除指定网卡的默认网关,实现所有出站流量走单一网关,同时保留另一网卡的入站访问能力。
教程概述
本教程将带你完成在 Ubuntu 24.04 桌面版上配置双网卡的完整过程。内容包括:
- 需求分析:理解双网卡流量分离的应用场景
- 环境检查:查看当前网卡状态和路由表
- 配置清理:整理混乱的 Netplan 配置文件
- 统一配置:创建简洁的单文件网络配置
- 配置加固:通过 NetworkManager 双重保障
- 特殊场景:MAC 地址绑定获取固定 IP
- 故障排查:常见问题与解决方案
一、应用场景与需求分析
1. 典型应用场景
| 场景 | 说明 |
|---|---|
| 校园网/企业网 | 一块网卡连接校园网提供内部服务,另一块连接外网 |
| 服务器双线接入 | 管理网络与业务网络分离 |
| 安全隔离 | 出站流量必须经过特定网关审计 |
| 负载分担 | 入站服务走高带宽网卡,出站走稳定网卡 |
2. 本教程目标
以一台配备双有线网卡的 Ubuntu 24.04 工作站为例:
| 网卡 | IP 地址 | 用途 | 目标配置 |
|---|---|---|---|
| eno1 | 192.168.5.3/24 | 主网卡,出站流量 | 保留默认网关 |
| enp3s0 | 10.1.7.236/21 | 校园网,入站服务 | 移除默认网关 |
配置后效果:
- ✅ 所有出站流量仅走
eno1(192.168.5.1 网关) - ✅
enp3s0保留 IP 地址,10.1.x.x 网段可入站访问 - ✅ Docker 等服务仍可通过 10.1.7.236 访问
二、环境检查
1. 系统要求
- 操作系统:Ubuntu 24.04 LTS 桌面版
- 权限:需要 root 或 sudo 权限
- 网络管理:Netplan + NetworkManager(Ubuntu 桌面版默认)
2. 查看网卡状态
1 | ip addr show |
关键输出(示例):
1 | 2: eno1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP |
3. 查看当前路由表
1 | ip route show |
配置前路由表(问题状态):
1 | default via 192.168.5.1 dev eno1 proto dhcp src 192.168.5.3 metric 50 |
问题分析:
- 存在 两个默认网关,虽然 metric 不同会优先走 eno1
- 但某些情况下流量可能走 enp3s0,不符合安全/管理需求
- 目标是完全移除 enp3s0 的默认网关
4. 查看现有 Netplan 配置
1 | ls -la /etc/netplan/ |
常见混乱状态:
1 | 01-network-manager-all.yaml # 全局 NM 托管 |
问题:多个配置文件可能导致配置冲突,对于系统洁癖用户来说难以维护。
三、配置方案:统一 Netplan 配置
1. 备份原有配置
1 | sudo mkdir -p /etc/netplan/backup |
命令解释:
mkdir -p:创建备份目录(如已存在则不报错)cp *.yaml:备份所有现有配置文件
2. 清理原有配置
1 | sudo rm /etc/netplan/*.yaml |
命令解释:
- 删除所有现有配置文件,准备创建统一配置
- 原配置已备份在
/etc/netplan/backup/目录
3. 创建统一配置文件
1 | sudo tee /etc/netplan/01-netcfg.yaml << 'EOF' |
配置详解:
| 配置项 | 说明 |
|---|---|
renderer: NetworkManager |
使用 NetworkManager 作为后端(桌面版推荐) |
dhcp4: true |
启用 DHCP 获取 IP 地址 |
dhcp4-overrides |
覆盖 DHCP 默认行为 |
route-metric: 50/100 |
路由优先级,数字越小优先级越高 |
use-routes: false |
关键配置:不接受 DHCP 提供的路由(包括默认网关) |
wakeonlan: true |
启用网络唤醒功能(可选) |
4. 设置配置文件权限
1 | sudo chmod 600 /etc/netplan/01-netcfg.yaml |
命令解释:
600:仅 root 用户可读写,保护网络配置安全
5. 应用配置
1 | sudo netplan apply |
可能出现的警告(可忽略):
1 | systemd-networkd is not running, output might be incomplete. |
说明:Ubuntu 桌面版使用 NetworkManager 而非 systemd-networkd,此警告不影响实际功能。
6. 重新激活网络连接
1 | sudo nmcli connection down "netplan-enp3s0" |
命令解释:
- 重启 enp3s0 连接以使新配置生效
- DHCP 将重新获取 IP 地址
7. 验证配置结果
1 | ip route show | grep default |
配置后路由表(目标状态):
1 | default via 192.168.5.1 dev eno1 proto dhcp src 192.168.5.3 metric 50 |
✅ 成功:只剩一个默认网关,所有出站流量走 eno1。
验证 enp3s0 本地路由保留:
1 | ip route show | grep 10.1 |
1 | 10.1.0.0/21 dev enp3s0 proto kernel scope link src 10.1.7.236 metric 100 |
✅ 成功:10.1.0.0/21 本地路由保留,入站访问正常。
四、配置加固:NetworkManager 双重保障
对于 Ubuntu 桌面版,建议额外在 NetworkManager 层面固化配置,防止被 GUI 操作意外覆盖。
1. 检查当前 NM 配置
1 | nmcli connection show "netplan-enp3s0" | grep -E "never-default|ignore-auto-routes" |
预期输出:
1 | ipv4.ignore-auto-routes: 是 |
2. 手动加固(如果未自动同步)
1 | sudo nmcli connection modify "netplan-enp3s0" ipv4.never-default yes |
配置说明:
| 参数 | 说明 |
|---|---|
ipv4.never-default yes |
该连接永远不作为默认网关 |
ipv4.ignore-auto-routes yes |
忽略 DHCP 提供的路由信息 |
3. 双重保障的优势
| 层级 | 配置位置 | 作用 |
|---|---|---|
| Netplan | /etc/netplan/01-netcfg.yaml |
系统级配置,重启后生效 |
| NetworkManager | 连接配置 | 运行时配置,防止 GUI 覆盖 |
五、特殊场景:MAC 地址绑定
场景说明
某些网络环境(如校园网)采用 MAC 地址与 IP 绑定策略,需要指定网卡使用特定 MAC 地址才能获得固定 IP。
配置方法
修改 /etc/netplan/01-netcfg.yaml,添加 macaddress 配置:
1 | network: |
应用配置:
1 | sudo netplan apply |
验证 MAC 地址:
1 | ip link show enp3s0 | grep ether |
预期输出:
1 | link/ether 14:5a:fc:23:74:93 brd ff:ff:ff:ff:ff:ff permaddr 1c:83:41:41:c3:9b |
14:5a:fc:23:74:93:当前使用的 MAC 地址(已修改)permaddr 1c:83:41:41:c3:9b:网卡原始硬件 MAC 地址
六、故障排查
1. 配置应用后网卡丢失 IP
现象:执行 netplan apply 后,enp3s0 的 IPv4 地址消失。
原因:NetworkManager 连接未正确重新激活。
解决方案:
1 | sudo nmcli connection down "netplan-enp3s0" |
2. 服务无法通过原 IP 访问
现象:Docker 等服务无法通过 10.1.7.236 访问。
可能原因:
- DHCP 重新分配了不同的 IP 地址
- MAC 地址绑定环境下 MAC 地址不匹配
检查步骤:
1 | ip addr show enp3s0 | grep "inet " |
解决方案:如果是 MAC 绑定环境,按第五节配置正确的 MAC 地址。
3. 配置文件语法错误
现象:netplan apply 报错退出。
常见错误示例:
1 | Error in network definition: unknown key 'use-gateway' |
解决方案:检查配置文件语法,注意:
use-routes: false是正确的参数(不是use-gateway)- YAML 格式对缩进敏感,使用空格不要用 Tab
- 字符串值建议用引号包裹
验证配置语法:
1 | sudo netplan generate |
4. 重启后配置丢失
现象:重启系统后路由表恢复为双网关状态。
排查步骤:
1 | # 检查 Netplan 配置是否存在 |
解决方案:确保同时配置了 Netplan 和 NetworkManager 加固。
5. 回滚到原始配置
如需恢复原始配置:
1 | sudo rm /etc/netplan/01-netcfg.yaml |
七、配置文件完整示例
基础配置(无 MAC 绑定)
1 | # /etc/netplan/01-netcfg.yaml |
完整配置(含 MAC 绑定)
1 | # /etc/netplan/01-netcfg.yaml |
总结
通过本教程,你已经完成了 Ubuntu 24.04 桌面版的双网卡流量分离配置:
🎉 配置成果
- ✅ 出站流量:仅走主网卡 eno1(192.168.5.x 网段)
- ✅ 入站访问:enp3s0 保留 IP,10.1.x.x 网段可正常访问
- ✅ 配置整洁:从多个混乱文件统一为单一配置文件
- ✅ 双重保障:Netplan + NetworkManager 双层配置,重启稳定
- ✅ 备份可用:原配置备份在
/etc/netplan/backup/
🔧 关键配置项
| 配置项 | 作用 |
|---|---|
use-routes: false |
Netplan 中禁用 DHCP 路由 |
ipv4.never-default yes |
NM 中禁止作为默认网关 |
ipv4.ignore-auto-routes yes |
NM 中忽略自动路由 |
macaddress: "xx:xx:xx:xx:xx:xx" |
指定 MAC 地址(可选) |
📋 快速命令参考
1 | # 查看路由表 |