测试网络连接性

LinuxBeginner
立即练习

介绍

网络连接是任何现代计算系统的基本方面。当出现问题时,知道如何诊断它们是任何开发者或系统管理员的一项关键技能。本 Lab 将指导你使用一系列基本的 Linux 命令来系统地测试和排查网络连接问题。

你将学习如何使用 ping 来检查基本可达性,使用 traceroute 来映射数据在网络上传输的路径,使用 nslookup 来验证 DNS 解析,以及使用 ip route 来检查系统的路由表。完成本 Lab 后,你将对诊断常见的网络问题有一个坚实的基础。

使用 ping 127.0.0.1 命令测试本地回环地址

在此步骤中,你将使用 ping 命令来测试本地机器上的网络堆栈(network stack)。这是任何网络故障排除过程中最基本和最关键的第一步。

ping 命令向目标主机发送 ICMP (Internet Control Message Protocol) ECHO_REQUEST 数据包并等待 ECHO_RESPONSE。地址 127.0.0.1 是标准的“localhost”或“loopback”(本地回环)地址,它始终指向你当前所在的机器。成功 ping 本地回环地址确认了你系统的网络软件正在正常运行。

我们将使用 -c 4 选项,仅发送 4 个数据包,以防止该命令无限期运行。

在你的终端中执行以下命令:

ping -c 4 127.0.0.1

你应该会看到类似以下的输出,表明数据包已成功发送和接收。

PING 127.0.0.1 (127.0.0.1) 56(84) bytes of data.
64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.045 ms
64 bytes from 127.0.0.1: icmp_seq=2 ttl=64 time=0.049 ms
64 bytes from 127.0.0.1: icmp_seq=3 ttl=64 time=0.048 ms
64 bytes from 127.0.0.1: icmp_seq=4 ttl=64 time=0.047 ms

--- 127.0.0.1 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3074ms
rtt min/avg/max/mdev = 0.045/0.047/0.049/0.001 ms

0% packet loss(0% 数据包丢失)这一行确认了本地网络接口工作正常。

使用 ping 172.60.0.1 命令测试网关

在此步骤中,你将测试与本地网络网关(gateway)的连通性。网关是连接你的本地网络到其他网络(包括互联网)的路由器。成功 ping 网关确认了你的机器可以与本地网络通信。

首先,你需要找到默认网关的 IP 地址。你可以使用 ip route 命令并过滤出 "default" 路由来实现这一点。

运行以下命令来查找你的网关:

ip route | grep default

输出将显示你的默认路由。紧跟在 via 后面的 IP 地址就是你的网关地址。在本 Lab 环境中,它通常是 172.60.0.1

default via 172.60.0.1 dev eth1

现在,使用 ping 命令来测试到该网关地址的连通性。记得使用 -c 4 选项。

ping -c 4 172.60.0.1

成功的输出将如下所示:

PING 172.60.0.1 (172.60.0.1) 56(84) bytes of data.
64 bytes from 172.60.0.1: icmp_seq=1 ttl=64 time=0.075 ms
64 bytes from 172.60.0.1: icmp_seq=2 ttl=64 time=0.051 ms
64 bytes from 172.60.0.1: icmp_seq=3 ttl=64 time=0.052 ms
64 bytes from 172.60.0.1: icmp_seq=4 ttl=64 time=0.053 ms

--- 172.60.0.1 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3060ms
rtt min/avg/max/mdev = 0.051/0.057/0.075/0.010 ms

这个结果确认了你的机器可以与本地网络网关通信。

使用 traceroute google.com 命令进行路由跟踪

在此步骤中,你将使用 traceroute 来追踪从你的机器到外部目标(如 google.com)的网络路径。此命令有助于识别连接路径中可能发生故障的位置。

traceroute 命令默认可能未安装。首先,更新你的软件包列表,然后安装它。在安装新软件包之前运行 sudo apt-get update 是一个好习惯。

sudo apt-get update

现在,安装 traceroute 实用程序。-y 标志会自动对任何提示回答“是”。

sudo apt-get install -y traceroute

安装完成后,你可以运行 traceroutegoogle.com。这将向你显示数据包到达目标所经过的路由器(跳数,hops)序列。

