文章目录
- 前言
- 官网
- 配置文件
- 默认配置
- NetworkManager 简介
- systemd-networkd 简介
- NetworkManager VS systemd-networkd
- Netplan 简介
- 示例
- 多个配置文件
前言
netplan 是 ubuntu 17.10 版本中引入的一种全新的命令行网络配置程序,用于在 ubuntu 系统中轻松管理和配置网络设置。
netplan 可以使用 NetworkManager(桌面系统中使用)或 Systemd-networkd(服务器系统中使用)的网络守护程序来做为内核的接口,这样就为用户把底层的网络差异透明化了。netplan 的默认配置文件在 /etc/netplan/*.yaml
里,配置文件采用 YAML 语法。
官网
https://netplan.io/
配置文件
配置文件所在路径为 /etc/netplan/
liyongjun@Box:/etc/netplan$ ls
01-network-manager-all.yaml
你可以创建一个新的 YAML 文件,或者直接编辑默认文件。如果你打算修改默认文件,建议你先做一个备份
sudo cp /etc/netplan/01-netcfg.yaml /etc/netplan/01-netcfg.yaml.bak
默认配置
我使用的是 Ubuntu 20.04 桌面版,默认使用 NetworkManager 来管理所有网络接口
liyongjun@Box:/etc/netplan$ cat 01-network-manager-all.yaml
# Let NetworkManager manage all devices on this system
network:
version: 2
renderer: NetworkManager
NetworkManager 简介
NetworkManager 是一项后端服务(networkmanager.service),是一个用于控制 Ubuntu 操作系统上的网络接口图形化界面的工具。
systemd-networkd 简介
systemd-networkd 是 systemd 的一部分 ,负责 systemd 生态中的网络配置部分(systemd-networkd.service, systemd-resolved.service)。使用 systemd-networkd,你可以为网络设备配置基础的 DHCP/静态 IP 网络等,还可以配置虚拟网络功能,例如网桥、隧道和 VLAN 等等。systemd-networkd 与 wpa_supplicant 服务配合可以支持配置 WiFi 无线适配器。
NetworkManager VS systemd-networkd
NetworkManager 和 systemd-networked 可以理解为相互替代关系,一个是基于图形化界面的工具,另外一个是基于命令行界面的工具。因此,用户可以根据自己的需求,决定使用 networkmanager 还是 systemd-netword。 如果要禁用 NetworkManager,则应启用 systemd-networkd,而在 systemd-networkd 运行时最好禁用 networkmanager。
Netplan 简介
Netplan 是 Canonical(Ubuntu)开发的做为某些 Linux 发行版(主力为 ubuntu Linux 发行版)上默认的网络配置命令行工具。Netplan 使用 YAML 描述文件来配置网络,然后通过这些描述为任何给定的底层呈现工具(主要就是 systemd-networkd 和 networkmanager 两种工具)生成必要的配置选项。
如下图所示,我们可以看到 Netplan 读取 /etc/netplan 下的描述网络用的各个 yaml 文件,生成backend config 后端配置项。将这些后端配置项通过 yaml 文件里指定的 renderers 渲染器(systemd-networkd 或者 networkmanager)将配置下发到 Linux 内核中。
Netplan 目前支持的网络管理工具:
- NetworkManager Systemd
- networkd
netplan提供的命令
- netplan apply:应用配置,使配置生效。
- netplan try:试用配置,然后等待用户的确认;如果网络中断或没有给出确认,就自动回滚。
- netplan generate:以 /etc/netplan 配置为输入为 renderer 指定的底层网络管理工具生成配置文件。
示例
默认情况下,我的 Ubuntu 系统下的以太网卡 enp0s3 拿到 IPv4 以及 IPv6 地址
我现在想禁用 IPv6 地址,只需要这样修改
network:
version: 2
renderer: NetworkManager
ethernets:
enp0s3:
dhcp4: true
dhcp6: false
修改后,执行 sudo netplan apply
生效一下
可以看到,地址只剩 IPv4 了,IPv6 被禁掉了。
使用 networkd 方式来管理网络
network:
version: 2
renderer: networkd
ethernets:
enp0s3:
dhcp4: true
dhcp6: false
可以看到,Ubuntu 图形界面已经无法配置该网卡了
多个配置文件
在 /etc/netplan 目录下,如果有多个 yaml 文件,netplan 会根据文件名称排序,挨个生效,后面的配置会覆盖前面的配置。