Linux学习之旅8

文章目录

实践部分

介绍

欢迎加入,网络导航员!您刚刚被一家快速发展的科技创业公司聘为初级系统管理员。今天早上,一台关键的Web服务器宕机了。用户反映他们无法访问公司的内部门户网站。

您的高级管理员正在开会,所以委派您进行初步诊断。现在是您大显身手的时候了!您的任务是系统地调查服务器的网络状态,找出根本原因,并恢复网络连接。让我们一起让服务器恢复在线!

重要提示:即将面临的挑战可能超出Linux 快速入门课程的范围。

如果您在挑战过程中遇到困难:

暂时跳过此挑战,继续学习Linux 学习路径中的后续引导式实验。

与 Labby 讨论或查看解决方案。

Day07 网络导航器

检查网络接口状态

作为网络导航员,你的第一步是收集基本信息。网络硬件是否已被识别并处于活动状态?你需要检查服务器上所有网络接口的状态。完成这项工作的现代工具是命令ip行。

任务

使用该ip命令显示所有网络接口的状态和配置。

要求

您必须使用该ip addr命令来执行此检查。

示例

运行命令后,您应该会看到类似lo(loopback) 和eth0(或类似信息) 的网络接口输出。查看主接口的状态------它应该显示UP为活动状态。

bash 复制代码
# Expected output format (interface names may vary)
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 地址。请查找inet主网络接口(例如eth0)下的字段以确认 IP 配置。

bash 复制代码
# Expected output showing IP configuration
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 服务器发送3 个ICMP 数据包来测试服务器与互联网的连接8.8.8.8。

要求

你必须使用该ping命令。

发送的数据包数量必须限制为3 个。

目标 IP 地址必须是8.8.8.8.

示例

如果连接正常,您应该会看到来自目标 IP 地址的回复,其中包含时间信息。最后的摘要应显示已发送 3 个数据包和已接收 3 个数据包,丢包率为 0%。

bash 复制代码
# Expected successful output pattern
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选项可指定c要发送的数据包数量。

检查开放的网络端口

网络连接正常!那么,为什么内部门户仍然无法访问?问题可能出在应用程序本身。Web 服务器进程是否正在运行,并且监听正确的端口?ss(socket statistics)命令是一个现代且快速的工具,可以用来调查这个问题。

任务

内部门户应该运行在端口上8000。请使用该ss命令检查是否有任何进程正在监听端口上的 TCP 连接8000。

要求

你必须使用该ss命令。

您的命令应该能够显示正在监听的 TCP 套接字。

示例

如果某个进程正在监听 8000 端口,您应该会看到包含监听套接字信息的输出。请查找"本地地址"列中显示端口 8000 的行。

bash 复制代码
# Expected output showing a listening process on port 8000
LISTEN 0      5            0.0.0.0:8000       0.0.0.0:*    users:(("python3",pid=3765,fd=3))

提示

该ss命令有几个有用的标志:

-t显示TCP套接字。

-l显示l正在监听的套接字。

-n:显示n数字端口号而不是服务名称。

-p:显示p使用套接字的过程。

您可以组合这些标志,例如ss -tlnp:

要查找特定端口,您可以将命令的输出通过管道传递ss给该grep命令。例如ss -tlnp | grep 8000:

配置基本防火墙规则

您已确认一切正常:界面已启动,IP 地址已设置,网络连接正常,应用程序也监听在正确的端口上。现在只剩下一个主要嫌疑对象:防火墙。它很可能阻止了门户网站的入站流量。您的最终任务是配置防火墙以拒绝访问门户网站。我们将使用ufwUncomplicated Firewall(简易防火墙),这是一个用户友好的防火墙规则管理前端。

任务

添加防火墙规则以拒绝端口上的入站流量8000。

添加防火墙规则以允许传入的 SSH 流量(端口 22)。

启用防火墙以应用新规则。

要求

ufw所有操作都必须使用该命令。

您必须使用sudo管理员权限,因为修改防火墙规则需要管理员权限。

示例

