在Linux上使用Netplan进行网络配置

Netplan是一个命令行程序,用于在某些Linux发行版上配置网络;下面展示了它的使用方法。

多年来,Linux管理员和用户一直都在以一种固定的方式配置了他们的网络接口。例如,如果你是一个Ubuntu用户,你可以通过桌面GUI或者从/etc/network/interfaces文件配置网络连接。这种方法简单而且也很好用。interfaces文件中的配置可能是这样的:

auto enp10s0 
iface enp10s0 inet static 
address 192.168.1.162 
netmask 255.255.255.0 
gateway 192.168.1.100 
dns-nameservers 1.0.0.1,1.1.1.1

保存并关闭该文件后,可以使用以下命令重新启动网络:

sudo systemctl restart networking

或者,如果您使用的是非systemd的发行版,您可以像这样重新启动网络:

sudo /etc/init.d/networking restart

您的网络将重新启动,新配置的接口也能工作的很好。

这就是多年来的做法。但是现在不同了。在某些发行版(如Ubuntu 18.04)中,网络的配置和控制发生了很大的变化。我们现在需要转向Netplan,而不是使用接口文件和/etc/init.d/networking脚本。Netplan是一个命令行程序,用于配置某些Linux发行版上的网络。Netplan使用YAML描述文件来配置网络接口,并从这些描述中为任何给定的工具生成必要的配置选项。

我将向您展示如何在Linux上使用Netplan来配置静态IP地址和DHCP地址。我将在Ubuntu Server 18.04上进行演示。需要提醒的是,你为Netplan创建的.yaml文件必须在间距上保持一致,否则它们将无法工作。你不必为每行使用特定的间距,只要保持一致就行了。

创建新的配置文件

打开一个终端窗口(或者通过SSH登录到你的Ubuntu Server)。您将在/etc/netplan目录中找到Netplan的新配置文件。使用命令cd /etc/netplan切换到该目录。进入该目录后,您可能只会看到一个文件:

01-netcfg.yaml

您可以创建一个新文件或编辑默认文件。如果选择编辑默认文件,我建议首先使用以下命令制作一个备份:

sudo cp /etc/netplan/01-netcfg.yaml /etc/netplan/01-netcfg.yaml.bak

有了备份,就可以进行配置了。

网络设备名称

在配置静态IP地址之前,需要知道要配置的设备的名称。为此,您可以使用命令ip a来找出要使用的设备(如下图)。

在Linux上使用Netplan进行网络配置

我将为设备ens5配置静态IP地址。

配置静态IP地址

使用以下命令打开原始.yaml文件进行编辑:

sudo nano /etc/netplan/01-netcfg.yaml

该文件的布局如下所示:

network: 
 Version: 2 
 Renderer: networkd 
 ethernets: 
 DEVICE_NAME: 
 Dhcp4: yes/no 
 Addresses: [IP/NETMASK] 
 Gateway: GATEWAY 
 Nameservers: 
 Addresses: [NAMESERVER, NAMESERVER]

其中:

  • DEVICE_NAME是要配置的实际设备名称。
  • yes/no是启用或禁用dhcp4的选项。
  • IP是设备的IP地址。
  • NETMASK是IP地址的网络掩码。
  • GATEWAY是您网关的地址。
  • NAMESERVER是用逗号分隔的DNS服务器列表。

下面是一个.yaml文件示例:

network: 
 version: 2 
 renderer: networkd 
 ethernets: 
 ens5: 
 dhcp4: no 
 addresses: [192.168.1.230/24] 
 gateway4: 192.168.1.254 
 nameservers: 
 addresses: [8.8.4.4,8.8.8.8]

你可以根据自己的实际情况编辑以上内容以满足您的网络需求。保存并关闭该文件。

请注意,网络掩码不再以255.255.255.0的形式配置。网络掩码被添加到了IP地址后面。

测试配置

在应用更改之前,让我们测试一下配置。为此,使用以下命令:

sudo netplan try

上述命令将在应用之前验证配置。如果成功,您将看到新配置被接受。换句话说,Netplan将尝试将新设置应用于正在运行的系统。如果新的配置文件测试失败,Netplan将自动恢复到以前的工作配置。如果新的配置工作,它将被应用。

应用新配置

如果您确定您的配置文件,您可以跳过try选项,直接应用新配置。对此的命令是:

sudo netplan apply

此时,您可以使用命令ip a来查看您的新地址配置是否已经就绪。

配置DHCP

虽然您可能不会为您的服务器配置DHCP,但是知道如何做总是很好的。例如,您可能不知道网络上当前有哪些静态IP地址可用。您可以为您的设备配置DHCP,获取IP地址,然后将该地址重新配置为静态地址。

要在Netplan中使用DHCP,配置文件应该如下所示:

network: 
 version: 2 
 renderer: networkd 
 ethernets: 
 ens5: 
 Addresses: [] 
 dhcp4: true 
 optional: true

保存并关闭该文件。然后使用以下命令进行测试:

sudo netplan try

Netplan应该已经成功测试并应用DHCP配置。然后,您可以使用ip a命令,获取动态分配的地址,然后重新配置静态地址。或者,您可以将其设置为使用DHCP(但是考虑到这是一个服务器,您可能不想这样做)。

如果有多个接口,你可以将第二个.yaml配置文件命名为02-netcfg.yaml。Netplan将按数字顺序应用配置文件,因此01将在02之前应用。你可以根据需要为您的服务器创建尽可能多的配置文件。

这就是全部

信不信由你,这就是使用Netplan的全部内容。虽然这对于我们之前所习惯的配置网络地址的方式来说是一个重大的改变,但这并不难习惯。考虑到这种类型的配置将会在linux中变的越来越流行,你最终还是需要习惯它。