设置 IP 地址

LinuxBeginner
立即练习

介绍

在计算机网络中,IP (Internet Protocol) 地址是分配给连接到计算机网络的每个设备的数字标签。此地址用于两个主要功能:主机或网络接口标识以及位置寻址。

IP 地址有两种主要的分配方式:

  • DHCP (Dynamic Host Configuration Protocol,动态主机配置协议): IP 地址由网络上的服务器自动分配。这是客户端设备最常用的方法。
  • 静态 IP (Static IP): IP 地址是手动配置的,并且不会改变。这通常用于服务器、打印机或其他需要固定地址的设备。

在现代 Ubuntu 系统中,网络配置由一个名为 netplan 的工具管理。netplan 使用简单的 YAML 文件来描述网络接口。

在这个 Lab 中,你将学习如何从动态 (DHCP) IP 地址切换到静态 IP 地址,然后再恢复更改。这是任何 Linux 系统管理员的一项基本技能。

检查当前网络配置

在实际场景中,更改远程服务器的主 IP 地址可能会导致你无法访问。为避免这种情况,一个常见的做法是将当前通过 DHCP 分配的 IP 地址转换为静态地址。在这一步中,你将查找你的虚拟机当前的网络设置。

首先,使用 ip 命令显示 eth0 接口的网络配置:

ip addr show eth0

你将看到类似以下的输出。注意包含当前 IPv4 地址和子网前缀(/ 后面的数字)的 inet 行。

2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:16:3e:0d:25:f1 brd ff:ff:ff:ff:ff:ff
    altname enp0s5
    altname ens5
    inet 172.16.50.173/24 metric 100 brd 172.16.50.255 scope global dynamic eth0
       valid_lft 1892159962sec preferred_lft 1892159962sec
    inet6 fe80::216:3eff:fe0d:25f1/64 scope link
       valid_lft forever preferred_lft forever

接下来,找到你的默认网关 (default gateway)。这是你的虚拟机用于与其他网络通信的路由器。

ip route show

default via 开头的行会显示你的网关地址。

default via 172.16.50.253 dev eth0 proto dhcp src 172.16.50.173 metric 100
172.16.50.0/24 dev eth0 proto kernel scope link src 172.16.50.173 metric 100

从上面的输出中,IP 地址是 172.16.50.173,前缀是 24,网关是 172.16.50.253你的值可能不同,请确保在下一步中使用你自己的终端输出中的值。

配置静态 IP 地址

现在你将修改网络配置文件,以分配一个静态 IP 地址。这涉及到关闭 DHCP,并使用你刚刚找到的值手动指定 IP 地址、网关和 DNS 服务器。

首先,使用 nano 打开配置文件:

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

现在,修改文件以使用你当前的 IP、前缀和网关作为静态值。YAML 文件对缩进非常敏感,所以请确保使用空格而不是制表符 (tab),并与所示的缩进级别完全匹配。

请将占位符 YOUR_IP/PREFIXYOUR_GATEWAY 替换为你在上一步中找到的实际值。

## This is the network config written by 'subiquity'
network:
  ethernets:
    eth0:
      dhcp4: false
      addresses:
        - YOUR_IP/PREFIX
      routes:
        - to: default
          via: YOUR_GATEWAY
      nameservers:
        addresses: [8.8.8.8, 8.8.4.4]
  version: 2

例如,如果你的 IP 是 172.16.50.173/24,网关是 172.16.50.253,那么你的文件将如下所示:

## This is the network config written by 'subiquity'
network:
  ethernets:
    eth0:
      dhcp4: false
      addresses:
        - 172.16.50.173/24
      routes:
        - to: default
          via: 172.16.50.253
      nameservers:
        addresses: [8.8.8.8, 8.8.4.4]
  version: 2

以下是配置的说明:

  • dhcp4: false: 这会禁用 IPv4 的自动 DHCP 客户端。
  • addresses: 这设置了静态 IP 地址和子网。
  • routes: 此部分定义了默认网关。
  • nameservers: 这设置了 DNS 服务器。在这里,我们使用的是 Google 的公共 DNS 服务器。

