Linux(七)网络相关命令

作为一名 Linux 用户、系统管理员或开发者,熟练掌握命令行是必备技能。今天,我们将深入探讨一系列用于网络诊断、系统状态查询和关键网络协议的核心工具与概念。无论你是排查网络故障还是想深入了解系统运行状态,这个工具集都将是你可靠的伙伴。

一、 网络连接与端口侦探:

之前,我们使用 `netstat`,但现在它的继任者 `ss` (Socket Statistics) 更快、更强大,是诊断网络连接的现代工具。

常用示例:

1.  查看所有已建立的连接(如 TCP):
  Linux(七)网络相关命令

2.  监听所有 TCP 和 UDP 端口:

Linux(七)网络相关命令
    *   `-t`: TCP
    *   `-u`: UDP
    *   `-l`: 仅显示监听中的套接字
    *   `-n`: 以数字形式显示端口和地址(不进行 DNS 解析,更快)

3.  查找哪个进程占用了 80 端口:

    Linux(七)网络相关命令  `-p`: 显示相关进程信息

 `ss`它直接从内核空间获取信息,速度极快,输出信息也更丰富。

二、 服务连通性测试:`telnet`

`telnet` 最初是一个远程登录协议,但现在更常用于快速测试一个远程主机的 **TCP 端口** 是否可达。

常用示例:
测试 `example.com` 的 80 端口(Web服务)是否开放。

Linux(七)网络相关命令

如果连接成功,你会看到类似 `Connected to example.com.` 的提示,或者一个闪烁的光标。这证明网络通路和端口都是开放的。按 `Ctrl + ]`,然后输入 `quit` 来退出。

> 注意:*由于 `telnet` 传输是明文的,不应将其用于真正的远程登录。对于加密连接,请使用 `ssh`。

三、 DNS 查询双雄:`nslookup` 与 `dig`

两者都用于查询 DNS 记录,但 `dig` 功能更强大,输出更详细,是专业人员的首选。

`nslookup` (交互式或直接查询):
Linux(七)网络相关命令

`dig` (更强大、更灵活):



# 查询 A 记录
dig example.com
 
# 查询 MX 记录(邮件交换记录)
dig example.com MX
 
# 使用特定 DNS 服务器(如 8.8.8.8)进行查询
dig @8.8.8.8 example.com

`dig` 的输出包含了查询的详细信息,如 ANSWER SECTION(答案区)、AUTHORITY SECTION(权威名称服务器)等,非常适合深度排错。

四、 域名解析的两种方式:递归查询 vs. 迭代查询

当你输入 `dig example.com` 时,背后发生了两种查询的协作:

1.  递归查询:
发起者:你的电脑(解析器 Stub Resolver)向你配置的 **本地 DNS 服务器**(如 ISP 的 DNS 或 114.114.114.114)发起请求。
要求: “请把 `example.com` 的 IP 给我,不管用什么方法,我只要最终结果!”
责任: 本地 DNS 服务器有责任为你完成整个查询过程,并返回最终答案或错误信息。

2.  迭代查询:
发起者:你的本地 DNS 服务器向全球 DNS 根域名服务器、顶级域(.com)服务器、权威域名服务器发起的查询。
过程:根服务器会说:“我不知道 `example.com`,但你去问 .com 服务器(地址是 X.X.X.X)”。然后本地 DNS 服务器再去问 .com 服务器,.com 服务器会说:“你去问 `example.com` 的权威服务器(地址是 Y.Y.Y.Y)”。如此迭代,直到找到最终负责 `example.com` 的权威服务器,拿到 IP 地址。

简单比喻:
递归查询像你让秘书(本地 DNS 服务器)去帮你订机票,你只关心结果(票订好没)。
迭代查询像秘书为了订票,需要先打电话给机场总台(根),总台让他联系某航空公司(顶级域),航空公司再告诉他具体的售票处(权威),最终在售票处买到票。

Linux(七)网络相关命令

五、 系统路由表管理:`route`

`route` 命令用于查看和操作内核的 IP 路由表。它决定了数据包从你的机器发出后,下一跳应该去哪里。

常用示例:

1.  查看当前路由表:  Linux(七)网络相关命令
      `-n` 同样是为了避免 DNS 解析,让输出更清晰。

2.  添加一条静态路由(通常在复杂网络环境中使用):


 route add -net 192.168.2.0 netmask 255.255.255.0 gw 192.168.1.1

    > **注意: 在现代 Linux 发行版中,更推荐使用功能更强的 `ip route` 命令(例如:`ip route add 192.168.2.0/24 via 192.168.1.1`)。

六、 文件与网络连接关联器:`lsof`

`lsof` (List Open Files) 的强大之处在于,在 Linux 中 **一切皆文件,包括网络连接和管道。

