大家在折腾服务器的时候,或多或少都遇到过这种让人抓狂的情况:SSH 能连上去,ping 一下服务器也是通的,但是一旦想从服务器上搞点什么——比如更新系统、下载文件,甚至访问外部网页,它就彻底“摆烂”,一点反应都没有。这就是典型的“只进不出”网络故障。

Network diagram showing traffic blocked outbound

图示:网络“只进不出”故障示意

遇到这种事,千万别急着发 ticket 重装系统,很多时候可能只是配置上的小问题,或者出口IP被限制了。今天就来详细聊聊碰到这种情况该从哪里下手排查,以及怎么解决。

一、先确认是不是真的“瘫了”

首先,我们要排除是不是因为某些目的地的问题。不要只试一个网站觉得不通就下结论。

Cloud server firewall configuration interface

图示:云服务器安全组/防火墙配置示例

  1. Ping 测试:先 ping 一下通用的公共 DNS,比如 8.8.8.8 或者 114.114.114.114。如果连这些都不通,那基本可以确定是路由或防火墙的问题。
  2. TCP 测试:有时候 ICMP(ping 的协议)是被禁掉的,但 TCP 还是通的。可以试试 curl -I https://www.google.com 或者 curl -I https://www.baidu.com,看你所在的网络环境哪个快就用哪个。

如果上述测试都超时,那就进入下一步深度排查。

二、最常见的原因:防火墙与 NAT 问题

现在的 VPS 提供商,很多为了安全或者管理方便,会在内部层面做很多限制。

1. 检查本地防火墙

先看看服务器自己有没有把自己锁死。如果用的是 iptables,执行:

iptables -L -n -v
``n
如果用的是 UFW(Ubuntu 常见):

```bash
sudo ufw status verbose

检查是否有规则阻止了 OUTPUT 链。有些自动化脚本为了安全,可能会把出站规则设为 DENY,忘了放行必要的端口(如 80, 443)。

2. 检查提供商的防火墙/安全组

这是重灾区!很多廉价 VPS 或者面板型的 VPS(比如部分云厂商的控制台),都有独立的“安全组”或“防火墙”设置。你在服务器内部放了行,但控制台里如果默认只开启了入站(Inbound)的 22 端口,出站(Outbound)规则如果是“拒绝所有”,那你就会遭遇“只进不出”。

解决方案:登录 VPS 控制面板,找到防火墙/安全组设置,确保允许出站流量,或者至少允许特定目标端口(如 80/443)的出站流量。

三、可能是欠费or违规被封?

如果防火墙没问题,那就得怀疑是不是“人祸”了。

  1. 账单与工单:去后台看看是不是欠费了?虽然欠费通常是直接停机,但有些厂商会保留 SSH 权限让你去续费,但切断外网。此外,检查一下 Ticket 系统,有没有因为违反 ToS(比如滥用资源、遭投诉)而被限制网络的通知。

四、路由与网关配置错误

这种情况多见于刚买完服务器自己瞎折腾网络配置的时候。

检查默认网关是否正确:

ip route show

default via 后面的 IP 地址是否是你所在子网的网关地址。如果不小心误删了路由表,或者网关填错了,包肯定是发不出去的。

五、终极排查技巧与临时解决

有时候确实找不出原因,或者急需恢复业务,可以尝试以下非常手段:

  • 重启网络服务systemctl restart networking 或者简单的重启服务器(reboot),有时候能解决临时的路由表混乱。
  • 启用 IPv6:如果 IPv4 彻底不通,可以看看有没有 IPv6。很多网络环境下 IPv6 的路由和限制与 IPv4 是分开的,兴许能用 IPv6 联网下载你需要的东西。

六、求助时的正确姿势

如果以上步骤都试过了还是不行,那就只能找服务商客服了。为了不被客服当成小白来回踢皮球,反馈时请附上以下信息:

  1. 时间点:故障大概什么时候开始的?
  2. 诊断证据:“ping 不通 8.8.8.8”比“网络坏了”更有说服力。如果方便,附上 mtrtraceroute 的结果。
  3. 已做的操作:告诉客服“我已经检查了本地防火墙和 iptables,配置无误”,这能直接引导他们去查节点路由,而不是让你关掉防火墙试试。

总之,遇到“只进不出”,先查自家防火墙,再看面板安全组,最后才考虑底层路由或被封禁的问题。希望这篇排查思路能帮大家少走弯路,早早就把服务器救活!

标签: none

评论已关闭