🔍搜索⌘K

Ubuntu 网络配置:基于 Netplan 的完整指南

概述

Ubuntu 配网络的工具换过好几茬。从 Ubuntu 17.10(Artful Aardvark) 开始,官方用 Netplan 替代了老一套的 ifupdown(就是 ifconfig、/etc/network/interfaces 那套)。现在你只要写一份 YAML 配置文件把网卡参数说清楚,Netplan 再交给 systemd-networkd 或者 NetworkManager 这些后端去真正生效。比起以前手改一堆文件,这种方式简单很多,尤其是服务器上配静态 IP、加路由这种场景,特别顺手。

一、核心配置文件路径

Netplan 的配置文件都放在 /etc/netplan/ 目录下,文件名通常带个数字前缀用来表示优先级,比如 50-cloud-init.yaml(云服务器默认生成的)或者 01-network-manager-all.yaml(桌面版默认的)。

改这些文件得有管理员权限,用 vi 或 nano 打开就行:

sudo vi /etc/netplan/50-cloud-init.yaml

二、静态 IP 配置示例(YAML 语法)

下面是一份最常见的有线网卡(接口名 enp0s5)静态 IP 配置,IP 地址、默认网关、DNS 都齐了。这里有个坑要注意:YAML 对缩进特别较真,建议用 2 个空格缩进,千万别用 Tab。

network:
  version: 2 # 固定配置版本号,当前主流为 version 2
  renderer: networkd # 指定后端渲染器:server 用 networkd,桌面版建议用 NetworkManager
  ethernets: # 配置有线网卡(无线网卡需用 wifis 字段)
    enp0s5: # 网卡接口名(可通过 `ip addr` 命令查看)
      dhcp4: no # 禁用 IPv4 动态获取(开启为 yes)
      addresses: # 配置静态 IPv4 地址(格式:IP/子网掩码)
        - 10.211.55.100/24
      routes: # 配置默认网关
        - to: default # 表示“所有默认流量”
          via: 10.211.55.1 # 网关地址(需与本地网段匹配)
      nameservers: # 配置 DNS 服务器(优先用公共 DNS 如 8.8.8.8、114.114.114.114)
        addresses:
          - 8.8.8.8
          - 114.114.114.114 # 可选:添加备用 DNS 提高稳定性

三、配置生效与验证

Netplan 应用配置有两种方式,建议先用 try 试一下,避免配错了把网络搞断连不上,确认没问题再正式 apply。

1. 测试配置(安全模式)

sudo netplan try

执行后配置会先临时生效,然后提示 “按 Enter 确认,或等待 120 秒自动回滚”。这期间你测试一下网络(比如 ping 通网关或外网),正常就按 Enter 保存;要是断网了啥都不用做,等 120 秒系统自动还原。

2. 正式应用配置

测过没问题了,执行下面这条永久生效(不用重启机器):

sudo netplan apply

3. 验证配置结果

用这几个命令确认参数真的生效了:

  • 查看 IP 地址:ip addr show enp0s5(确认静态 IP 已正确分配)
  • 测试网关连通性:ping 10.211.55.1(网关地址需与配置一致)
  • 测试外网连通性:ping 8.8.8.8(验证 DNS 与路由是否正常)
  • 查看 DNS 配置:cat /etc/resolv.conf(确认 DNS 服务器已正确写入)

四、常见注意事项

  • 先确认网卡接口名:拿不准网卡叫啥,跑一下 ip addr 或 ip link 看看,别凭印象写 enp0s3、eth0 这种,每台机器可能不一样,写错了配置就白搭。
  • YAML 语法别马虎:冒号 : 后面必须加空格(写 dhcp4: no,不能写成 dhcp4:no);列表项(像 addresses、nameservers)得用 - 开头并且缩进对齐,语法错一点配置就加载不起来。
  • 桌面版和服务器版不一样:桌面版 Ubuntu 默认用 NetworkManager(就是那个图形网络界面)管网络,配置时 renderer 要设成 NetworkManager;服务器版没图形界面,默认用 networkd,一般不用改。
  • 多网卡就接着往下写:要配多块网卡,在 ethernets 下面再加一个接口配置就行(比如新增 enp0s6 字段),写法和 enp0s5 一样。

照着上面几步走,基本就能在 Ubuntu 上用 Netplan 把网络配好,不管是部署服务器还是搭开发环境都够用。