常用示例:

1.  查看哪个进程在监听 22 端口:
   Linux(七)网络相关命令
 

2.  查看某个用户打开的所有网络连接:
   Linux(七)网络相关命令
 

七、 系统信息快照:`uname` 与 `uptime`

`uname`: 打印系统信息。
    Linux(七)网络相关命令
 `-a` 表示所有信息,包括内核名称、主机名、内核版本、发行版本、硬件架构等。

`uptime`: 告诉你系统运行了多久,以及系统的平均负载。
   Linux(七)网络相关命令
    * 负载平均值* 分别代表过去 1分钟、5分钟、15分钟的系统平均负载。对于单核CPU,1.00 表示完全利用。多核CPU则需要按核心数计算(例如,4核CPU的满载是4.00)。

八、 网络基础协议

1. DHCP – 动态主机配置协议
DHCP 允许设备在加入网络时,自动获取 IP 地址、子网掩码、网关和 DNS 服务器等信息,无需手动配置。这个过程主要包括四个步骤:Discover, Offer, Request, Acknowledge (DORA)。这个“自动获取”的过程,通常被称为 DORA 过程,对应着四个关键的广播报文,也就是我们常说的“四次握手”你的家庭路由器通常就内置了 DHCP 服务器。

第一次握手:发现阶段 dhcp discover

当DHCP客户端启动时,它还没有IP地址,因此会以广播方式发送一个DHCP Discover报文,该报文包含客户端的MAC地址和计算机名,以便DHCP服务器识别。这个报文的目的地址是255.255.255.255,即有限广播地址,表示向网络中的所有设备发送。

第二次握手:提供阶段 dhcp offer

当DHCP服务器接收到DHCP Discover报文后,它会在自己的IP地址池中查找是否有可用的IP地址。如果有,DHCP服务器会将该IP地址标记为已分配,并创建一个DHCP Offer报文,其中包含分配的IP地址、子网掩码、默认网关、DNS服务器地址等网络配置信息。然后,DHCP服务器会以广播方式发送这个DHCP Offer报文给客户端。

第三次握手:选择阶段 dhcp request

客户端可能会收到多个DHCP Offer报文(如果网络中有多个DHCP服务器)。在这种情况下,客户端会选择第一个收到的DHCP Offer报文,并发送一个DHCP Request报文给该DHCP服务器,以确认选择。这个DHCP Request报文包含客户端选择的IP地址和其他网络配置信息。

第四次握手:确认阶段 dhcp ack

被选择的DHCP服务器接收到DHCP Request报文后,会验证客户端请求的IP地址是否仍然可用。如果可用,DHCP服务器会发送一个DHCP ACK报文给客户端,正式确认IP地址的分配。这个DHCP ACK报文包含客户端的IP地址、租约期限和其他网络配置信息。

还有一点,需要说明,在DHCP客户端获得了一个IP地址以后,还可以发送一个免费ARP请求探测网络中是否还有其它主机使用相同的IP地址,以此来避免由于DHCP服务器地址池重叠而引发的IP冲突。

Linux(七)网络相关命令

2. FTP – 文件传输协议
FTP 是一个用于在网络上进行文件传输的标准协议。它使用两个端口:
端口 21: 控制连接,用于发送命令(如登录、切换目录)。
端口 20: 数据连接,用于实际传输文件内容。

> 重要提示: 标准的 FTP 是 ‘不安全的’,因为数据和认证信息都以明文传输。在生产环境中,应使用其安全替代品,如 SFTP (基于 SSH) 或 FTPS (FTP over SSL/TLS)。

总结

| 工具/概念 | 主要用途 |
| :— | :— |
| `ss` | 查看详细的网络连接和端口状态 |
| `telnet` | 快速测试远程 TCP 端口连通性 |
| `nslookup` / `dig` | DNS 记录查询与排错 |
| `route` | 查看和管理系统的路由表 |
| `lsof` | 列出进程打开的文件和网络连接 |
| `uname` | 显示系统内核和硬件信息 |
| `uptime` | 显示系统运行时间和负载 |
| **递归/迭代查询** | **理解 DNS 解析的核心工作原理** |
| **DHCP** | **理解主机如何自动获取 IP 配置** |
| **FTP** | **了解传统的文件传输协议及其安全隐患** |

熟练掌握这些命令和概念,将使你能够从容应对大多数 Linux 系统和网络相关的挑战。将它们加入你的工具箱,不断练习,你一定会成为一名更出色的系统工程师!

希望这篇博客对您有所帮助!欢迎在评论区交流讨论。

© 版权声明

相关文章

暂无评论

您必须登录才能参与评论!
立即登录
none
暂无评论...