Linux:这啥命令?这台服务器我说了算-网络排障——“能 ping 通,为什么网站还是打不开?”

举报
yd_240046519 发表于 2026/11/01 10:44:26 2026/11/01
【摘要】 第六章:网络排障——“能 ping 通,为什么网站还是打不开?”Linux 用得越久,你越会发现:很多问题最后都会变成一句话:“网络是不是有毛病?”但“网络不通”只是表象。可能是 IP 不对、DNS 挂了、端口没开、服务没监听,甚至只是你访问错了地址。这一章不背网络八股,直接学会怎么查。 1. 先确认自己是谁查看网卡和 IP:ip addr简写:ip a你会看到类似:inet 192.16...

第六章:网络排障——“能 ping 通,为什么网站还是打不开?”

Linux 用得越久,你越会发现:

很多问题最后都会变成一句话:“网络是不是有毛病?”

但“网络不通”只是表象。可能是 IP 不对、DNS 挂了、端口没开、服务没监听,甚至只是你访问错了地址。

这一章不背网络八股,直接学会怎么查。


1. 先确认自己是谁

查看网卡和 IP:

ip addr

简写:

ip a

你会看到类似:

inet 192.168.1.100/24

这就是当前机器的 IPv4 地址。

查看路由:

ip route

常见输出:

default via 192.168.1.1

意思是:

“不知道往哪走的流量,都先交给这个网关。”


2. ping:先看看对面活着没

最常见的测试:

ping 8.8.8.8

限制次数:

ping -c 4 8.8.8.8

再测试域名:

ping -c 4 example.com

如果 IP 能通,但域名不通,DNS 就很可疑。

注意:

ping 不通,不代表网站一定打不开。有些服务器会主动禁止 ICMP。

所以别把 ping 当网络界最高法官。


3. DNS:名字能不能翻译成 IP?

我们访问 example.com,电脑最终还是得知道它对应哪个 IP。

可以用:

getent hosts example.com

也可以安装 DNS 工具:

sudo apt install dnsutils

然后使用:

nslookup example.com
dig example.com

如果解析失败,可以看看:

cat /etc/resolv.conf

4. 网站打不开,先看端口

假设 Nginx 已经启动:

systemctl status nginx

但浏览器还是打不开,这时候查监听端口:

ss -lntp

只查 80 端口:

ss -lntp | grep ':80'

参数可以简单理解为:

-l   只看监听
-n   直接显示数字
-t   TCP
-p   显示进程

如果看到:

0.0.0.0:80

表示所有 IPv4 地址都可以监听。

如果看到:

127.0.0.1:80

那就意味着:

“我只接待本机客人,外面的请回。”


5. curl:别急着打开浏览器

测试 HTTP 服务,curl 很好用。

访问:

curl http://127.0.0.1

只看响应头:

curl -I http://127.0.0.1

如果本机访问成功,而其他机器失败,问题很可能在:

  • 防火墙
  • 云服务器安全组
  • 路由
  • 监听地址

如果本机都访问不了,就先查服务和端口。


6. 127.0.0.1、localhost 和 0.0.0.0

127.0.0.1

本机回环地址,可以理解为:

“我访问我自己。”

localhost

通常会解析到本机地址:

getent hosts localhost

0.0.0.0

在服务监听场景中通常表示:

“所有本机 IPv4 网卡地址都监听。”

所以服务监听:

127.0.0.1:8080

外部机器一般访问不了。

监听:

0.0.0.0:8080

才具备对外提供服务的条件。


7. 端口到底被谁占了?

程序启动时报:

Address already in use

意思就是:

“这个座位已经有人了。”

查 8080:

ss -lntp | grep ':8080'

也可以:

sudo lsof -i :8080

没安装的话:

sudo apt install lsof

找到 PID 后先确认它是谁:

ps -fp PID

如果它本身是系统服务,优先:

sudo systemctl stop 服务名

而不是一上来就 kill -9。


8. 网络卡在哪一跳?

可以使用:

traceroute example.com

Ubuntu 没有的话:

sudo apt install traceroute

它会尝试显示数据包经过的路径。

出现 * 不一定代表彻底断网,因为有些网络设备不会响应。


9. 一套标准排障流程

以后碰到“网站打不开”,按这个顺序:

第一步:看本机 IP

ip a

第二步:看路由

ip route

第三步:测试 IP 连通

ping -c 4 8.8.8.8

第四步:测试 DNS

getent hosts example.com

第五步:看服务状态

systemctl status nginx

第六步:看端口监听

ss -lntp

第七步:本机测试服务

curl -I http://127.0.0.1

第八步:再查防火墙、安全组和外部网络

核心思路只有一句:

从本机往外,一层一层排。

别一看到网页打不开,就先怪运营商。


10. 本章实战

启动 Nginx:

sudo systemctl enable --now nginx

然后依次执行:

ip a
ip route
ping -c 4 8.8.8.8
getent hosts example.com
ss -lntp | grep ':80'
curl -I http://127.0.0.1

再故意停掉 Nginx:

sudo systemctl stop nginx
curl -I http://127.0.0.1

观察报错变化。

然后重新启动:

sudo systemctl start nginx

再次测试。

你会发现:

排障最重要的,不是背多少命令,而是知道下一步该查哪里。


本章速查

ip a
ip route
ping -c 4 8.8.8.8

getent hosts example.com
nslookup example.com
dig example.com

ss -lntp
ss -lntp | grep ':80'

curl http://127.0.0.1
curl -I http://127.0.0.1

sudo lsof -i :8080
traceroute example.com

下一章:

《第七章:文本处理——“日志几万行,难道让我一行一行看?”》

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。