Day4
本文最后更新于86 天前,其中的信息可能已经过时,如有错误请发送邮件到big_fw@foxmail.com

今日主题

Linux 网络排查:IP、ping、curl、防火墙、安全组

今天的核心目标是:

以后网站打不开、SSH 连不上、端口访问失败,你能知道从哪里开始查。


一、今日目标

今天学完你要能做到:

1. 会查看服务器 IP 地址
2. 会判断服务器网络是否通
3. 会用 ping 测试连通性
4. 会用 curl 测试网站服务
5. 会理解本机访问和外部访问的区别
6. 会初步理解 Linux 防火墙和云服务器安全组

今天最重要的一句话:

网络排查不是乱猜,而是按顺序查:IP → 服务 → 端口 → 本机访问 → 外部访问 → 防火墙 → 安全组。

二、先理解几个核心概念

1. IP 地址是什么?

你可以这样理解:

IP 地址 = 服务器在网络里的地址

比如:

192.168.1.10     局域网 IP
47.xxx.xxx.xxx 公网 IP
127.0.0.1 本机自己

常见区别:

公网 IP:别人从互联网访问你服务器用的地址
内网 IP:服务器内部网络通信使用的地址
127.0.0.1:服务器自己访问自己

2. 本机访问和外部访问的区别

比如你的 Nginx 跑在服务器上。

你在服务器里面执行:

curl http://127.0.0.1

这是:

服务器自己访问自己

你在自己电脑浏览器访问:

http://服务器公网IP

这是:

外部访问服务器

如果本机能访问,外部不能访问,问题通常在:

1. Linux 防火墙
2. 云服务器安全组
3. 服务只监听了 127.0.0.1
4. 公网 IP 或域名配置不对

三、今天必须掌握的命令

1. 查看 IP 地址

ip addr

也可以简写:

ip a

你会看到很多内容,重点看:

inet 192.168.xxx.xxx
inet 47.xxx.xxx.xxx

其中:

lo:本地回环网卡,通常有 127.0.0.1
ens / eth 开头:真实网卡
docker0:Docker 创建的虚拟网卡

你现在先记住:

ip addr 用来看服务器有哪些 IP 地址。

2. 查看默认路由

ip route

它可以看服务器默认从哪个网关出去。

你不用深究,先知道:

如果路由有问题,服务器可能连不上外网。

3. 测试网络是否通:ping

测试能不能访问百度:

ping www.baidu.com

测试能不能访问公网 IP:

ping 8.8.8.8

停止 ping:

Ctrl + C

注意:

ping 通,说明网络大概率通。
ping 不通,不一定代表网站一定不通,因为有些服务器会禁止 ping。

所以 ping 只是第一步,不能只靠 ping 判断。


4. 测试网站是否能访问:curl

测试本机网站:

curl http://127.0.0.1

测试本机 80 端口:

curl http://localhost

测试公网网站:

curl http://www.baidu.com

测试自己的公网 IP:

curl http://你的服务器公网IP

如果你的网站跑在 8080:

curl http://127.0.0.1:8080

你要理解:

ping 测的是网络连通性。
curl 测的是具体网站服务能不能响应。

这句话很重要。


5. 查看端口监听

昨天学过,今天继续用:

ss -tunlp

查看 80:

ss -tunlp | grep :80

查看 443:

ss -tunlp | grep :443

查看 8080:

ss -tunlp | grep :8080

6. 查看防火墙状态

Rocky Linux / CentOS 系常用 firewalld。

查看防火墙状态:

systemctl status firewalld

查看当前放行了什么:

firewall-cmd --list-all

如果提示没有这个命令,可能是没装 firewalld,先不用慌。


7. 临时放行端口

放行 80 端口:

firewall-cmd --add-port=80/tcp

放行 443 端口:

firewall-cmd --add-port=443/tcp

但是这个是临时的,重启后可能失效。


8. 永久放行端口

永久放行 80:

firewall-cmd --add-port=80/tcp --permanent
firewall-cmd --reload

永久放行 443:

firewall-cmd --add-port=443/tcp --permanent
firewall-cmd --reload

再次查看:

firewall-cmd --list-all

四、今天的小实验

今天直接按这个顺序敲一遍。

whoami
ip addr
ip route
ping www.baidu.com

按:

Ctrl + C

停止 ping。

然后:

ping 8.8.8.8

停止后继续:

curl http://www.baidu.com
ss -tunlp
ss -tunlp | grep :22
systemctl status firewalld
firewall-cmd --list-all

如果你装了 Nginx,再敲:

