Linux IP 地址管理

CompTIABeginner
立即练习

介绍

在本实验中,你将学习在 Linux 环境中管理 IP 地址的基础技能。你将首先使用现代的 ip 命令来检查系统的网络接口。在此之后,你将手动配置一个静态 IP 地址,设置一个默认网关以实现与外部网络的通信,然后使用 ping 工具来验证你的连接。

接下来,你将通过释放静态地址并使用 dhclient 命令从 DHCP 服务器自动获取新的 IP 地址来探索动态 IP 配置。为了完成本次实验,你将使用 arptraceroute 命令来进一步检查和验证你的网络配置,确保所有组件都能正常工作。

这是一个实验(Guided Lab),提供逐步指导来帮助你学习和实践。请仔细按照说明完成每个步骤,获得实际操作经验。根据历史数据,这是一个 中级 级别的实验,完成率为 76%。获得了学习者 97% 的好评率。

使用 ip a 检查网络接口

在此步骤中,你将学习如何检查 Linux 系统上的网络接口。在配置 IP 地址之前,你必须先确定要配置的网络接口的名称。每一次连接,无论是有限的还是无线 的,都通过一个网络接口进行管理。

在 Linux 中查看和操作网络接口的现代标准命令是 ip。我们将使用它以及 a (或 address) 参数来显示所有网络接口及其分配的 IP 地址。

  1. 打开你的终端。你应该已经在 ~/project 目录中。

  2. 要列出所有网络接口及其当前配置,请运行以下命令:

    ip a

    你将看到类似以下的输出。确切的细节,例如接口名称 (eth0, enp0s5)、IP 地址和 MAC 地址,每次启动新的实验环境时都会有所不同。

    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
           valid_lft forever preferred_lft forever
    2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
        link/ether 00:16:3e:0f:23:a5 brd ff:ff:ff:ff:ff:ff
        altname enp0s5
        inet 172.16.50.11/24 metric 100 brd 172.16.50.255 scope global dynamic eth0
           valid_lft 1892159972sec preferred_lft 1892159972sec
    3: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default
        link/ether 02:42:bb:cb:56:62 brd ff:ff:ff:ff:ff:ff
        inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
           valid_lft forever preferred_lft forever

理解输出:

  • 1: lo: 这是 loopback 接口,一个系统用于与自身通信的虚拟接口。它始终具有 IP 地址 127.0.0.1
  • 2: eth0: 这是你的主要 Ethernet (有线) 接口。你的接口可能有一个不同的名称,或者显示 altname (备用名称),如 enp0s5。这是我们将要操作的接口。
  • 3: docker0: 你可能会看到其他接口,如 docker0,这是 Docker 容器引擎使用的。在本实验中,你可以忽略它。
  • inet 172.16.50.11/24: 这是分配给你的接口的 IPv4 地址。你看到的地址会有所不同。这是允许你连接到此远程实验的地址。
  • link/ether ...: 这是接口的 MAC 地址,一个唯一的硬件标识符。

现在你已经能够识别你的主要网络接口 (eth0),你已准备好学习如何配置它。

配置辅助静态 IP 地址

在此步骤中,你将为你的网络接口手动分配一个额外的静态 IP 地址。静态 IP 对于需要始终保持在同一地址可访问的服务器非常有用。

重要提示: 由于你处于远程实验会话中,因此不得删除现有的 IP 地址或关闭网络接口。这样做会中断你的连接。我们将改为 添加第二个 IP 地址 到接口,这是一种常见且安全的操作。

  1. eth0 接口分配新的静态 IP 地址 192.168.1.10/24 子网掩码。如果你的接口名称不同,请使用该名称。

    sudo ip addr add 192.168.1.10/24 dev eth0

    此命令在不影响现有地址的情况下添加新地址。如果成功,它不会产生任何输出。

  2. 最后,验证新 IP 地址是否已分配。再次使用 ip a 命令,指定 eth0 接口。

    ip a show eth0

    现在你应该看到为 eth0 接口列出的 两个 IP 地址:原始的动态 IP 地址和新的静态 IP 地址。

    2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
        link/ether 00:16:3e:0f:23:a5 brd ff:ff:ff:ff:ff:ff
        altname enp0s5
        inet 172.16.50.11/24 metric 100 brd 172.16.50.255 scope global dynamic eth0
           valid_lft 1892159595sec preferred_lft 1892159595sec
        inet 192.168.1.10/24 scope global eth0
           valid_lft forever preferred_lft forever
        inet6 fe80::216:3eff:fe0f:23a5/64 scope link
           valid_lft forever preferred_lft forever

    请注意,现在显示了第二个 inet 字段 192.168.1.10/24。你已成功添加了一个临时的静态 IP 地址,同时保持了连接的畅通。