配置防火墙规则后,运行sudo ufw status应该显示防火墙已激活,端口 8000 被拒绝,SSH(端口 22)被允许。

bash 复制代码
# Expected output after enabling firewall with port 8000 denied and SSH allowed
Status: active

To                         Action      From
--                         ------      ----
22                         ALLOW       Anywhere
8000                       DENY        Anywhere
22 (v6)                    ALLOW       Anywhere (v6)
8000 (v6)                  DENY        Anywhere (v6)

添加规则后,您应该会看到:

bash 复制代码
Rules updated
Rules updated (v6)

启用防火墙后,您应该会看到:

bash 复制代码
Firewall is active and enabled on system startup

提示

的语法ufw非常简单。要拒绝端口上的流量,请使用ufw deny 。

您可以使用以下命令拒绝端口 8000 上的流量ufw deny 8000。

ufw allow ssh您可以使用或专门允许 SSH 流量ufw allow 22。

重要警告:如果您没有正确打开 SSH 端口 (22),验证将会失败,因为验证依赖于此端口进行 SSH 连接。

重要警告:请勿随意修改其他端口的防火墙规则,否则可能会导致在线虚拟机故障。

添加规则后,必须使用以下命令启用防火墙ufw enable。

概括

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

ip您已展现出对 Linux 基本网络工具(例如、ifconfig、和)的扎实掌握。这种逻辑清晰、循序渐进的故障排除流程对于任何系统管理员来说都是一项至关重要的技能,并且对您的职业生涯将大有裨益。继续磨练您的技能ping!ssufw

介绍

欢迎加入,软件管理员!您刚刚加入一家快速发展的科技创业公司,成为他们的首位专职系统管理员。您的首要任务是接管一台关键的开发服务器,这台服务器此前一直由开发团队集体管理,管理混乱不堪。它杂乱无章,可能已经过时,亟需有人来妥善管理。

你的任务是维护系统秩序。你需要更新系统软件源,安装团队要求的必要工具,验证所有软件是否安装正确,移除过时的软件,并进行全面的清理工作。这是你展现自身价值,为公司基础设施带来专业级稳定性和效率的绝佳机会。团队指望着你呢!让我们一起把服务器维护好!

重要提示:即将面临的挑战可能超出Linux 快速入门课程的范围。

如果您在挑战过程中遇到困难:

暂时跳过此挑战,继续学习Linux 学习路径中的后续引导式实验。

与 Labby 讨论或查看解决方案。

Day08 软件管理员

更新系统软件包存储库

作为软件管理员,您的首要任务是确保服务器的软件包管理器拥有最新的可用软件信息。过时的软件包列表可能导致安装错误或安全漏洞。您需要将本地软件包索引与中央软件仓库同步。

任务

更新所有已配置源的可用软件包列表。

要求

使用高级软件包工具(apt)执行更新。

您必须以管理员权限执行该命令。

示例

成功更新软件包仓库后,您应该会看到输出信息,表明软件包列表已刷新。该命令通常会显示可升级软件包的信息,并确认更新已成功。

提示

请记住,系统级更改(例如更新软件包源)需要更高的权限。

该apt命令有一个专门用于刷新本地软件包索引的子命令。

安装必要的软件包

软件包列表已更新完毕,现在是时候满足开发团队的需求了。他们需要neofetch一个便捷的命令行工具,能够以美观的方式显示系统信息。你的任务就是安装它。

任务

安装neofetch软件包。

要求

使用apt命令安装软件包。

软件包名称是neofetch。

以管理员权限运行安装命令。

示例

安装成功后,该neofetch命令应该可以在终端中找到。运行该命令后,您应该可以看到系统信息的彩色显示,包括操作系统、内核版本和硬件的详细信息。

提示

安装软件包的命令apt非常常见。想想你想执行的操作:"安装"。

别忘了使用sudo。

验证已安装软件包版本

很好,neofetch已安装。在向团队汇报之前,最好验证一下安装情况并记下版本号。这可以确认任务已完成,并为文档记录或故障排除提供有用的信息。

任务

显示软件包的详细信息neofetch,包括其版本号。

