通常,在大多数网络配置中,IP地址是由路由器的DHCP服务器动态分配的。但在某些情况下,你可能需要为你的计算机配置静态IP地址。

例如配置端口转发或运行媒体服务器,可能需要设置静态IP地址。为了使宿主机器和Virtualbox虚拟机进行网络连接,你也需要配置静态IP地址。

本教程说明如何在Ubuntu 18.04上设置静态IP地址。在Ubuntu配置静态IP的方式有三种。在下文中接口,是我们通常所说的网卡。

第一种使用DHCP服务器配置静态IP地址。第二种在本地计算机上使用Netplan网络管理工具配置静态IP。第三种使用GUI工具是在Ubuntu桌面上配置静态IP地址。

使用DHCP配置静态IP地址

向局域网上的设备分配静态IP地址的最简单的方法是在路由器上配置静态DHCP。 静态DHCP或DHCP保留功能是大多数路由器上都可以使用的功能。

每次设备向DHCP服务器请求地址时,DHCP服务器都会自动为指定的网络设备分配相同的IP地址。这是通过设备的MAC地址实现的。

配置DHCP保留的步骤因路由器而异。有关更多信息,请参阅供应商的文档。

Netplan配置静态IP地址

Ubuntu 17.10及更高版本使用Netplan作为默认网络管理工具。先前的Ubuntu版本使用ifconfig及其配置文件/etc/network/interfaces来配置网络。

Netplan配置文件使用YAML语法编写,文件扩展名为.yaml。要使用Netplan配置网络接口,您需要为该接口创建YAML描述,然后Netplan会使用所选的渲染器工具生成所需的配置文件。

Netplan支持两个渲染器,NetworkManager和Systemd-networked。NetworkManager主要在台式机上使用,而Systemd-networked在没有GUI的服务器上使用。

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

在Ubuntu 18.04系统使用predictable network interface names可预测的网络接口名称标识网络接口。

设置静态IP地址的第一步是识别要配置的以太网接口的名称,如果你有多个接口,请确定你需要配置的接口名称。

首先我们需要知道所有网络接口的名称。使用ip命令显示所有网络接口的列表。找到你需要配置静态IP地址的接口。

ip addr命令将显示所有接口的名称包括IP,选择这个命令是因为可以知道那个接口没有分配到IP地址,也可以根据IP找到指定接口。

以下ip addr将输出你的计算机上所有接口的名称包括IP地址:

ip addr

ip addr命令将打印所有可用网络接口的列表:

1: lo: <LOOPBACK,UP,LOWER_UP> 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
2: enp0s9: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
    link/ether 08:00:27:9b:4d:9d brd ff:ff:ff:ff:ff:ff

你可能已经看到教程中的enp0s9接口没有分配到IP地址,这是VirtualBox虚拟机中其中一个接口,它使用Host-only适配器。它没能在DHCP服务器获得IP地址。

现在已经找到需要配置接口的名称。开始对enp0s9接口配置静态的IP。在Ubuntu 18.04是使用Netplan作为网络管理器。要配置静态IP只需要配置Netplan配置文件。

Netplan配置文件存储在/etc/netplan目录中。您可能会在此目录中找到一个或多个yaml文件。文件的名称可能因安装程序而异。

通常文件名为01-netcfg.yaml50-cloud-init.yamlNN_interfaceName.yaml,但在您的系统中可能有所不同。

但在我们的教程中Netplan配置文件是名称是00-installer-config.yaml,Ubuntu官方下载Ubuntu 18.04服务器发行版的名称。

使用你喜欢的文本编辑器,打开Netplan配置文件。在本教程中,我们将使用vim编辑器打开文件。并在网络接口上分配静态IP地址。

首先请记得使用cp命令备份配置文件,然后使用vim命令将打开Netplan配置文件/etc/netplan/00-installer-config.yaml:

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

在更改配置之前,简要说明一下配置选项含义。每个Netplan Yaml文件都以network键开头。

network至少包含两个必需元素和一个可选元素。第一个必需元素是网络配置格式的版本version,第二个是设备类型。设备类型可以是ethernetsbondsbridgesvlans

还有一个是renderer。如果您以服务器模式安装Ubuntu,则开箱即用,networkd作为renderer渲染器的后端。

ethernets设备类型下,您可以指定一个或多个网络接口。在此示例中,我们只有一个接口enp0s9,默认情况下该接口被配置为从DHCP服务器dhcp4: yes获取IP寻址。

要将静态IP地址分配给enp0s9接口,首先将DHCP设置为dhcp4: no。指定静态IP地址。在addresses: 字段中,您可以添加一个或多个IPv4或IPv6 IP地址分配给网络接口。

在指定IP地址时,ip地址之后的子网掩码是必须的,在使用IP V6时也一样必须带有子网掩码,以下IP V4地址的掩码是24。

gateway4字段是网关字段,即路由器的地址。在nameservers字段,设置域名服务器IP地址。

network:
  version: 2
  renderer: networkd
  ethernets:
    enp0s9:
      dhcp4: no
      addresses:
        - 192.168.121.221/24
        - 你的IPV6地址
      gateway4: 192.168.121.1
      nameservers:
          addresses: [8.8.8.8, 1.1.1.1]
/etc/netplan/01-netcfg.yaml

编辑Yaml文件时,请确保遵循YAML代码缩进标准。如果语法不正确,则更改将不会应用。现在退出保存并退出vim编辑器

保存后,运行以下netplan命令,应用修改后的配置文件,使静态IP地址在当前会话中可用。然后再运行ip addr命令展示所有网卡的ip地址:

sudo netplan apply
ip addr
2: enp0s9: <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

至此,您已为Ubuntu服务器配置静态IP。最后值得一提的是有些VPS的提供商,会在你的VPS服务器中,添加启动脚本以动态获取IP地址。

如果您的Ubuntu服务器云实例配置有cloud-init脚本,则需要将其禁用。至于禁用的方法,这里没有统一的答案,自己研究。

在Ubuntu桌面上配置静态IP地址

在Ubuntu桌面计算机上设置静态IP地址不需要任何技术知识。在Activities活动屏幕中,搜索settings打开设置,然后单击图标。

这将打开GNOME设置窗口。根据要修改的接口,在网络Wi-Fi选项卡上单击要打开网络接口设置,请单击网络接口名称旁边的齿轮图标。

IPV4选项卡中,选择手动,然后输入您的静态IP地址,网络掩码和网关。完成后,单击应用按钮。

要验证更改,请使用Ctrl+Alt+T键盘快捷键或单击终端图标打开终端,然后运行ip addr命令展示所有接口的IP地址:

ip addr

输出将显示接口IP地址:

...
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 

network: {config: disabled}
sudo vim /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg

结论

我们向您展示了如何在Ubuntu 18.04上配置静态IP地址。如有任何疑问,请在下面发表评论。