介绍
欢迎你,网络导航员!你刚刚入职一家快速发展的科技初创公司,担任初级系统管理员。今天早上,一台关键的 Web 服务器离线了,用户反馈无法访问公司的内部门户网站。
你的高级管理员正在开会,他将初步诊断的任务交给了你。这是你大显身手的好机会!你的任务是系统地调查服务器的网络状态,找出根本原因并恢复连接。让我们让这台服务器恢复在线吧!
- 可以暂时跳过该挑战,继续学习 Linux 学习路径 中的后续引导式实验。
- 与 Labby 讨论或查看解决方案。
检查网络接口状态
作为网络导航员,你的第一步是收集基础信息。网络硬件是否被识别并处于活动状态?你需要检查服务器上所有网络接口的状态。完成这项工作的现代工具是 ip 命令。
任务
- 使用
ip命令显示所有网络接口的状态和配置。
要求
- 你必须使用
ip addr命令来执行此检查。
示例
运行命令后,你应该能看到显示网络接口的输出,例如 lo(回环接口)和 eth0(或类似名称)。查看主接口的状态——它应该显示为 UP,表示它处于活动状态。
## 预期输出格式(接口名称可能有所不同)
1: lo: 65536 qdisc noqueue state UNKNOWN group default qlen 1000 < LOOPBACK,UP,LOWER_UP > mtu
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: 1500 qdisc mq state UP group default qlen 1000 < BROADCAST,MULTICAST,UP,LOWER_UP > mtu
link/ether 00:16:3e:04:b0:40 brd ff:ff:ff:ff:ff:ff
inet 172.16.50.108/24 metric 100 brd 172.16.50.255 scope global dynamic eth0
valid_lft 1892159216sec preferred_lft 1892159216sec
提示
ip命令是一个功能强大的工具,拥有许多子命令。用于管理地址的子命令是addr。- 你可以使用
ip addr show或其简写形式ip addr。
验证 IP 地址配置
好了,接口状态是 UP,这是一个好的开始。但它有 IP 地址吗?没有 IP 地址的接口无法在网络上进行通信。虽然 ip addr 可以显示这些信息,但让我们使用另一个经典命令 ifconfig 来进行二次确认。掌握多种工具来完成同一项工作是非常有益的。
任务
- 使用
ifconfig命令验证 IP 地址配置。
要求
- 你必须使用
ifconfig命令。
示例
输出应显示你的网络接口及其 IP 地址。查看主网络接口(如 eth0)下的 inet 字段,以确认 IP 配置。
## 预期显示 IP 配置的输出
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 172.16.50.108 netmask 255.255.255.0 broadcast 172.16.50.255
ether 00:16:3e:04:b0:40 txqueuelen 1000 (Ethernet)
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
提示
ifconfig命令属于net-tools软件包,我们已经为你安装好了。- 直接运行
ifconfig而不带任何参数,将显示所有活动接口。
测试与远程主机的连通性
服务器拥有活动的接口和 IP 地址。下一步合乎逻辑的操作是检查它是否能连接到外部网络。如果此处失败,可能意味着网关或 DNS 设置存在问题。ping 命令是进行此项测试的完美工具。
任务
- 通过向 Google 的公共 DNS 服务器
8.8.8.8发送正好 3 个 ICMP 数据包,测试服务器的互联网连通性。
要求
- 你必须使用
ping命令。 - 你必须将发送的数据包数量限制为 3 个。
- 目标 IP 地址必须是
8.8.8.8。
示例
如果连通性正常,你应该能看到来自目标 IP 地址的回复以及时间信息。最后的摘要应显示已发送 3 个数据包,已接收 3 个数据包,丢包率为 0%。
## 预期成功的输出模式
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=119 time=4.33 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=119 time=4.30 ms
64 bytes from 8.8.8.8: icmp_seq=3 ttl=119 time=4.30 ms
--- 8.8.8.8 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2002ms
rtt min/avg/max/mdev = 4.298/4.309/4.329/0.014 ms
提示
ping命令会无限期运行,除非你告诉它停止。- 使用
-c选项来指定要发送的数据包数量(count)。
查看开放的网络端口
连通性没问题!那么,为什么内部门户仍然无法访问呢?问题可能出在应用程序本身。Web 服务器进程是否真的在运行,并且正在正确的端口上监听连接?ss(socket statistics,套接字统计)命令是一个现代且快速的调查工具。
任务
- 内部门户应该运行在
8000端口上。使用ss命令检查是否有进程正在监听8000端口上的 TCP 连接。
要求
- 你必须使用
ss命令。 - 你的命令应构建为显示正在监听的 TCP 套接字。
示例
如果有一个进程正在监听 8000 端口,你应该能看到包含监听套接字信息的输出。寻找一行在 Local Address(本地地址)列中显示 8000 端口的信息。
## 预期输出显示 8000 端口上有监听进程
LISTEN 0 5 0.0.0.0:8000 0.0.0.0:* users:(("python3",pid=3765,fd=3))
提示
ss命令有几个有用的标志:-t: 显示TCP 套接字。-l: 显示正在listening(监听)的套接字。-n: 显示numeric(数字)端口号,而不是服务名称。-p: 显示使用该套接字的process(进程)。
- 你可以组合这些标志,例如
ss -tlnp。 - 要查找特定端口,你可以将
ss的输出通过管道传递给grep命令。例如:ss -tlnp | grep 8000。
配置基础防火墙规则
你已经确认了一切:接口已启动,IP 已设置,互联网连通性正常,应用程序也在正确的端口上监听。现在只剩下一个主要嫌疑人:防火墙。它很可能阻止了通往门户的入站流量。你的最终任务是配置防火墙,以便流量能够再次到达门户。我们将使用 ufw(Uncomplicated Firewall,简单防火墙),这是一个用于管理防火墙规则的用户友好型前端。
任务
- 添加一条防火墙规则,允许
8000端口的入站流量。 - 添加一条防火墙规则,允许 SSH 入站流量(22 端口)。
- 启用防火墙以应用新规则。
要求
- 你必须对所有操作使用
ufw命令。 - 你必须使用
sudo,因为修改防火墙规则需要管理员权限。
示例
配置防火墙规则后,运行 sudo ufw status 应该显示防火墙已激活,且 8000 端口和 SSH(22 端口)已被允许。
## 预期输出:启用防火墙且 8000 端口和 SSH 已被允许
Status: active
To Action From
-- ------ ----
22 ALLOW Anywhere
8000 ALLOW Anywhere
22 (v6) ALLOW Anywhere (v6)
8000 (v6) ALLOW Anywhere (v6)
添加规则时,你应该看到:
Rules updated
Rules updated (v6)
启用防火墙时,你应该看到:
Firewall is active and enabled on system startup
提示
ufw的语法非常直观。要允许某个端口的流量,请使用ufw allow <port>。- 你可以使用
ufw allow 8000允许 8000 端口的流量。 - 你可以使用
ufw allow ssh或ufw allow 22专门允许 SSH 流量。 - 严重警告: 如果你不正确地打开 SSH 端口(22),验证将会失败,因为验证过程依赖此端口进行 SSH 连接。
- 重要警告: 请勿随意修改其他端口的防火墙规则,否则可能导致在线虚拟机故障。
- 添加规则后,必须使用
ufw enable启用防火墙。
总结
干得漂亮,导航员!通过系统地检查网络接口、验证 IP 配置、测试连通性、查看开放端口,最后配置防火墙,你已经成功诊断并解决了问题。内部门户现在已恢复在线,你也赢得了团队的尊重。
你展示了对 Linux 网络基础工具(如 ip、ifconfig、ping、ss 和 ufw)的扎实掌握。这种逻辑严密的故障排查过程是任何系统管理员的关键技能,将在你的职业生涯中发挥不可估量的作用。继续磨练你的技能吧!