要求

使用可以查询软件包数据库以获取已安装软件包详细信息的命令。

示例

查询软件包信息时,您应该看到详细的输出结果,包括软件包名称、当前版本、安装状态和其他元数据。这些信息可以确认软件包已正确安装,并提供您可以向团队报告的版本号。

提示

该apt工具有一个子命令,用于show获取有关软件包的信息。

或者,也可以使用dpkg带有-s标志的命令来检查软件包的状态。

neofetch软件的作用是打印系统信息: 使用情况如下.

删除不必要的软件包

在检查服务器时,您发现了一个名为 <package_name> 的软件包figlet,该软件包曾用于一次性项目,现在已不再需要。为了保持系统的清洁和安全,您应该删除所有过时的软件。

任务

figlet从系统中卸载该软件包。

要求

使用apt命令删除软件包。

要移除的包裹是figlet。

您必须使用管理员权限才能卸载软件。

示例

成功移除软件包后,该figlet命令将不再可在您的系统中使用。尝试运行该命令或检查其状态应显示该软件包未安装。

提示

删除软件包的子命令apt非常直观。可以把它想象成"安装"命令的反义词。

记住要使用sudo。

补充知识:您可以figlet使用该命令卸载sudo apt remove figlet。

另一种彻底删除figlet(包括其配置文件)的方法是使用以下purge命令:

bash 复制代码
sudo apt purge figlet

移除软件包后,最好也清理掉所有不必要的依赖项,方法如下:

bash 复制代码
sudo apt autoremove

这有助于保持系统整洁。


管理软件包依赖关系

卸载软件后,一些作为依赖项安装的软件包可能不再被其他程序需要。这些被称为"孤立"依赖项,它们会不必要地占用磁盘空间。一个好的管理者总是会清理自己工作中遗留的资源。

任务

移除系统中所有软件包不再需要的自动安装依赖项。

要求

使用专门apt用于清理未使用依赖项的命令。

此操作需要管理员权限。

示例

运行清理命令时,它会扫描系统中那些作为依赖项自动安装但不再需要的软件包。如果找到任何孤立软件包,它们将被列出并删除,从而帮助保持系统的清洁和高效运行。

提示

apt它有一个很有用的命令,可以"自动删除"未使用的软件包。

与以往一样,这种系统性的变革需要sudo......

概括

恭喜软件管理员!您已成功控制了开发服务器。在此挑战中,您实践了基于 Debian 的 Linux 系统上软件管理的完整生命周期:

您已使用 . 更新了软件包存储库apt update。

您使用以下命令安装了新软件apt install。

您已验证安装apt show。

您使用以下命令删除了过时的软件包apt remove。

您使用 . 清理了未使用的依赖项apt autoremove。

这些是任何 Linux 管理员或高级用户都必须掌握的基本日常技能。掌握这些技能,可以确保系统保持最新、安全且整洁有序。这不仅证明了您的能力,也为构建管理完善的基础架构奠定了基础。

相关推荐
丝斯20111 小时前
AI学习笔记整理(22)—— AI核心技术(深度学习6)
人工智能·笔记·学习
云计算-Security1 小时前
基于 Kickstart 的 Linux OS CICD 部署(webhook)
运维·自动化·jenkins
虾..1 小时前
Linux 进程等待
linux·运维·服务器
稚辉君.MCA_P8_Java2 小时前
DeepSeek Java 多线程打印的19种实现方法
java·linux·jvm·后端·架构
Han.miracle2 小时前
JavaEE-- 网络编程 http请求报头
运维·服务器·网络·网络协议·计算机网络·http
丝斯20112 小时前
AI学习笔记整理(21)—— AI核心技术(深度学习5)
人工智能·笔记·学习
鹿鸣天涯2 小时前
使用VMware Workstation 17虚拟机安装红帽企业版系统RHEL10
linux·运维·服务器
q***01772 小时前
Java进阶学习之路
java·开发语言·学习
阿宁又菜又爱玩3 小时前
MySQL基础学习
数据库·学习·mysql