今日主题
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、内存、磁盘、负载