前言

Netplan 是一个实用程序,用于在 Linux 系统上轻松配置网络。您只需创建所需网络接口的 YAML 描述以及每个接口应配置的作用。根据此描述,Netplan 将为您选择的渲染器工具生成所有必要的配置。
Netplan 从 /etc/netplan/*.yaml 读取由管理员、安装人员、云映像实例化或其他操作系统部署编写的网络配置。在早期引导期间,Netplan 会在 /run 中生成特定于后端的配置文件,以将设备的控制权移交给特定的网络守护程序。
配置文件是:/etc/netplan/01-netcfg.yaml(添加规则,打头的两位数字01应该类似于udev中的优先级)

Ubuntu 从 17.01 开始之后的版本,已放弃在/etc/network/interfaces 里固定IP的配置,而是改成 netplan 方式。实际上,netplan是用于做静态IP、网关、DNS、路由的常用命令。

renderers

Netplan 当前适用于这些受支持的渲染器:

- NetworkManager
- Systemd-networkd    


Desktop版本默认安装NetworkManager,并且默认使用NetworkManager管理网络。Ubuntu的Server版本只有终端界面,没有桌面GUI,且Server版本不会安装NetworkManager,需要手动安装。

sudo apt install network-manager

查看版本

> sudo apt-cache policy netplan.io
netplan.io:
  已安装:0.104-0ubuntu2~20.04.6
  候选: 0.104-0ubuntu2~20.04.6
  版本列表:
 *** 0.104-0ubuntu2~20.04.6 500
        500 https://mirrors.tuna.tsinghua.edu.cn/ubuntu focal-updates/main amd64 Packages
        500 https://mirrors.tuna.tsinghua.edu.cn/ubuntu focal-security/main amd64 Packages
        100 /var/lib/dpkg/status
     0.99-0ubuntu1 500
        500 https://mirrors.tuna.tsinghua.edu.cn/ubuntu focal/main amd64 Packages

默认配置

network:
  version: 2
  renderer: NetworkManager

命令

netplan操作常用命令:

# 生成netplan配置
netplan generate
# 应用配置
netplan apply
# 申请配置并等待用户确认;如果网络中断或未给出确认,将回滚。
netplan try
# 获取当前netplan配置
netplan get
# 修改当前netplan配置。
netplan set
# 返回错误信息
netplan --debug apply

实践:给Ubuntu Desktop配置静态IP、网关、DNS

1. 检测系统环境及网络接口

Host_info     :                                                                    
System        : Ubuntu 20.04.6 64 bit
Kernel        : 5.15.0-126-generic
Network_info  :                                                                    
Internet Status: Connected 
NIC Detected:
00:1f.6 Ethernet controller: Intel Corporation Ethernet Connection (2) I219-V
04:00.0 Ethernet controller: Intel Corporation I211 Gigabit Network Connection (rev 03) 

2.disable NetworkManager

建议disable

sudo systemctl disable NetworkManager

3.enable systemd-networkd

sudo systemctl enable systemd-networkd
sudo systemctl start systemd-networkd

4. config YAML & apply

network:
  ethernets:
    eno1:
      addresses: [192.168.10.212/24]
      dhcp4: false
      optional: true
      #gateway4: 192.168.10.200
      routes:
       - to: default
         via: 192.168.10.200
      nameservers:
        addresses: [223.5.5.5,8.8.8.8]
    enp4s0:
      addresses: [192.168.10.211/24]
      dhcp4: false
      optional: true
      nameservers:
        addresses: [223.5.5.5,8.8.8.8]
  version: 2
  renderer: networkd

5. apply

sudo netplan apply

脚本检查是否生效

Network_info  :                                                                    
Internet Status: Connected 
NIC Detected:
00:1f.6 Ethernet controller: Intel Corporation Ethernet Connection (2) I219-V
04:00.0 Ethernet controller: Intel Corporation I211 Gigabit Network Connection (rev 03) 
Gateway  Addrs: 
default via 192.168.10.200 dev eno1 proto static  
DNS  Addrs: 127.0.0.53
IPv4 Addrs: 192.168.10.212  

Ref