Netplan简述
Netplan 是一款用于在 Linux 系统上配置网络的程序。属于抽象网络配置描述器。通过Netplan只需要配置一个yaml文件描述网络接口的所需配置即可,无论linux系统采用networkd还是NetworkManager管理网络。Ubuntu18.04及以后版本中默认使用Netplan管理网络。配置文件存放于/etc/netplan/
目录下。
配置文件优先级规则
Netplan配置网络时按照字母数字顺序加载所有在/etc/netplan/
下的yaml文件。若多个文件定义了相同的网络配置时后加载的配置文件将覆盖前面加载的配置文件,故/etc/netplan/
中文件名排序考前的优先级较低(文件名首字母或数字排序靠前),文件名排序较大优先级较高。
文件命名中数字高于字母,即“1”优先于“a”,“03”优先于“05”,“d”优先于“t”
即01-network-manager-all.yaml
会优先加载05-network-manager-all.yaml
会之后加载。
配置文件规则
netplan版本号说明
首先netplan有两个大版本。版本号<0.103或者版本号≥0.103。旧版本部分配置语法已经弃用,gateway
——配置网关的命令已改为routes
。
#查看netplan版本命令
sudo apt-cache policy netplan.io
图中可见目前使用的版本为0.106.1
netplan配置文件语法说明
注意:yaml文件严格地要求缩进和符号
- 层级管理中要用两个空格进行缩进,不要用Tab。
- ip地址列表中 – 后面要有一个空格
- : 后面若有文本也要加上一个空格
- IPV6地址要用 “ ” 括起来,(虽然我试过不括也能用)
- 同缩进的关键字无所谓先后,version: 2这种放最后也可以。
- 配置文件有很大的灵活性,同一块网卡可在不通配置文件中配置。
- 不同的网卡也可在一个配置文件中配置。
查看当前网络信息
查看当前网络使用的管理软件NetworkManager或systemd-networkd
sudo systemctl status NetworkManager
sudo systemctl status systemd-networkd
#NetworkManager和networkd虽然可同时运行,但为避免两者冲突,尽量只运行一个。
#停止NetworkManager服务命令如下
sudo systemctl stop NetworkManager
#禁止NetworkManager服务开机启动
sudo systemctl disable NetworkManager
重启networkd服务
sudo systemctl restart systemd-networkd
sudo systemctl status systemd-networkd
看到如下信息表示networkd
正在运行
sudo systemctl status systemd-networkd
看到如下信息表示networkd
没有运行
查看当前DNS信息
resolvectl status
查看当前网关信息
#查看IPV4默认网关
ip route show default
#查看IPV6默认网关
ip -6 route show default
查看当前网络详细配置(包含DNS信息)
networkctl status
查看当前网络详细信息
ip address
ip address输出结果详情可参阅另一篇文章ip address、ip addr、ip a参数详解
配置文件模板
配置文件语法规则均≥0.103版本
标准静态地址配置文件
network:
version: 2
#选择管理软件,默认是networkd,也可修改为NetworkManager
renderer: networkd
ethernets:
#配置名为eth0的网卡:
eth0:
#配置IP地址:
addresses:
- 10.0.0.2/24
- "2001:xxxx:xxxx:xxxx::2/64"
#配置DNS服务器:
nameservers:
addresses:
- 10.10.10.253
- 8.8.8.8
- "2001:xxxx:xxxx:xxxx::3333/64"
#配置默认网关:
routes:
- to: default
via: 192.168.0.1
via: "2001:xxxx:xxxx:xxxx::xxxx"
DHCP配置文件
network:
version: 2
renderer: networkd
ethernets:
eth0:
dhcp4: true
连接家用wifi配置文件
network:
version: 2
renderer: NetworkManager
wifis:
wlp2s0b1:
dhcp4: yes
access-points:
#输入wifi名
"network_ssid_name":
password: "**********"
更多配置教程请参阅Netplan官方文档:
https://netplan.readthedocs.io/en/stable/netplan-tutorial/#showing-current-netplan-configuration
Netplan命令
#验证配置
#输入此命令后linux临时应用新配置(默认为 120 秒)并等待确认。超过120秒不确认则回滚
sudo netplan try
#应用新的 Netplan 配置
sudo netplan apply
#获取当前netplan配置
netplan get
常见错误
Cannot call Open vSwitch: ovsdb-server.service is not running
#表示ovsdb-server服务没运行。
#需要启动ovsdb-server服务。或安装ovsdb-server服务
#检查ovsdb-server状态
sudo systemctl status ovsdb-server
#启动ovsdb-server
sudo systemctl start ovsdb-server
#设置开机启动
sudo systemctl enable ovsdb-server
unit ovsdb-server.service could not be found
#表示ovsdb-server服务没有安装或正确配置
#检查 Open vSwitch 是否安装
sudo apt list --installed | grep openvswitch
#安装ovsdb-server
sudo apt install openvswitch-switch
#重新配置ovsdb-server
sudo ovs-ctl force-reload-kmod
重置网络配置
若配置出现失败则删除修改后的yaml文件并重启网络。
sudo systemctl restart systemd-networkd
#或者
sudo systemctl restart NetworkManager