完成更改后,按 Ctrl+O 保存文件,然后按 Enter 确认文件名。最后,按 Ctrl+X 退出 nano

使用 netplan apply 命令应用更改

在这一步中,你将应用新的网络配置。仅仅保存配置文件是不够的;你必须告诉 netplan 读取新的配置并将其应用到系统上。

这是通过 netplan apply 命令完成的。此命令将解析 /etc/netplan/ 目录下的所有 .yaml 文件,将它们转换为系统可以理解的格式,并使更改生效。

因为此命令会修改系统的网络状态,所以它需要 sudo 权限。

在你的终端中运行以下命令:

sudo netplan apply

注意: 运行此命令后,你与 LabEx 实验的连接可能会短暂断开,然后自动重新连接。如果它没有自动重新连接,请刷新你的浏览器页面。

如果命令成功且你的 YAML 语法正确,它将执行而没有任何输出。如果你看到错误,很可能是由于你的 01-netcfg.yaml 文件中存在缩进或语法错误。如果发生这种情况,请重新打开文件,并仔细检查你所做的更改是否与上一步中的示例相符。

验证静态 IP 配置

在这一步中,你将验证静态 IP 地址是否已成功应用。由于我们使用了实验机(VM)已经拥有的 IP 地址,你的连接应该没有中断。

在 Linux 系统上检查当前 IP 地址的最佳方法是使用 ip 命令。再次对 eth0 接口运行 ip addr show 命令。

ip addr show eth0

你应该看到与你在步骤 1 中看到的内容几乎相同的输出。查找显示 IPv4 地址的 inet 行。注意,像 dynamicmetric 这样的关键字现在已经消失了,并且 valid_lft 设置为 forever

2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:16:3e:0d:25:f1 brd ff:ff:ff:ff:ff:ff
    altname enp0s5
    altname ens5
    inet 172.16.50.173/24 brd 172.16.50.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::216:3eff:fe0d:25f1/64 scope link
       valid_lft forever preferred_lft forever

关键的区别在于,IP 地址现在是由 netplan 静态配置的,而不是从 DHCP 服务器租用的。这确认了你的静态 IP 配置是成功的。

恢复到 DHCP

在最后一步中,你将把网络配置恢复为使用 DHCP。当你不再需要静态 IP 或希望网络自动管理地址时,这样做很有用。这个过程是你之前操作的逆过程。

首先,再次使用 nano 打开配置文件:

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

现在,删除静态配置行,并将 dhcp4 设置回 true。整个文件应该看起来像简单、原始的版本:

## This is the network config written by 'subiquity'
network:
  ethernets:
    eth0:
      dhcp4: true
  version: 2

保存文件(Ctrl+OEnter)并退出 nanoCtrl+X)。

接下来,像之前一样应用更改:

sudo netplan apply

注意: 运行此命令后,你与 LabEx 实验的连接可能会短暂断开,然后自动重新连接。如果它没有自动重新连接,请刷新你的浏览器页面。

最后,验证系统现在是否正在使用由 DHCP 分配的 IP 地址。再次运行 ip addr show eth0 命令:

ip addr show eth0

输出现在将显示与之前相同的 inet 地址,但这次它是由网络的 DHCP 服务器自动分配的,这通过 dynamic 关键字和特定的租约时间(valid_lft)的恢复来表明。这确认你已成功切换回 DHCP。

总结

恭喜你完成了本次实验!你已成功在一个现代 Ubuntu 系统上配置了网络设置。

在本次实验中,你学会了如何:

  • /etc/netplan/ 中定位 netplan 配置文件。
  • 使用带 sudonano 编辑器来修改系统配置文件。
  • 理解设置静态 IP 地址与使用 DHCP 的基本 YAML 语法。
  • 使用 sudo netplan apply 命令应用新的网络配置。
  • 使用 ip addr show 命令验证网络接口的当前 IP 地址。

这些是管理任何 Linux 服务器或桌面的基本技能,让你能够控制系统如何在网络上识别自己。