介绍
在本实验中,你将学习在 Linux 环境中管理 IP 地址的基础技能。你将首先使用现代的 ip 命令来检查系统的网络接口。在此之后,你将手动配置一个静态 IP 地址,设置一个默认网关以实现与外部网络的通信,然后使用 ping 工具来验证你的连接。
接下来,你将通过释放静态地址并使用 dhclient 命令从 DHCP 服务器自动获取新的 IP 地址来探索动态 IP 配置。为了完成本次实验,你将使用 arp 和 traceroute 命令来进一步检查和验证你的网络配置,确保所有组件都能正常工作。
使用 ip a 检查网络接口
在此步骤中,你将学习如何检查 Linux 系统上的网络接口。在配置 IP 地址之前,你必须先确定要配置的网络接口的名称。每一次连接,无论是有限的还是无线 的,都通过一个网络接口进行管理。
在 Linux 中查看和操作网络接口的现代标准命令是 ip。我们将使用它以及 a (或 address) 参数来显示所有网络接口及其分配的 IP 地址。
打开你的终端。你应该已经在
~/project目录中。要列出所有网络接口及其当前配置,请运行以下命令:
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 地址 到接口,这是一种常见且安全的操作。
为
eth0接口分配新的静态 IP 地址192.168.1.10和/24子网掩码。如果你的接口名称不同,请使用该名称。sudo ip addr add 192.168.1.10/24 dev eth0此命令在不影响现有地址的情况下添加新地址。如果成功,它不会产生任何输出。
最后,验证新 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 意味着较低的优先级,因此系统不会将其用于实际流量,从而保持我们的连接安全。
让我们为
192.168.1.0/24网络添加一个默认网关路由。我们将网关的 IP 设置为192.168.1.1,并为其分配一个metric为200。sudo ip route add default via 192.168.1.1 dev eth0 metric 200default: 指定这是默认路由。via 192.168.1.1: 网关路由器的 IP 地址。dev eth0: 该路由可以通过eth0接口访问。metric 200: 使此路由的优先级低于主要的、现有的路由(其 metric 更低)。
通过显示路由表来验证路由是否已添加。
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 ... (可能存在其他路由)现在,让我们使用
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 包的一部分,可能默认未安装。让我们确保它可用。
更新你的系统包列表并安装 DHCP 客户端:
sudo apt-get update sudo apt-get install -y isc-dhcp-client现在,让我们安全地删除你在前几个步骤中添加的静态 IP 和路由,而不会中断你的连接。
从
eth0删除静态 IP 地址:sudo ip addr del 192.168.1.10/24 dev eth0删除我们添加的静态默认路由:
sudo ip route del default via 192.168.1.1 dev eth0现在你的网络配置已恢复到原始状态。为了演示
dhclient,让我们请求刷新 DHCP 服务器的 IP 地址。首先,释放当前的 DHCP 租约。
sudo dhclient -r eth0接下来,从 DHCP 服务器请求新的租约。
sudo dhclient eth0你可能会看到消息
RTNETLINK answers: File exists。这是正常的。它只是意味着dhclient正在尝试添加已存在的路由,因此无需更改。你的连接将保持稳定。通过再次查看
eth0接口来验证你的配置。ip a show eth0输出现在应该只显示你原始的动态 IP 地址,可能在
172.16.x.x或172.17.x.x范围内。静态 IP192.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 租约。
使用 arp 和 traceroute 验证网络配置
在最后一步中,你将学习使用 arp 和 traceroute 来检查你的网络配置。
首先,让我们确保必要的工具已安装。arp 在 net-tools 中,而 traceroute 在其自己的包中。
安装
net-tools和traceroute:sudo apt-get update sudo apt-get install -y net-tools traceroute
使用 arp 查看 ARP 缓存
地址解析协议 (ARP) 在本地网络上将 IP 地址映射到物理 MAC 地址。结果存储在 ARP 缓存中。
为了填充你的 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现在,ping 该网关 IP(例如,上面示例中的
172.16.50.253)以生成流量。ping -c 1 <your-gateway-ip>使用
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 命令显示数据包到达目的地所经过的路由器序列(“跃点”)。
让我们跟踪到像
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 地址,以及使用 ping、arp 和 traceroute 等关键工具来验证和排查你的网络。
总结
在本实验中,你学习了在 Linux 环境中管理 IP 地址的基础技能。你首先使用 ip a 命令检查网络接口及其当前配置,以识别目标接口,如 eth0。然后,你练习使用 ip addr add 手动分配静态 IP 地址和子网掩码,接着使用 ip route add 设置默认网关,以启用与外部网络的通信。为了与手动配置形成对比,你还学习了如何使用 dhclient 命令从 DHCP 服务器自动获取 IP 地址、子网掩码和网关。
此外,你还探索了重要的网络验证和故障排除工具。你使用 ping 命令来确认与默认网关和外部主机的基本网络连接。为了更深入地了解网络层,你使用 arp 命令检查了地址解析协议 (ARP) 缓存,以查看 IP 到 MAC 地址的映射。最后,你使用 traceroute 来逐跳跟踪到目的地的网络路径,验证了你的路由配置。



