Linux 服务器网络不通排查 SOP(标准操作流程)

🔍 Linux 服务器 telnet IP 端口 超时?按顺序排查:

  1. ✅ 先用 IP 测试

    → 排除 DNS 问题(nslookup / dig

  2. 🛡️ 查本机出站防火墙

    sudo iptables -L OUTPUT -n -v(看是否 DROP)

    → 检查 firewalldnftables(如启用)

  3. ☁️ 查云平台安全组(出站规则!)

    → 登录控制台,确认目标 IP/端口是否放行

  4. 📡 抓包验证请求是否发出

    sudo tcpdump -i any host <IP> and port <PORT>

    → 无 SYN 包?→ 本机拦截;有 SYN 无回?→ 外部问题

  5. 🔄 横向对比测试

    → 其他机器能否 telnet 通?判断问题是本地还是目标侧


🧭 Linux 服务器网络不通排查 SOP

------ 当你在服务器上 telnet 目标IP 端口 超时怎么办?

场景:在某台 Linux 服务器上执行 telnet 192.168.1.100 8080telnet api.example.com 443,提示 "Connection timed out"(连接超时)


一、先理解几个关键概念

✅ 1. telnet 超时 vs 连接被拒绝

现象 含义 可能原因
Connection timed out 数据包发出去了,但没人回应 防火墙 DROP、目标没开、中间网络拦截
Connection refused 数据包到达目标,但目标明确拒绝 目标服务未监听该端口

🔍 本文只讨论 "超时" 场景 ------ 这通常意味着请求被静默丢弃


✅ 2. 网络流向:你是"客户端"还是"服务端"?

  • 如果你在服务器 A 上执行 telnet B:portA 是客户端,B 是服务端
  • 此时流量方向是:A → B
  • 在 A 上,这个出站连接受 OUTPUT 控制;
  • 在 B 上,入站连接受 INPUT 控制。

📌 本文假设你是在 发起连接的机器(客户端) 上排查问题。


✅ 3. 防火墙层级模型(由近到远)

从内到外:

复制代码
[你的进程] 
    ↓
1️⃣ 本地防火墙(iptables / nftables / firewalld) → OUTPUT 链
    ↓
2️⃣ 云平台安全组(出站规则) ← 常被忽略!
    ↓
3️⃣ 中间网络设备(企业防火墙、ACL)
    ↓
4️⃣ 目标服务器防火墙(INPUT 链)
    ↓
5️⃣ 目标服务是否真正在监听?

二、标准排查流程(SOP)

💡 建议按顺序执行,每一步都可能快速定位问题!


🔹 Step 1:确认是不是 DNS 问题(如果用了域名)

复制代码
nslookup api.example.com
# 或
dig api.example.com +short
  • 如果解析失败 → 检查 /etc/resolv.conf 和 DNS 配置;
  • 如果解析出错 IP → 用真实 IP 直接 telnet 测试。

建议:先用 IP 测试,排除 DNS 干扰。


🔹 Step 2:检查本地防火墙(本机 OUTPUT 规则)

(1)查看 iptables OUTPUT 链
复制代码
sudo iptables -L OUTPUT -n -v

重点关注:

  • 是否有 -j DROP-j REJECT 规则?
  • 默认策略是什么?(最后一行:policy ACCEPT or DROP?)

⚠️ 如果策略是 DROP,但又没有明确放行目标 IP/端口,就会超时。

(2)检查是否用了 firewalld(RHEL/CentOS)
复制代码
sudo firewall-cmd --state          # 看是否 running
sudo firewall-cmd --list-all       # 查看出站规则(默认通常全开)

💡 firewalld 默认允许所有出站,所以一般不是它的问题。

(3)检查 nftables(新系统)
复制代码
sudo nft list ruleset | grep -A5 -B5 "output\|egress"

🔹 Step 3:检查云平台安全组(出站规则!)

🚨 这是开发最容易忽略的地方!

如果你的服务器在 阿里云、腾讯云、AWS、华为云等公有云

  1. 登录云控制台;
  2. 找到该服务器实例;
  3. 查看关联的 安全组(Security Group)
  4. 切换到 "出站规则"(Egress Rules) 标签页;
  5. 检查是否限制了目标 IP 或端口。

✅ 大多数云平台默认 "出站全开",但如果你或团队自定义过规则,就可能拦截。


🔹 Step 4:用 tcpdump 抓包,确认请求是否发出

这是最可靠的验证手段

在你的服务器上执行:

复制代码
sudo tcpdump -i any host <目标IP> and port <目标端口>

然后另开一个终端,执行:

复制代码
telnet <目标IP> <目标端口>

观察 tcpdump 输出:

表格

现象 含义 下一步
看到 SYN 包发出 你的服务器已放行 问题在外部(目标或中间网络)
完全看不到任何包 被本机防火墙 DROP 回到 Step 2,检查 OUTPUT 规则
看到 SYN 但无 SYN+ACK 请求到达目标,但目标没响应 联系目标方排查

💡 示例:
10:00:01.123456 IP your-server.54321 > target-ip.8080: Flags [S], ... → 表示 SYN 已发出。


🔹 Step 5:测试从其他机器访问同一目标

  • 从你本地电脑、另一台服务器执行 telnet 目标IP 端口
  • 如果 所有人都超时 → 问题在目标侧(服务没开/目标防火墙);
  • 如果 只有你的服务器超时 → 问题在你的出站路径(本机防火墙 / 云安全组 / 路由)。

🔹 Step 6:检查路由和网关(较少见,但需排除)

复制代码
# 查看去往目标 IP 的路由
ip route get <目标IP>

# 示例输出:
# 192.168.10.50 via 10.0.0.1 dev eth0 src 10.0.0.100 uid 1000
  • 确认下一跳(via)是否可达;
  • 如果走错了网卡或网关,可能导致包发不出去。

三、常见误区 & 最佳实践

✅ 最佳实践:

  1. 先用 IP 测试,排除 DNS;
  2. 优先检查云安全组出站规则
  3. 善用 tcpdump,眼见为实;
  4. 网络是分层的,必须逐层验证。

四、附录:常用命令速查

用途 命令
测试连通性 telnet IP PORTnc -zv IP PORT
DNS 解析 nslookup example.com
查看本地监听 ss -tuln
检查 OUTPUT 防火墙 sudo iptables -L OUTPUT -n -v
抓包验证 sudo tcpdump -i any host IP and port PORT
查看路由 ip route get IP

✅ 总结

telnet 目标IP 端口 超时时,请按以下顺序思考:

  1. 是不是 DNS 问题? → 用 IP 测试
  2. 本机防火墙拦了吗? → 查 OUTPUT
  3. 云安全组出站放行了吗? → 登录控制台看
  4. 包到底发出去没?tcpdump 抓包
  5. 别人能通吗? → 横向对比
  6. 路由对吗?ip route get
相关推荐
云姜.3 小时前
网络协议----OSI七层网络协议 和 TCP/IP四层(五层)网络协议
网络·网络协议
!chen4 小时前
LabVIEW TCP Server端工具TCP通信
网络·tcp/ip·labview
getapi4 小时前
注塑件的费用构成
linux·服务器·ubuntu
枷锁—sha4 小时前
【SRC】SQL注入快速判定与应对策略(一)
网络·数据库·sql·安全·网络安全·系统安全
Maynor9964 小时前
OpenClaw 玩家必备:用 AI 自动追踪社区最新动态
java·服务器·人工智能
郝学胜-神的一滴4 小时前
深入解析C/S模型下的TCP通信流程:从握手到挥手的技术之旅
linux·服务器·c语言·网络·网络协议·tcp/ip
池央4 小时前
CANN 算子诊断与故障定位:oam-tools 在异构计算错误解析中的作用
网络
“αβ”4 小时前
数据链路层协议 -- 以太网协议与ARP协议
服务器·网络·网络协议·以太网·数据链路层·arp·mac地址
释怀不想释怀4 小时前
Linux网络基础(ip,域名)
linux·网络·tcp/ip