traceroute google.com

输出将列出每一跳、其 IP 地址以及数据包到达该点的往返时间(round-trip time)。输出会有所不同,但大致如下所示(为简洁起见我们已截断):

traceroute to google.com (142.250.191.46), 30 hops max, 60 byte packets
 1  uswest5 (172.60.0.1)  0.031 ms  0.010 ms  0.010 ms
 2  10.220.8.54 (10.220.8.54)  0.289 ms 10.220.8.38 (10.220.8.38)  0.275 ms 10.220.8.54 (10.220.8.54)  0.263 ms
 3  11.73.4.217 (11.73.4.217)  2.134 ms 11.73.4.241 (11.73.4.241)  2.141 ms 11.73.4.185 (11.73.4.185)  1.409 ms
 ...
 8  142.251.65.127 (142.251.65.127)  4.316 ms  2.849 ms  4.335 ms
 9  nuq04s42-in-f14.1e100.net (142.250.191.46)  4.296 ms  1.556 ms  2.964 ms

每一行代表路径上的一个路由器。星号 * * * 表示该路由器未及时响应探测(probe)。

使用 nslookup google.com 命令检查 DNS 解析

在此步骤中,你将检查域名系统(DNS)解析。DNS 是互联网的电话簿;它将人类可读的域名(如 google.com)转换为机器可读的 IP 地址(如 142.250.199.14)。如果 DNS 无法工作,即使你的网络连接其他方面都正常,你也无法通过名称访问网站。

nslookup 命令是用于查询 DNS 服务器以获取此信息的工具。

运行以下命令来查找 google.com 的 IP 地址:

nslookup google.com

输出会告诉你哪个 DNS 服务器响应了你的请求,以及与该域名关联的 IP 地址。

Server:  127.0.0.11
Address: 127.0.0.11#53

Non-authoritative answer:
Name: google.com
Address: 142.250.191.46
Name: google.com
Address: 2607:f8b0:4005:80f::200e

ServerAddress 行显示了你的系统正在使用的 DNS 解析器(resolver)。Non-authoritative answer 部分提供了 google.com 的 IPv4(Address: 142.250.191.46)和 IPv6(Address: 2607:...)地址。像这样的成功响应确认了 DNS 解析正在正常工作。

使用 ip route show 解决连接问题

在此步骤中,你将检查内核的 IP 路由表(routing table)。路由表是一组规则,你的系统使用这些规则来确定网络流量的发送目的地。不正确或缺失的路由是连接问题的常见原因。

ip route show 命令(或其简写别名 ip r)会显示主路由表。这是诊断底层网络问题最重要的命令之一。

执行以下命令查看你的路由表:

ip route show

输出将列出你的系统所知道的所有路由。

default via 172.60.0.1 dev eth1
172.60.0.0/16 dev eth1 proto kernel scope link src 172.60.1.160

最关键的一行是 default 路由。

  • default via 172.60.0.1 dev eth1: 此行表示,对于表中未明确列出的任何目标,流量将通过网络接口 eth1 发送到网关 172.60.0.1(你在步骤 2 中 ping 的地址)。

如果缺少此默认路由,你的系统将不知道如何将流量发送到互联网,并且像 ping google.com 这样的命令会以“Network is unreachable”(网络不可达)错误失败。理解此表是解决此类问题的关键,通常需要使用 sudo ip route add default via <gateway_ip> 这样的命令来添加正确的默认路由。

总结

恭喜你完成此实验(Lab)!你学习了一种系统化的方法来测试和诊断 Linux 系统上的网络连接问题。

你练习使用了以下基本命令:

  • ping: 用于测试到本地机器和网络网关的可达性。
  • ip route: 用于查找你的默认网关并检查系统的路由表。
  • traceroute: 用于追踪数据包到达远程主机所经过的路径,以识别潜在的故障点。
  • nslookup: 用于验证域名系统(DNS)是否正确地将主机名解析为 IP 地址。

这种逻辑顺序——从自身,到本地网络,再到互联网,最后检查名称解析——为你排查可能遇到的几乎任何网络问题提供了一个强大的框架。