判断Linux服务器通不通外网IP,最直接的办法是先用ping测公网IP,再用curl或nc验证域名解析和端口,别把“ping不通”直接等同于“没有外网”。
这件事像查水管:先看水表有没有出水,再看阀门开没开,最后看龙头是不是堵了,Linux服务器访问外网也分几层,ICMP、DNS、TCP端口、HTTP代理,任何一层出问题,表现都可能是“上不了网”,下面按排查顺序拆开说,命令都能直接复制验证。
Linux服务器怎么ping外网IP不通?先分清三种失败场景
很多人一登录服务器就ping www.baidu.com,不通就慌了,先别急着重装系统,把“IP通不通”和“域名通不通”分开测,结论会清楚很多。
ping公网IP通、ping域名不通,问题多半在DNS
先测一个稳定公网IP:
ping -c 4 114.114.114.114 ping -c 4 223.5.5.5
国内环境不建议一上来就ping 8.8.8.8,部分网络对它有限制,容易误判,如果公网IP能通,但域名不通,重点看DNS:
cat /etc/resolv.conf dig www.baidu.com +short nslookup www.baidu.com
/etc/resolv.conf里没有可用nameserver,或者写了一个内网DNS但服务器根本访问不到,都会出现“IP通、域名不通”,可以临时换一个公共DNS测试:
echo "nameserver 223.5.5.5" > /etc/resolv.conf ping -c 4 www.baidu.com
改动前先备份原文件,生产环境别随手覆盖,先确认是不是DNS配置被DHCP或云平台托管。
ping公网IP不通,先看默认路由和防火墙
公网IP都不通,说明问题在更底层,先看网卡和路由:
ip addr ip route
重点看有没有default via这一行,没有默认路由,服务器不知道往哪送外网包,再看防火墙:
iptables -L -n firewall-cmd --list-all ufw status
有些镜像默认开了严格出站规则,ICMP被丢弃,但TCP还能走,所以ping不通不代表完全没外网,接着用curl补一刀:
curl -I --connect-timeout 5 https://www.baidu.com
返回HTTP/1.1 200 OK或301/302,说明TCP和HTTP层是通的,问题只在ICMP被限制。
用traceroute看包停在哪一跳
ping不通时,traceroute能告诉你丢包发生在本地网关、运营商还是目标侧:
traceroute -n 114.114.114.114
-n不解析域名,速度更快,第一跳就不通,查本地网关和网卡;中间某跳后全星号,可能是中间设备禁ICMP,也可能是路由黑洞。mtr更直观,但部分系统需要额外安装。
云服务器怎么判断有没有公网IP?别只看控制台
云主机场景最容易误会:控制台显示“公网IP”,服务器里ip addr却看不到,原因通常是弹性公网IP走NAT映射,不是直接绑在网卡上,行业共识认为,云上公网访问更多依赖网关和地址转换,而不是每台机器都占一个公网IPv4,据工信部公开的互联网基础资源统计,公网IPv4地址长期紧张,这也是NAT和云上网关普及的背景之一。
查看默认路由和出口IP
先看默认路由:
ip route show default
再看出口IP:
curl -s https://ifconfig.me curl -s https://ipinfo.io/ip
能返回一个公网地址,说明出方向通了,这个地址可能是NAT出口,不一定是控制台里那个EIP,部分云厂商提供元数据接口查公网IP,但地址各家不同,以云厂商文档为准,不要照搬。
安全组、NAT网关和系统防火墙三件套
云上排查按这个顺序:
- 云控制台安全组:出方向是否放行,入方向是否限制。
- NAT网关或SNAT:没有公网IP的机器,出外网要靠NAT。
- 系统防火墙:
iptables、firewalld、ufw是否拦截。 - 代理变量:
env | grep -i proxy看有没有残留代理。
现象和排查层可以对照下表:
| 现象 | 更可能的层 | 验证命令 | 处理方向 |
|---|---|---|---|
| ping公网IP通,ping域名不通 | DNS | dig www.baidu.com +short |
改resolv.conf或查内网DNS |
| ping公网IP不通,curl网页能开 | ICMP被限制 | curl -I https://www.baidu.com |
不必强求ping通 |
| ping和curl都不通 | 路由/安全组/NAT | ip route、curl ifconfig.me |
查默认路由和云控制台 |
| ping通但443超时 | 端口/防火墙 | nc -zv www.baidu.com 443 |
查出站规则和代理 |
Linux服务器能ping通IP但打不开网页怎么办?重点查端口和代理
这个场景很常见:ping 114.114.114.114通,浏览器或curl打不开网页,说明IP层基本通,问题在DNS、TCP端口或HTTP代理。
先验证443和80端口
nc -zv www.baidu.com 443 nc -zv www.baidu.com 80
没有nc可以用curl代替:
curl -v --connect-timeout 5 https://www.baidu.com
curl -v会打印DNS解析、TCP连接、TLS握手过程,卡在Trying ...是TCP不通;卡在Could not resolve host是DNS问题;返回407多半是代理要求认证。
检查代理变量和系统防火墙
env | grep -i proxy
如果看到http_proxy、https_proxy指向一个已经失效的地址,curl会一直超时,临时取消:
unset http_proxy https_proxy
再测一次,防火墙侧重点看出站:
iptables -L OUTPUT -n firewall-cmd --list-all
用curl指定IP绕过DNS做对比
怀疑DNS时,可以强制解析到某个IP:
curl -I --resolve www.baidu.com:443:110.242.68.66 https://www.baidu.com
IP以实际解析结果为准,这里只是演示写法,能通说明DNS有问题,不能通说明网络或端口有问题。
Linux服务器检测外网连通性命令有哪些?一份可复制的清单
不用记太多,下面几条覆盖多数场景,业内专家指出,排障顺序比命令数量更重要,先分层再验证,能少走弯路。
基础三件套:ping、curl、traceroute
ping -c 4 223.5.5.5:测ICMP到公网IP。ping -c 4 www.baidu.com:测DNS加ICMP。curl -I --connect-timeout 5 https://www.baidu.com:测HTTP/HTTPS。traceroute -n 223.5.5.5:看路径在哪断。
端口与DNS专项
nc -zv www.baidu.com 443:测TCP端口。dig www.baidu.com +short:看解析结果。cat /etc/resolv.conf:看DNS服务器。ip route:看默认网关。ss -tunlp:看本机监听和连接状态。
云环境补充
curl -s https://ifconfig.me:看出口公网IP。ip addr:看网卡是否拿到地址。- 云控制台安全组和NAT网关:看策略是否放行。
国内机房和海外机房,外网策略不一样
同样是Linux服务器,国内机房和海外机房的外网表现差别不小,国内机房公网带宽通常按需计费,价格敏感,很多业务会走NAT共享出口;海外机房大带宽更常见,但路由绕行、跨境链路抖动也会造成“时通时不通”,香港节点、新加坡节点访问国内和欧美方向,路由差异更明显,近年来越来越多团队把探测点放在目标地域,而不是只看服务器本地ping结果。
价格因素也会影响判断,按带宽计费的云主机,出方向带宽被限速后,ping小包可能通,curl大文件却超时,这类问题看ping没用,要用curl -o /dev/null测下载速度,或者看云监控里的带宽使用率。
Q&A:Linux服务器外网连通性常见疑问
Linux服务器没有公网IP能访问外网吗?
能,通过NAT网关或SNAT,服务器可以用私网IP发起出方向访问,curl ifconfig.me看到的是NAT出口公网IP,入方向访问通常不行,除非做端口映射或绑定EIP,验证方法是看默认路由是否指向NAT网关,以及curl能否返回公网地址。
ping外网IP丢包但能打开网页是什么原因?
多数情况下是ICMP被限速或禁用,TCP没有受影响,用curl -I https://www.baidu.com验证,如果能返回HTTP状态码,就不必纠结ping丢包,部分云安全组和运营商会对ICMP做差异化处理,这是常见现象。
为什么云服务器刚买来ping不通外网?
先查三处:ip route有没有默认路由,云控制台安全组出方向是否放行,系统防火墙是否拦截,没有绑定EIP且没有NAT网关的机器,私网IP本身无法直接访问公网,把这三项逐一确认,基本能定位到原因。
判断Linux服务器外网通不通,核心不是某一条命令通不通,而是把ICMP、DNS、TCP端口和云上网关分开验证,先ping公网IP,再curl域名,最后看路由和安全组,顺序对了,问题就藏不住。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/795743.html