systemctl status nginx
ss -tunlp | grep :80
curl http://127.0.0.1

如果你有公网服务器,可以在自己电脑浏览器里访问:

http://你的服务器公网IP

五、今天重点理解:ping 和 curl 的区别

ping

ping 测的是网络层连通性。

比如:

ping www.baidu.com

它主要回答:

我能不能找到并联系到这个目标?

curl

curl 测的是应用层服务响应。

比如:

curl http://127.0.0.1

它主要回答:

这个网站服务有没有正常返回内容?

所以:

ping 通,不代表网站服务正常。
curl 成功,才更接近说明网站服务可用。

六、今天必须掌握的网站打不开排查流程

以后你的网站打不开,就按这个顺序来:

1. 看服务器 IP 是否正确
ip addr

2. 看服务是否启动
systemctl status nginx

3. 看进程是否存在
ps aux | grep nginx

4. 看端口是否监听
ss -tunlp | grep :80

5. 在服务器本机测试
curl http://127.0.0.1

6. 在外部电脑测试
浏览器访问 http://公网IP

7. 看 Linux 防火墙
firewall-cmd --list-all

8. 看云服务器安全组
阿里云 / 腾讯云控制台检查 80、443 是否放行

9. 看域名解析
确认域名是否解析到正确公网 IP

你现在先重点练前 7 步。


七、云服务器安全组怎么理解?

安全组可以理解成:

云厂商放在服务器外面的一道门。

比如你服务器内部 Nginx 已经监听 80 端口:

ss -tunlp | grep :80

也能看到 80。

但是阿里云安全组没有放行 80,那么别人还是访问不了。

所以云服务器网站要能访问,一般至少要放行:

22:SSH 远程连接
80:HTTP 网站
443:HTTPS 网站

如果你临时跑 8080,也要放行:

8080:测试服务端口

但是数据库端口不要乱开:

3306:MySQL,不建议直接暴露公网
6379:Redis,不建议直接暴露公网

八、今日面试表达

今天你要能说出这段:

在排查服务器网络问题时,我会先确认服务器 IP 和网络是否正常,再检查服务是否启动、进程是否存在、端口是否监听。如果本机 curl 可以访问,但外部浏览器无法访问,我会重点检查 Linux 防火墙、云服务器安全组以及服务是否监听在 0.0.0.0。如果端口没有监听,说明服务本身可能没有启动或配置有问题。

这段以后面试问你:

网站访问不了你怎么排查?

你就可以直接说。


九、今日命令清单

今天至少敲一遍:

ip addr
ip a
ip route
ping www.baidu.com
ping 8.8.8.8
curl http://www.baidu.com
curl http://127.0.0.1
ss -tunlp
ss -tunlp | grep :22
ss -tunlp | grep :80
systemctl status firewalld
firewall-cmd --list-all
firewall-cmd --add-port=80/tcp --permanent
firewall-cmd --reload

注意:

放行 80 端口前,先确认你是在自己的测试服务器上操作。

十、今日复盘模板

晚上直接这样写:

# Code 4 云计算复盘 Day 4

## 1. 今日主题

Linux 网络排查:IP、ping、curl、防火墙、安全组

## 2. 今日完成的命令

ip addr
ip route
ping www.baidu.com
ping 8.8.8.8
curl http://www.baidu.com
curl http://127.0.0.1
ss -tunlp
ss -tunlp | grep :22
ss -tunlp | grep :80
systemctl status firewalld
firewall-cmd --list-all

## 3. 今天理解了什么?

今天理解了 IP、端口、服务、防火墙和安全组之间的关系。IP 用来定位服务器,端口用来定位服务器上的服务。ping 主要测试网络连通性,curl 主要测试网站服务是否正常响应。

## 4. 今天遇到的问题

这里写你真实遇到的问题。

## 5. 我是怎么解决的?

这里写你的解决过程。

## 6. 今天的面试表达

排查网站访问不了时,可以按 IP、服务、进程、端口、本机访问、外部访问、防火墙、安全组的顺序排查。

## 7. 明天计划

继续学习 Linux 磁盘、内存、CPU 资源查看,包括 df、du、free、top、uptime。

十一、今天只需要完成这 3 件事

1. 把 ip addr、ping、curl、firewall-cmd 敲一遍
2. 搞懂 ping 和 curl 的区别
3. 背下网站打不开的排查顺序

今天最终记住这一句话:

本机能访问,外部不能访问,优先查防火墙、安全组、监听地址。

明天 Day 5 我们学:

Linux 资源排查:CPU、内存、磁盘、负载

文末附加内容
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