当前位置: 首页 > news >正文

别再为Ubuntu 18.04多网卡上网发愁了!保姆级netplan配置教程,永久设置有线/无线优先级

Ubuntu 18.04多网卡优先级管理:Netplan实战指南

在开发环境或服务器部署中,我们常常遇到这样的场景:一台Ubuntu 18.04主机需要同时通过有线网络连接内网资源,又需要通过无线网络访问互联网。当系统同时激活多个网络接口时,默认的路由选择机制可能导致网络访问异常——比如无法通过浏览器上网,或者apt-get无法下载软件包。本文将深入解析如何通过Netplan实现网络接口的优先级管理,确保关键流量始终走指定路径。

1. 理解网络优先级的核心机制

路由metric值是决定网络接口优先级的核心参数。这个1-9999的整数值代表了系统对某条路由路径的"成本评估":metric值越小,优先级越高。当目标地址匹配多条路由时,系统会自动选择metric最低的路径。

在典型的双网卡场景中:

  • 有线网络(如eno1):通常连接企业内网,需要访问本地服务器和资源
  • 无线网络(如wlp3s0):连接互联网,用于软件更新和外部访问

若两者metric相同(常见默认值100),系统可能出现:

  1. 内网访问走无线网关,导致延迟增加
  2. 外网访问走有线网关,造成连接失败
  3. 接口间产生路由竞争,引发间歇性断网

通过route -n命令可查看当前路由表及metric分配:

$ route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0 192.168.1.1 0.0.0.0 UG 100 0 0 eno1 0.0.0.0 10.0.0.1 0.0.0.0 UG 600 0 0 wlp3s0

关键观察点:默认路由(0.0.0.0)对应的Gateway和Metric值,这决定了出口流量的实际路径

2. Netplan配置基础解析

作为Ubuntu 18.04及之后版本的默认网络配置工具,Netplan采用YAML格式的配置文件取代了传统的/etc/network/interfaces。其核心优势在于:

  • 声明式配置:只需描述期望的网络状态,无需编写复杂脚本
  • 后端无关:支持networkd和NetworkManager两种渲染器
  • 原子应用:通过netplan try提供配置回滚保护

典型配置文件位于/etc/netplan/目录,常见命名如:

  • 50-cloud-init.yaml(云环境)
  • 01-netcfg.yaml(物理机)

基础结构示例如下:

network: version: 2 renderer: networkd ethernets: eno1: dhcp4: true dhcp4-overrides: route-metric: 200 wifis: wlp3s0: dhcp4: true dhcp4-overrides: route-metric: 100 access-points: "SSID": password: "your_password"

3. 多网卡优先级配置实战

3.1 静态IP与动态DHCP的metric设置

根据网络环境不同,metric配置存在两种典型模式:

场景A:静态IP配置

ethernets: eno1: dhcp4: false addresses: [192.168.1.100/24] routes: - to: 0.0.0.0/0 via: 192.168.1.1 metric: 150 nameservers: addresses: [8.8.8.8, 1.1.1.1]

场景B:DHCP覆盖配置

ethernets: eno2: dhcp4: true dhcp4-overrides: route-metric: 200

关键区别:

配置类型适用场景metric设置位置优先级
静态IP固定网络环境routes条目下更高
DHCP覆盖动态获取IPdhcp4-overrides下更低

3.2 多接口复杂路由配置

对于需要同时管理有线、无线及VPN等复杂场景,可配置多层级路由:

network: version: 2 ethernets: eno1: dhcp4: false addresses: [192.168.1.50/24] routes: - to: 192.168.1.0/24 metric: 50 - to: 0.0.0.0/0 via: 192.168.1.1 metric: 200 eno2: dhcp4: true dhcp4-overrides: route-metric: 300 wifis: wlp3s0: dhcp4: true dhcp4-overrides: route-metric: 100 access-points: "OfficeWiFi": password: "securepassword"

此配置实现:

  1. 内网192.168.1.0/24流量强制走eno1(最低metric 50)
  2. 互联网流量优先走无线(metric 100)
  3. eno1作为备用互联网出口(metric 200)
  4. eno2作为最低优先级备用(metric 300)

4. 配置验证与故障排查

应用配置的标准工作流:

# 语法检查 sudo netplan generate # 试运行(120秒倒计时,未确认则自动回滚) sudo netplan try # 正式应用 sudo netplan apply

常见问题排查命令:

  1. 验证接口IP分配

    ip addr show
  2. 检查路由表

    ip route show
  3. 测试网关响应

    ping -I eno1 192.168.1.1 # 指定出口测试 traceroute 8.8.8.8
  4. 查看DHCP获取信息

    journalctl -u systemd-networkd | grep -i dhcp

调试技巧:使用--debug参数获取详细日志

