第 07 天:网络导航员

LinuxBeginner
立即练习

介绍

欢迎你,网络导航员!你刚刚入职一家快速发展的科技初创公司,担任初级系统管理员。今天早上,一台关键的 Web 服务器离线了,用户反馈无法访问公司的内部门户网站。

你的高级管理员正在开会,他将初步诊断的任务交给了你。这是你大显身手的好机会!你的任务是系统地调查服务器的网络状态,找出根本原因并恢复连接。让我们让这台服务器恢复在线吧!

重要提示
接下来的挑战内容可能会超出 Linux 快速入门 课程的范围。
如果在挑战过程中遇到困难:
  1. 可以暂时跳过该挑战,继续学习 Linux 学习路径 中的后续引导式实验。
  2. 与 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,简单防火墙),这是一个用于管理防火墙规则的用户友好型前端。

任务

  1. 添加一条防火墙规则,允许 8000 端口的入站流量。
  2. 添加一条防火墙规则,允许 SSH 入站流量(22 端口)。
  3. 启用防火墙以应用新规则。

要求

  • 你必须对所有操作使用 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 sshufw allow 22 专门允许 SSH 流量。
  • 严重警告: 如果你不正确地打开 SSH 端口(22),验证将会失败,因为验证过程依赖此端口进行 SSH 连接。
  • 重要警告: 请勿随意修改其他端口的防火墙规则,否则可能导致在线虚拟机故障。
  • 添加规则后,必须使用 ufw enable 启用防火墙。

总结

干得漂亮,导航员!通过系统地检查网络接口、验证 IP 配置、测试连通性、查看开放端口,最后配置防火墙,你已经成功诊断并解决了问题。内部门户现在已恢复在线,你也赢得了团队的尊重。

你展示了对 Linux 网络基础工具(如 ipifconfigpingssufw)的扎实掌握。这种逻辑严密的故障排查过程是任何系统管理员的关键技能,将在你的职业生涯中发挥不可估量的作用。继续磨练你的技能吧!

✨ 查看解决方案并练习✨ 查看解决方案并练习✨ 查看解决方案并练习✨ 查看解决方案并练习✨ 查看解决方案并练习