手把手教你用Netplan搞定Ubuntu Server双网卡配置(含静态IP与DHCP)
2026/6/8 4:56:06 网站建设 项目流程

深度解析Ubuntu Server双网卡配置:Netplan实战指南

在服务器运维和DevOps领域,网络配置始终是基础却至关重要的环节。随着Ubuntu从18.04 LTS开始全面采用Netplan作为默认网络配置工具,传统的/etc/network/interfaces方式已成为历史。Netplan以其简洁的YAML语法和强大的后端抽象能力(支持systemd-networkd和NetworkManager),为多网卡配置提供了更优雅的解决方案。

本文将聚焦一个典型的生产环境场景:为Ubuntu Server配置双网卡,其中一个接口(如ens33)使用静态IP接入内网管理网络,另一个接口(ens34)通过DHCP获取外网地址。这种架构既能保证管理通道的稳定性,又能灵活适应外部网络变化,常见于企业服务器、云主机和家庭实验室环境。

1. 环境准备与基础概念

在开始配置前,我们需要明确几个关键点。首先,Netplan的配置文件存放在/etc/netplan/目录下,文件命名遵循XX-描述性名称.yaml的格式,其中XX是两位数字,决定了配置的应用顺序。对于多网卡场景,合理的文件命名能确保网络接口按预期顺序初始化和配置。

通过以下命令查看现有网络接口:

ip -c a

典型输出可能如下:

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever 2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000 link/ether 00:0c:29:3b:58:1e brd ff:ff:ff:ff:ff:ff inet 192.168.1.100/24 brd 192.168.1.255 scope global dynamic ens33 valid_lft 86300sec preferred_lft 86300sec 3: ens34: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000 link/ether 00:0c:29:3b:58:28 brd ff:ff:ff:ff:ff:ff

注意:在生产环境中,建议先通过ip link set dev <接口名> down临时禁用接口,避免配置过程中网络中断影响现有服务。

2. 双网卡配置实战

2.1 创建主配置文件

进入配置目录并创建第一个网卡配置文件:

sudo nano /etc/netplan/01-internal-static.yaml

以下是内网静态IP配置示例:

network: version: 2 renderer: networkd ethernets: ens33: addresses: - 192.168.1.100/24 routes: - to: 192.168.1.0/24 via: 192.168.1.1 metric: 100 nameservers: addresses: [8.8.8.8, 1.1.1.1] dhcp4: no optional: false

关键参数说明:

参数说明示例值
addressesIP地址及子网掩码(CIDR格式)192.168.1.100/24
routes自定义路由表to指定目标网络,via为网关
metric路由优先级数值越小优先级越高
dhcp4是否启用DHCPv4false表示静态IP

2.2 配置DHCP接口

创建第二个网卡配置文件:

sudo nano /etc/netplan/02-external-dhcp.yaml

DHCP配置相对简单:

network: version: 2 renderer: networkd ethernets: ens34: dhcp4: true dhcp6: false optional: true

提示:将DHCP接口标记为optional: true可避免系统因DHCP获取失败而长时间等待,这在笔记本等移动设备上特别有用。

3. 高级路由配置

当系统存在多个网络接口时,默认路由的管理尤为关键。以下配置示例确保外网接口(ens34)作为默认网关:

network: version: 2 renderer: networkd ethernets: ens34: dhcp4: true routes: - to: default via: 自动获取 metric: 50

路由策略要点:

  • metric值决定优先级:数值越小优先级越高
  • 策略路由:可通过routing-policy实现基于源地址的路由选择
  • 持久化路由:Netplan配置会覆盖手动添加的临时路由

验证路由表:

ip route show

4. 配置验证与故障排除

Netplan提供了完善的测试和应用机制:

  1. 试运行模式(会超时回滚):

    sudo netplan try --timeout 30
  2. 直接应用配置

    sudo netplan apply
  3. 调试模式(显示详细处理过程):

    sudo netplan --debug apply

常见问题排查命令:

  • 检查网络接口状态:networkctl list
  • 查看特定接口详情:networkctl status ens33
  • 检查DHCP获取情况:journalctl -u systemd-networkd -f

当遇到配置错误时,Netplan通常会给出明确的YAML解析错误提示。特别注意:

  • YAML对缩进敏感,必须使用空格而非Tab
  • 每个层级需要正确对齐
  • 冒号后需有空格

5. 生产环境最佳实践

在多网卡服务器部署中,以下几点经验值得注意:

  1. 接口命名稳定性

    • 使用udev规则或netplanmatch功能确保接口名称持久化
    • 示例:
      network: version: 2 renderer: networkd ethernets: eth-internal: match: macaddress: 00:0c:29:3b:58:1e set-name: eth-internal addresses: [192.168.1.100/24]
  2. 冗余与绑定Netplan支持多种网络绑定模式:

    bonds: bond0: interfaces: [ens33, ens34] parameters: mode: 802.3ad mii-monitor-interval: 100
  3. 配置片段管理

    • 使用include指令组织复杂配置
    • 通过//添加YAML注释说明关键配置项
  4. 版本控制集成

    • /etc/netplan/纳入Git等版本控制系统
    • 部署前使用netplan generate验证配置有效性

6. 性能调优与安全加固

针对高负载服务器环境,可考虑以下优化:

网络参数调优

ethernets: ens33: mtu: 9000 offload: rx: on tx: on sg: on tso: on gso: on gro: on

安全增强配置

ethernets: ens33: accept-ra: false ipv6-privacy: true dhcp4-overrides: use-dns: false use-domains: false

QoS策略示例

network: version: 2 renderer: networkd ethernets: ens33: routes: - to: 0.0.0.0/0 via: 192.168.1.1 on-link: true routing-policy: - from: 192.168.1.100 table: 100 tc: qdiscs: - kind: fq_codel root: true

在实际部署中,我们发现Netplan的YAML配置虽然初期学习曲线略陡,但一旦掌握后,其配置效率和可维护性远超传统方式。特别是在需要批量部署相同网络配置的服务器集群中,Netplan配置文件的复用性表现出色。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询