sudo netplan --debug apply

5. 高级配置技巧

5.1 基于策略的路由

当简单metric调整无法满足需求时,可结合路由规则实现更精细控制:

network: version: 2 ethernets: eno1: routing-policy: - from: 192.168.1.0/24 table: 100 routes: - table: 100 to: 0.0.0.0/0 via: 192.168.1.1 metric: 100

5.2 接口绑定与故障转移

通过networkd的bonding模块实现链路冗余:

bonds: bond0: interfaces: [eno1, eno2] parameters: mode: active-backup primary: eno1 dhcp4: true dhcp4-overrides: route-metric: 150

5.3 环境差异化配置

利用Netplan的match功能实现硬件自适应:

network: version: 2 ethernets: id0: match: macaddress: 00:11:22:33:44:55 dhcp4: true dhcp4-overrides: route-metric: 200

6. 持久化与版本管理

为确保配置可靠性,建议:

  1. 配置文件版本控制

    sudo cp /etc/netplan/50-cloud-init.yaml ~/netplan_backup/ sudo git -C /etc/netplan/ init
  2. 生成差异报告

    sudo netplan get --origin-hint
  3. 系统启动检查

    systemctl enable systemd-networkd-wait-online.service

在长期使用中发现,将Netplan配置纳入Ansible或Chef等配置管理系统能显著提高多主机环境的管理效率。一个实用的经验是:任何手动修改后,立即通过netplan generate验证语法,避免重启时出现网络故障。

http://www.jsqmd.com/news/928716/

相关文章:

  • 记一次现场oralce监听连接不上处理
  • 2026年石墨烯电地暖怎么选?利物盛、暖玛士、暖先森、吉居客、暖风五大品牌核心差异解析 - 速递信息
  • 软考/期末救急指南:手把手教你根据PDL伪代码快速画出PAD图与N-S图(附常见扣分点)
  • Windows窗口置顶神器:3步解决多任务窗口遮挡难题,工作效率提升80%
  • 绵阳各区卖金去哪不被坑?2026年5月金价985元/克,六家回收店铺上门服务全攻略 - 余生黄金回收
  • 无痕去水印软件免费版有哪些全平台工具用法与适配场景详解
  • AI如何重塑DevOps:从智能运维到安全左移的实践指南
  • 基于YOLO26深度学习的水果识别检测系统(项目源码+数据集+模型权重+UI界面+python+深度学习+远程环境部署)
  • 苏州晟雅泰电子:海力士芯片物料H54G46CYRBX267N ,在批次21+和25+的区别及在实际应用中的注意事项
  • Unity官方API真香警告:一行代码隐藏启动Logo,全平台兼容(含WebGL特殊处理)
  • 西安路虎捷豹维修哪家专业?顺进聚宝名车维修 核心团队深耕行业15年|本地靠谱专修维保避坑攻略 - 宁夏壹山网络
  • Streamlit(二十)- API 参考文档(十三)- 缓存与状态管理组件
  • 解锁音乐自由:QMCDecode让你的QQ音乐随处播放
  • GitHub 开源文档:人人可参与贡献,双仓库同步更新
  • 月球着陆器DQN训练实战包:TensorFlow 2.10实现,含训练/测试/视频录制与预训练模型
  • 深度解析:UABEA跨平台Unity资源处理工具的技术架构与实践
  • 手把手教你用THB6128驱动模块搞定两相四线步进电机(附PWM控制与细分设置避坑指南)
  • 2026宁波黄金回收优选|三十年老店收的顶,价透秤准变现无忧 - 奢侈品回收测评
  • 如何快速部署智慧树学习助手:3步实现高效自动化学习方案
  • 告别继电器!用MOS管给单片机做个‘电源开关’,实测电路与避坑指南
  • UE4本地多人游戏避坑指南:分屏模式下视口渲染异常、UI错位问题排查与修复
  • 2026年西北钢结构工程材料采购:宁夏源头工厂直供 vs 跨省物流踩坑全对比 - 优质企业观察收录
  • 保姆级教程:用tippecanoe和Mapbox GL JS把OSM数据变成可交互的矢量地图(附完整代码)
  • 2026南宁包包回收实地深度测评,添价收包包回收实测出圈 - 薛定谔的梨花猫
  • SCREME框架:内存可靠性技术的创新与优化
  • 别再手动K帧了!UE4 Sequence粒子系统批量控制与时间轴优化全攻略
  • S2.1触发设计:如何成为用户的默认选择
  • 哔哩下载姬:5步掌握B站视频下载的终极解决方案
  • 海投票教程:微信投票如何发起?新手快速上手方法 - 微信投票小程序
  • Vue项目里那个‘滚动到哪从哪开始’的炫酷效果,我是用@david-j/vue-j-scroll插件实现的