设置默认网关并使用 ping 验证连通性

在此步骤中,你将设置一个默认网关并测试网络连通性。默认网关 是当目标位于另一个网络(如互联网)时,你的系统发送流量的路由器。

你的系统已经有一个由实验环境提供的默认网关。更改或删除它会破坏你的连接。为了安全地练习此命令,我们将添加一个新的、第二个默认路由,并设置一个更高的 metric。更高的 metric 意味着较低的优先级,因此系统不会将其用于实际流量,从而保持我们的连接安全。

  1. 让我们为 192.168.1.0/24 网络添加一个默认网关路由。我们将网关的 IP 设置为 192.168.1.1,并为其分配一个 metric200

    sudo ip route add default via 192.168.1.1 dev eth0 metric 200
    • default: 指定这是默认路由。
    • via 192.168.1.1: 网关路由器的 IP 地址。
    • dev eth0: 该路由可以通过 eth0 接口访问。
    • metric 200: 使此路由的优先级低于主要的、现有的路由(其 metric 更低)。
  2. 通过显示路由表来验证路由是否已添加。

    ip route

    输出将很复杂且各不相同,但现在应该包含 两个default 开头的行。你的原始网关将具有较低的 metric(例如 100),而我们的新网关将具有 metric 200。

    default via 172.16.50.253 dev eth0 proto dhcp src 172.16.50.11 metric 100
    default via 192.168.1.1 dev eth0 metric 200
    172.16.50.0/24 dev eth0 proto kernel scope link src 172.16.50.11 metric 100
    192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.10
    ... (可能存在其他路由)
  3. 现在,让我们使用 ping 来测试连通性。它向主机发送一个 ICMP“回显请求”以查看其是否可达。让我们尝试 ping 我们刚刚为假想网络配置的网关。

    ping -c 3 192.168.1.1

    预期结果: 此命令 预期会失败。由于我们将 IP 192.168.1.10/24 添加到了 eth0,系统会假定 192.168.1.1 位于同一本地网络。它将尝试直接访问它,但不存在具有该地址的设备,因此你将看到“Destination Host Unreachable”(目标主机不可达)。

    PING 192.168.1.1 (192.168.1.1) 56(84) bytes of data.
    From 192.168.1.10 icmp_seq=1 Destination Host Unreachable
    From 192.168.1.10 icmp_seq=2 Destination Host Unreachable
    From 192.168.1.10 icmp_seq=3 Destination Host Unreachable
    
    --- 192.168.1.1 ping statistics ---
    3 packets transmitted, 0 received, +3 errors, 100% packet loss, time 2039ms

    这是正确且预期的结果。你已学会如何添加默认路由并使用 ping 进行测试。

使用 dhclient 恢复动态 IP 地址

在此步骤中,你将删除你创建的静态配置,然后使用 dhclient 从 DHCP 服务器刷新动态 IP 租约。

首先,dhclient 工具,它是 isc-dhcp-client 包的一部分,可能默认未安装。让我们确保它可用。

  1. 更新你的系统包列表并安装 DHCP 客户端:

    sudo apt-get update
    sudo apt-get install -y isc-dhcp-client

    现在,让我们安全地删除你在前几个步骤中添加的静态 IP 和路由,而不会中断你的连接。

  2. eth0 删除静态 IP 地址:

    sudo ip addr del 192.168.1.10/24 dev eth0
  3. 删除我们添加的静态默认路由:

    sudo ip route del default via 192.168.1.1 dev eth0

    现在你的网络配置已恢复到原始状态。为了演示 dhclient,让我们请求刷新 DHCP 服务器的 IP 地址。

  4. 首先,释放当前的 DHCP 租约。

    sudo dhclient -r eth0
  5. 接下来,从 DHCP 服务器请求新的租约。

    sudo dhclient eth0

    你可能会看到消息 RTNETLINK answers: File exists。这是正常的。它只是意味着 dhclient 正在尝试添加已存在的路由,因此无需更改。你的连接将保持稳定。

  6. 通过再次查看 eth0 接口来验证你的配置。

    ip a show eth0

    输出现在应该只显示你原始的动态 IP 地址,可能在 172.16.x.x172.17.x.x 范围内。静态 IP 192.168.1.10 应该已消失。

    2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
        link/ether 00:16:3e:0f:23:a5 brd ff:ff:ff:ff:ff:ff
        altname enp0s5
        inet 172.16.50.11/24 metric 100 brd 172.16.50.255 scope global dynamic eth0
           valid_lft 1892159460sec preferred_lft 1892159460sec
        inet6 fe80::216:3eff:fe0f:23a5/64 scope link
           valid_lft forever preferred_lft forever

    你已成功清理了静态配置并刷新了动态 IP 租约。

