前言

旧版本 ubuntu 使用 /etc/network/interfaces 配置网络,从 ubuntu 18.04 开始,配置网络使用 netplan

网络配置文件

路径

配置文件路径 /etc/plan*.yaml即配置文件

多个配置文件的情况:Netplan 会按照文件名的字母顺序来解析多个配置文件。例如,如果有两个文件 01-netcfg.yaml02-bridge.yaml,Netplan 会先处理 01-netcfg.yaml,然后处理 02-bridge.yaml

字母顺序的规则:

  1. 文件名的首字母:文件名的第一个字符决定了处理顺序。例如,01-netcfg.yaml 将在 02-static.yaml 之前处理,因为 0 的 ASCII 值小于 2
  2. 数字优先:数字在字母之前,因此以数字开头的文件会被优先处理。例如,10-config.yaml 会在 a-config.yaml 之前处理。
  3. 字母顺序:如果文件名的首部分是字母,按照字母表的顺序进行处理。例如,a-config.yaml 会在 b-config.yaml 之前处理。
  4. 文件扩展名:确保所有配置文件都以 .yaml 结尾,以便 Netplan 正确识别。

修改

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
network:
version: 2
renderer: networkd
ethernets:
enp6s18:
dhcp4: false
addresses:
- 192.168.1.101/24
nameservers:
addresses:
- 192.168.1.1
search: []
routes:
- to: default
via: 192.168.1.1

说明:

  • enp6s18:网络接口名称,以实际机器与名称为主
  • dhcp4: IPv4 网络类型配置,true 为动态IP,false 为静态IP
  • address:IP+子网配置,格式为”本机IP地址/子网掩码”
  • routes:网关配置,via 为网关地址
  • nameservers -> addresses: DNS 配置

应用

重启后才生效:

1
sudo netplan generate

即刻生效:

1
sudo netplan apply

问题记录

ubuntu重启后网络配置被重置

表现为每次重启和关机后,所设置的网络配置都会回复到安装系统时所设置的

/etc/netplan下有名为50-cloud-init.yaml 的配置文件

文件上面的注释如下:

1
2
3
4
5
# 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}

所以解决方式如下:

1
sudo vim /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg

添加内容:

1
network: {config: disabled}

重启 cloud-init 服务:

1
2
sudo cloud-init clean
sudo reboot