如何在Ubuntu Server 18.04 LTS中配置静态IP地址

安装Ubuntu Server 18.04后需要分配一个的静态IP地址。先前的LTS版本Ubuntu 16.04使用/etc/network/interfaces文件配置静态IP地址,但是Ubuntu 18.04使用称为netplan的新方法。

在本教程中,我们将学习如何使用netplan在Ubuntu Server 18.04中配置网络接口。我们将研究如何设置静态IP地址,默认网关和DNS名称服务器。

  • 使用ip命令标识可用的网络接口
  • Netplan和YAML格式的界面配置文件
  • 分配静态IP地址(IPv4)
  • 在Ubuntu Server上配置静态IPv6地址
  • 将多个IP地址分配给一个网络接口
  • 配置多个网络接口

使用ip命令识别可用的网络接口

在配置静态IP地址之前,需要标识Ubuntu Server 18.04上的可用网络接口以及分配给特定网络接口的设备ID是什么。

运行ip link show命令,它将列出服务器上所有可用的网络接口。
ip link show
如何在Ubuntu Server 18.04 LTS中配置静态IP地址

要查看当前的IP配置,运行ip addr命令:

ip addr

输出将显示所有网络接口的当前分配的IP配置。

如何在Ubuntu Server 18.04 LTS中配置静态IP地址

Netplan和YAML格式的界面配置文件

Ubuntu 18.04使用一种称为netplan的新方法。在netplan中,接口配置文件位于/etc/netplan目录中,并且配置文件具有.yaml扩展名。YAML语法非常容易理解,只需要知道网络配置所需的内容。

列出/etc/netplan目录的内容,看到带有yaml扩展名的接口配置文件。

如何在Ubuntu Server 18.04 LTS中配置静态IP地址

在我的Ubuntu Server中,该文件的名称为50-cloud-init.yaml,但可以根据安装类型使用其他名称进行保存。

安装类型 接口文件名
Ubuntu服务器实时ISO /云 50-cloud-init.yaml
Ubuntu Server ISO(备用Ubuntu Server安装程序) 01-netcfg.yaml
Ubuntu桌面ISO 01-网络管理器-all.yaml

在我的Ubuntu Server上,文件内容如下所示:

# This file describes the network interfaces available on your system
# For more information, see netplan(5).
network:
version: 2
renderer: networkd
ethernets:
enp0s3:
dhcp4: yes
 

通过仅查看最后一行:“ dhcp4:yes”,可以说以太网接口enp0s3已配置为从DHCP服务器租用IP地址。如果打算从DHCP服务器分配动态IP地址,则需要此配置。

分配静态IP地址(IPv4)

这是带有静态IP分配(IPV4)的样本netplan配置文件,在此配置中,接口enp0s3已配置为IP 192.168.1.100和默认网关192.168.1.1。

network:
version: 2
renderer: networkd
ethernets:
enp0s3:
addresses:
- 192.168.1.100/24
gateway4: 192.168.1.1
nameservers:
addresses: [8.8.8.8, 4.4.4.4]

为了应用配置,运行netplan命令:

sudo netplan apply

然后,运行ip add命令以确保已应用更改:

ip add

如何运作

在上面的示例中,将enp0s3以太网接口配置为使用静态IP地址192.168.1.100。

第一行:“版本:2”表示此配置块使用netplan版本2格式。

network:
version: 2

下一行:“ renderer:networkd”告诉此接口由systemd-networkd服务管理。

renderer: networkd

如果接口由NetworkManager管理,则networkd的替代选项是NetworkManager。如果查看Ubuntu 18.04桌面的netplan配置文件,则将renderer选项设置为NetworkManager,因为在图形桌面环境中,界面由NetworkManager管理。

接下来,开始接口配置:

ethernets:
enp0s3:

这里,enp0s3是接口的名称,可以运行ip link show命令来列出Ubuntu Server上的网络接口。

接着,将静态IP设置为192.168.1.100,网络掩码为24:

addresses:
- 192.168.1.100/24

地址选项也可以按以下格式定义:

addresses: [192.168.0.101/24]

接下来,将默认网关设置为192.168.1.1:

gateway4: 192.168.1.1

使用选项gateway4,因为它是IPv4网关。对于IPv6网关,需要使用gateway6选项。

接下来,将DNS服务器设置为8.8.8.8和4.4.4.4。

nameservers:
addresses: [8.8.8.8, 4.4.4.4]

应用新的接口配置,运行netplan命令:

sudo netplan apply

该命令会将当前的netplan配置应用于正在运行的系统。不再需要重新启动网络来应用更改。

在Ubuntu Server上配置静态IPv6地址

使用相同的netplan格式分配IPv6地址,唯一的区别是,需要使用gateway6选项而不是gateway4。

network:
version: 2
renderer: networkd
ethernets:
enp0s3:
addresses:
- 2001:1::1/64
gateway6: 2001:1::2
nameservers:
addresses: [8.8.8.8, 4.4.4.4]

将多个IP地址分配给单个网络接口

单个网络接口配置有多个IP地址是很常见的。以下是示例Ubuntu netplan配置文件,其中将两个IPv4地址分配给一个网络接口。

network:
version: 2
renderer: networkd
ethernets:
enp0s3:
addresses:
- 192.168.1.100/24
- 192.168.1.101/24
gateway4: 192.168.1.1
nameservers:
addresses: [8.8.8.8, 4.4.4.4]
 

地址选项也可以采用以下格式编写:

addresses: [192.168.1.100/24, 192.168.1.101/24]

可以使用IPv4和IPv6地址配置单个网络接口,如以下netplan文件所示:

network:
version: 2
renderer: networkd
ethernets:
enp0s3:
addresses:
- 192.168.1.100/24
- 2001:1::1/64
gateway4: 192.168.1.1
gateway6: 2001:1::2
nameservers:
addresses: [8.8.8.8, 4.4.4.4]

配置多个网络接口

在单个服务器上安装多个网络接口是很常见的。这是一个示例netplan文件,为两个网卡配置了静态地址:

network:
version: 2
renderer: networkd
ethernets:
enp0s3:
addresses:
- 192.168.1.100/24
gateway4: 192.168.1.1
nameservers:
addresses: [8.8.8.8, 4.4.4.4]
enp0s8:
addresses:
- 10.10.10.2/24

注意,只有主接口已配置了默认网关,在本例中为enp0s3。有多个默认网关是不实际的,默认网关是没有其他路由时发送流量的地址。

再看另一个同时使用静态和DHCP地址的netplan示例:

network:
version: 2
renderer: networkd
ethernets:
enp0s3:
addresses:
- 192.168.1.100/24
gateway4: 192.168.1.1
nameservers:
addresses: [8.8.8.8, 4.4.4.4]
wifis:
wlp3s0:
dhcp4: yes
access-points:
#configure SSID and wifi password
"my_ssid":
password: "my-wifi-password"

在前面的示例中,wifi接口wlp3s0已配置为从DHCP服务器租用IP地址。

总结

在本教程中,我们学习了如何在Ubuntu 18.04上配置静态IP地址,在该版本中不再使用旧的/etc/network/interfaces文件。Ubuntu 18现在使用称为netplan的新方法来管理网络。使用Netplan,网络接口的配置文件以YAML数据格式放在/etc/netplan目录中,而netplan命令用于在配置更改后重新启动网络。

上一篇:7、C#基础整理(类)


下一篇:Entity Framework Core 1.1 升级通告