介绍
在本实验中,你将学习在 Linux 环境中管理 IP 地址的基本技能。首先,你将使用现代的 ip 命令来检查系统的网络接口。随后,你将手动配置一个静态 IP 地址,设置默认网关以实现与外部网络的通信,并使用 ping 工具验证连接。
接下来,你将探索动态 IP 配置,通过释放静态地址并使用 dhclient 命令从 DHCP 服务器自动获取新的 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 interface)**,系统用于与自身通信的虚拟接口。它的 IP 地址始终为127.0.0.1。 - **
2: eth0**:这是你的主要 以太网 (有线) 接口。你的接口名称可能不同,或者显示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 地址。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 验证连通性
在此步骤中,你将设置一个默认网关并测试网络连通性。默认网关 (default gateway) 是当目标位于其他网络(如互联网)时,系统发送流量所经过的路由器。
你的系统已经由实验环境提供了一个默认网关。更改或删除它会中断你的连接。为了安全地练习此命令,我们将添加第二个具有更高 度量值 (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:使该路由的优先级低于现有的主要路由(其度量值较低)。
通过显示路由表来验证路由是否已添加。
ip route输出内容会比较复杂且因环境而异,但现在应该包含两行以
default开头的记录。你原来的网关度量值较低(例如 100),而我们新添加的网关度量值为 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预期结果: 此命令 预期会失败。由于我们将
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 地址,例如
10.x.x.x或172.16.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 逐跳追踪了到达目的地的网络路径,从而验证了路由配置。



