介绍
欢迎,网络导航员!你刚刚被一家快速发展的科技初创公司聘为初级系统管理员。今天早上,一台关键的 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(套接字统计)命令是一个用于调查此问题的现代且快速的工具。
任务
- 内部门户网站应该在端口
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:显示数字形式的端口号,而不是服务名称。-p:显示使用该套接字的进程。
- 你可以组合这些标志,例如
ss -tlnp。 - 要查找特定端口,可以将
ss的输出通过管道传输给grep命令。例如:ss -tlnp | grep 8000。
配置基础防火墙规则
你已经确认了一切:接口已启动、IP 已设置、互联网连通性正常,且应用程序正在正确的端口上监听。现在只剩下一个主要嫌疑对象:防火墙。它很可能阻止了进入门户网站的流量。你的最后一项任务是配置防火墙以拒绝访问门户网站。我们将使用 ufw(简单防火墙),这是一个用于管理防火墙规则的友好前端。
任务
- 添加一条防火墙规则,拒绝端口
8000上的入站流量。 - 添加一条防火墙规则,允许入站 SSH 流量(端口 22)。
- 启用防火墙以应用新规则。
要求
- 所有操作必须使用
ufw命令。 - 你必须使用
sudo,因为修改防火墙规则需要管理员权限。
示例
配置防火墙规则后,运行 sudo ufw status 应显示防火墙已激活,端口 8000 已被拒绝,而 SSH(端口 22)已被允许。
## 启用防火墙并设置端口 8000 拒绝、SSH 允许后的预期输出
Status: active
To Action From
-- ------ ----
22 ALLOW Anywhere
8000 DENY Anywhere
22 (v6) ALLOW Anywhere (v6)
8000 (v6) DENY Anywhere (v6)
添加规则时,你应该看到:
Rules updated
Rules updated (v6)
启用防火墙时,你应该看到:
Firewall is active and enabled on system startup
提示
ufw的语法非常直观。要拒绝某个端口的流量,使用ufw deny <port>。- 你可以使用
sudo ufw deny 8000拒绝端口 8000 的流量。 - 你可以使用
sudo ufw allow ssh或sudo ufw allow 22专门允许 SSH 流量。 - 关键警告: 如果你没有正确开启 SSH 端口(22),验证将会失败,因为验证过程依赖此端口进行 SSH 连接。
- 重要警告: 请勿随意修改其他端口的防火墙规则,否则可能导致在线虚拟机故障。
- 添加规则后,你必须使用
sudo ufw enable启用防火墙。
总结
干得漂亮,导航员!通过系统地检查网络接口、验证 IP 配置、测试连通性、检查开放端口以及最后配置防火墙,你已经成功诊断并解决了问题。内部门户网站现在已恢复正常,你赢得了团队的尊重。
你展示了对 ip、ifconfig、ping、ss 和 ufw 等基础 Linux 网络工具的扎实掌握。这种逻辑严密、循序渐进的排错过程是任何系统管理员的核心技能,并将在你的职业生涯中发挥巨大作用。继续磨练你的技能吧!



