本文解释了如何在Ubuntu 20.04上设置一个静态IP地址。
通常,在大多数网络配置中,IP地址是由路由器DHCP服务器动态分配的。在不同的情况下可能需要设置一个静态IP地址,比如配置端口转发或运行媒体服务器。
使用DHCP配置静态IP地址
给局域网中的设备分配一个静态IP地址的最简单和推荐的方法是在路由器上配置一个静态DHCP。静态DHCP或DHCP预留是大多数路由器上的一项功能,它使DHCP服务器在每次设备向DHCP服务器请求地址时,自动为特定的网络设备分配相同的IP地址。这通过为设备的唯一MAC地址分配一个静态IP来实现。
配置DHCP保留的步骤因路由器而异。更多信息请查阅供应商的文件。
$ ip link
该命令会打印出所有可用网络接口的列表。在这个例子中,接口的名称是ens3。
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: ens3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000
link/ether 08:00:27:6c:13:63 brd ff:ff:ff:ff:ff:ff
如果你的Ubuntu云实例是用cloud-init配置的,你将需要禁用它。要做到这一点,请创建以下文件。
$ sudo nano /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg
network: {config: disabled}
$ sudo nano /etc/netplan/01-netcfg.yaml
network:
version: 2
renderer: networkd
ethernets:
ens3:
dhcp4: yes
每个Netplan Yaml文件以网络密钥开始,该密钥至少有两个必要元素。第一个必要元素是网络配置格式的版本,第二个元素是设备类型。设备类型可以是ethernets、bond、bridge或vlans。
上面的配置还有一行显示了渲染器的类型。开箱后,如果你在服务器模式下安装Ubuntu,渲染器被配置为使用networkd作为后端。
在设备的类型(ethernets)下,你可以指定一个或多个网络接口。在这个例子中,我们只有一个接口ens3,它被配置为从DHCP服务器获取IP地址 dhcp4: yes.
为了给ens3接口分配一个静态IP地址,请按以下方式编辑文件。
dhcp4: no
addresses:
你可以添加一个或多个将被分配给网络接口的IPv4或IPv6 IP地址network:
version: 2
renderer: networkd
ethernets:
ens3:
dhcp4: no
addresses:
- 192.168.121.221/24
gateway4: 192.168.121.1
nameservers:
addresses: [8.8.8.8, 1.1.1.1]
$ sudo netplan apply
通过键入以下内容验证更改。
$ ip addr show dev ens3
2: ens3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether 08:00:27:6c:13:63 brd ff:ff:ff:ff:ff:ff
inet 192.168.121.221/24 brd 192.168.121.255 scope global dynamic ens3
valid_lft 3575sec preferred_lft 3575sec
inet6 fe80::5054:ff:feb0:f500/64 scope link
valid_lft forever preferred_lft forever
$ ip addr
...
2: wlp1s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether 50:5b:c2:d8:59:7d brd ff:ff:ff:ff:ff:ff
inet 192.168.121.221/24 brd 192.168.31.255 scope global dynamic noprefixroute wlp1s0
valid_lft 38963sec preferred_lft 38963sec
inet6 fe80::45e3:7bc:a029:664/64 scope link noprefixroute