使用 arptraceroute 验证网络配置

在最后一步中,你将学习使用 arptraceroute 来检查你的网络配置。

首先,让我们确保必要的工具已安装。arpnet-tools 中,而 traceroute 在其自己的包中。

  1. 安装 net-toolstraceroute

    sudo apt-get update
    sudo apt-get install -y net-tools traceroute

使用 arp 查看 ARP 缓存

地址解析协议 (ARP) 在本地网络上将 IP 地址映射到物理 MAC 地址。结果存储在 ARP 缓存中。

  1. 为了填充你的 ARP 缓存,首先从路由表中找到你的默认网关的 IP。

    ip route | grep default

    输出将显示你的网关 IP。请注意,IP 地址会有所不同。

    default via 172.16.50.253 dev eth0
    default via 172.16.50.253 dev eth0 proto dhcp src 172.16.50.11 metric 100
  2. 现在,ping 该网关 IP(例如,上面示例中的 172.16.50.253)以生成流量。

    ping -c 1 <your-gateway-ip>
  3. 使用 arp -a 显示 ARP 缓存。

    arp -a

    你将看到网关的 IP 和 MAC 地址。你可能还会看到我们之前尝试 ping 的 192.168.1.1 地址的 <incomplete> 条目,这是正常的。

    ? (192.168.1.1) at <incomplete> on eth0
    _gateway (172.16.50.253) at ee:ff:ff:ff:ff:ff [ether] on eth0

    这证实了你的系统已将网关的 IP 解析为 MAC 地址。

使用 traceroute 跟踪网络路径

traceroute 命令显示数据包到达目的地所经过的路由器序列(“跃点”)。

  1. 让我们跟踪到像 google.com 这样的公共域名的路由。

    traceroute google.com

    该命令将打印路径。注意: 在许多云环境中,traceroute 显示的第一个跃点可能是内部 IP 地址,而不是路由表中的默认网关。这是正常行为。

    traceroute to google.com (142.250.189.174), 30 hops max, 60 byte packets
     1  10.220.9.2 (10.220.9.2)  0.345 ms  ...
     2  11.73.5.1 (11.73.5.1)  1.978 ms ...
     3  ...
     8  sfo03s24-in-f14.1e100.net (142.250.189.174)  3.001 ms ...
    • 第一个跃点是实验提供商网络内的路由器。
    • 后续跃点显示了跨越互联网到最终目的地的路径。
    • 如果路径上的路由器不响应 traceroute 探测,可能会出现星号(* * *),这可能是由于防火墙或其他网络策略。

恭喜!你现在已经学会了如何在 Linux 系统上检查、静态配置和动态配置 IP 地址,以及使用 pingarptraceroute 等关键工具来验证和排查你的网络。

总结

在本实验中,你学习了在 Linux 环境中管理 IP 地址的基础技能。你首先使用 ip a 命令检查网络接口及其当前配置,以识别目标接口,如 eth0。然后,你练习使用 ip addr add 手动分配静态 IP 地址和子网掩码,接着使用 ip route add 设置默认网关,以启用与外部网络的通信。为了与手动配置形成对比,你还学习了如何使用 dhclient 命令从 DHCP 服务器自动获取 IP 地址、子网掩码和网关。

此外,你还探索了重要的网络验证和故障排除工具。你使用 ping 命令来确认与默认网关和外部主机的基本网络连接。为了更深入地了解网络层,你使用 arp 命令检查了地址解析协议 (ARP) 缓存,以查看 IP 到 MAC 地址的映射。最后,你使用 traceroute 来逐跳跟踪到目的地的网络路径,验证了你的路由配置。