前言

通常,Ubuntu的默认设置是通过DHCP服务器自动获取IP地址,这对台式机系统来说非常有用,因为它不需要任何更改。

但是,始终建议为Ubuntu服务器分配一个静态IP地址,因为该静态IP地址将在重新启动后保持不变。

Ubuntu 17.10及更高版本使用“Netplan”作为默认网络管理工具。因此,在Ubuntu 20.04系统上配置IP地址与旧版本的Ubuntu不同。

在本文中,我们将描述如何在Ubuntu 20.04服务器中配置静态IP地址。同时,这也适用于Ubuntu 18.04,参考在Ubuntu 18.04系统中使用Netplan工具配置网络。

什么是Netplan

Netplan是Canonical(Ubuntu)开发的实用程序,能在Linux系统上轻松配置网络。它基于基于YAML的配置,从而大大简化了网络配置过程。

要配置网络接口,只需创建所需网络接口的YAML描述,然后Netplan将为所选的渲染器工具生成所有必需的配置。

您可以在“/etc/netplan/*.yaml”中找到Netplan网络配置文件。Netplan当前支持以下后端渲染器,例如“NetworkManager”和“Systemd-networkd”。

NetworkManager通常在台式机上使用,而Systemd网络在服务器上使用。

禁用cloud-init配置

确保网络接口不受“cloud-init”管理。要禁用此功能,请将以下行添加到文件“/etc/cloud/cloud.cfg.d/subiquity-disable-cloudinit-networking.cfg”中:

$ sudo echo "network: {config: disabled}" >> /etc/cloud/cloud.cfg.d/subiquity-disable-cloudinit-networking.cfg

添加后,您可以通过运行以下命令来确认这一点:

$ cat /etc/cloud/cloud.cfg.d/subiquity-disable-cloudinit-networking.cfg

识别接口和IP信息

以太网接口由系统使用可预测的网络接口名称标识。这些名称可以显示为“eno1”或“enp0s25”。但是,在某些系统中,名称可能有所不同。

使用ip命令可以快速识别系统上所有可用的以太网接口。您可以看到,根据以下输出,动态IP已自动分配给“enp0s3”接口:

$ ip a

1: lo: mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000

link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00

inet 127.0.0.1/8 scope host lo

valid_lft forever preferred_lft forever

inet6 ::1/128 scope host

valid_lft forever preferred_lft forever

2: enp0s3: mtu 1500 qdisc pfifo_fast state UP group default qlen 1000

link/ether 08:00:27:97:13:2e brd ff:ff:ff:ff:ff:ff

inet 192.168.1.101/24 brd 192.168.1.255 scope global dynamic enp0s3

valid_lft forever preferred_lft forever

inet6 fe80::a00:27ff:fe97:132e/64 scope link

valid_lft forever preferred_lft forever

在Ubuntu 20.04服务器中配置静态IP地址

您可以在“/etc/netplan”目录中找到Netplan配置文件。您可能会找到一个默认的netplan配置文件,即“01-netcfg.yaml”或“50-cloud-init.yaml”或“00-installer-config.yaml”,但在您的系统中可能有所不同。

如果/etc/netplan下没有.yaml文件,可以到以下目录找到示例文件

/usr/share/doc/netplan/examples

root@localhost:/home/user# ll /usr/share/doc/netplan/examples
total 92
drwxr-xr-x 2 root root 4096 Feb 11 18:03 ./
drwxr-xr-x 3 root root 4096 Feb 11 18:03 ../
-rw-r--r-- 1 root root  202 Jan 15  2021 bonding.yaml
-rw-r--r-- 1 root root  938 Jan 15  2021 bonding_router.yaml
-rw-r--r-- 1 root root  156 Jan 15  2021 bridge.yaml
-rw-r--r-- 1 root root  245 Jan 15  2021 bridge_vlan.yaml
-rw-r--r-- 1 root root   86 Jan 15  2021 dhcp.yaml
-rw-r--r-- 1 root root  216 Jan 15  2021 dhcp_wired8021x.yaml
-rw-r--r-- 1 root root  168 Jan 15  2021 direct_connect_gateway.yaml
-rw-r--r-- 1 root root  253 Jan 15  2021 direct_connect_gateway_ipv6.yaml
-rw-r--r-- 1 root root  311 Jan 15  2021 ipv6_tunnel.yaml
-rw-r--r-- 1 root root  126 Jan 15  2021 loopback_interface.yaml
-rw-r--r-- 1 root root  360 Jan 15  2021 modem.yaml
-rw-r--r-- 1 root root   49 Jan 15  2021 network_manager.yaml
-rw-r--r-- 1 root root  191 Jan 15  2021 route_metric.yaml
-rw-r--r-- 1 root root  542 Jan 15  2021 source_routing.yaml
-rw-r--r-- 1 root root  239 Jan 15  2021 static.yaml
-rw-r--r-- 1 root root  158 Jan 15  2021 static_multiaddress.yaml
-rw-r--r-- 1 root root  345 Jan 15  2021 static_singlenic_multiip_multigateway.yaml
-rw-r--r-- 1 root root  583 Jan 15  2021 vlan.yaml
-rw-r--r-- 1 root root   91 Jan 15  2021 windows_dhcp_server.yaml
-rw-r--r-- 1 root root  305 Jan 15  2021 wireless.yaml
-rw-r--r-- 1 root root  780 Jan 15  2021 wpa_enterprise.yaml

如果通过DHCP配置IP地址,则默认的netplan配置文件将类似于以下文件:

$ cat /etc/netplan/00-installer-config.yaml

network:
  version: 2
  renderer: networkd
  ethernets:
    enp3s0:
      dhcp4: true

要将静态IP地址“192.168.0.20”分配给“enp0s3”界面,请按如下所示编辑文件。进行更改后,保存并关闭文件。

由于这是Yaml文件,因此在更改文件时必须遵循正确的缩进。如果语法不正确,将不会应用更改。

配置:

$ vim /etc/netplan/00-installer-config.yaml

network:
    ethernets:
        enp3s0:
            addresses: [192.168.0.20/24]  //IP址
            gateway4: 192.168.0.1  // 网关
            nameservers:
                addresses: [114.114.114.114, 192.168.0.1] //DNS
            dhcp4: no
            optional: no
    version: 2

测试配置:

sudo netplan try

应用配置:

$ sudo netplan apply

通过运行IP命令来验证新的IP信息:

$ ip a

1: lo: mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000

link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00

inet 127.0.0.1/8 scope host lo

valid_lft forever preferred_lft forever

inet6 ::1/128 scope host

valid_lft forever preferred_lft forever

2: enp0s3: mtu 1500 qdisc pfifo_fast state UP group default qlen 1000

link/ether 08:00:27:97:13:2e brd ff:ff:ff:ff:ff:ff

inet 192.168.0.20/24 brd 192.168.0.255 scope global enp0s3

valid_lft forever preferred_lft forever

inet6 fe80::a00:27ff:fe97:132e/64 scope link

valid_lft forever preferred_lft forever

至此,使用Netplan在Ubuntu 20.04服务器中配置静态IP成功。

扩展

添加开机启动自动路由功能

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