第七天:网络导航员

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(套接字统计)命令是一个用于调查此问题的现代且快速的工具。

任务

  • 内部门户网站应该在端口 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(简单防火墙),这是一个用于管理防火墙规则的友好前端。

任务

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

总结

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

你展示了对 ipifconfigpingssufw 等基础 Linux 网络工具的扎实掌握。这种逻辑严密、循序渐进的排错过程是任何系统管理员的核心技能,并将在你的职业生涯中发挥巨大作用。继续磨练你的技能吧!

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