13
10
月
2026
"网络不通"是最难查的故障,因为链路上的每一环都可能出问题:本地网络、DNS、运营商、防火墙、安全组、服务本身。
这篇把常用网络工具按"从粗到细"的顺序讲一遍,形成一套排查套路。
网络质量直接影响访问体验。财富云计算 的云服务器提供稳定网络;内网服务、游戏服务端可选 NAT 型(无独立公网 IP,价格比带独立 IP 机型省一半以上,通过端口映射对外服务)。
一、排查顺序:由外到内
1. ping 通不通、延迟多少、丢不丢包
2. mtr 哪一跳出问题(本地?运营商?机房?)
3. dig/nslookup DNS 解析对不对
4. telnet/nc 端口开没开
5. ss/netstat 本机监听状态
6. curl 应用层能不能正常响应
7. tcpdump 抓包看细节(终极手段)二、ping:最基础
ping -c 10 example.com # 发 10 个包
ping -c 100 -i 0.2 example.com # 快速发 100 个包,看丢包
ping -s 1400 example.com # 指定包大小(查 MTU 问题)
ping -4 example.com # 强制 IPv4输出解读:
64 bytes from 1.2.3.4: icmp_seq=1 ttl=54 time=25.3 ms
...
--- example.com ping statistics ---
10 packets transmitted, 10 received, 0% packet loss, time 9013ms
rtt min/avg/max/mdev = 24.8/25.6/27.1/0.7 ms| 指标 | 含义 | 参考值 |
|---|---|---|
packet loss | 丢包率 | 0% 正常,>1% 影响体验 |
time | 往返延迟 | 同城 <10ms,跨省 20~50ms,跨国 100ms+ |
mdev | 抖动 | 越小越稳,>20ms 说明网络不稳 |
注意:很多服务器禁 ping(ICMP 被防火墙拦),ping 不通不代表服务不可用,要配合其他工具。
三、mtr:定位哪一跳出问题(最好用)
mtr = ping + traceroute,能持续统计每一跳的丢包和延迟。
apt install mtr -y # Debian/Ubuntu
yum install mtr -y # CentOS
mtr example.com # 交互式
mtr -r -c 100 example.com # 报告模式,发 100 个包后输出
mtr -n example.com # 不解析域名,更快
mtr -T -P 443 example.com # 用 TCP 探测(ICMP 被拦时用)
mtr -u -P 27015 example.com # 用 UDP 探测(游戏端口)输出:
HOST: localhost Loss% Snt Last Avg Best Wrst StDev
1.|-- 192.168.1.1 0.0% 100 1.2 1.5 0.9 8.2 0.9
2.|-- 10.10.10.1 0.0% 100 8.1 9.2 7.5 20.1 2.1
3.|-- 202.xx.xx.xx 0.0% 100 10.3 11.0 9.8 25.4 2.5
4.|-- 219.xx.xx.xx 12.5% 100 30.1 32.4 28.0 60.2 8.1 ← 这里丢包
5.|-- 1.2.3.4 0.0% 100 31.0 33.1 29.5 62.0 7.8怎么读:
- 某一跳丢包,后面几跳也丢 → 这一跳真有问题
- 某一跳丢包,后面不丢 → 那一跳只是不回应 ICMP,不是故障(常见)
- 最后一跳丢包 → 目标服务器或它的防火墙有问题
看到第 4 跳丢包,就知道问题在运营商骨干网的那个节点,自己改不了,只能反馈给服务商或换线路。
四、traceroute:路径追踪
traceroute example.com
traceroute -T -p 443 example.com # TCP 模式
traceroute -n example.com # 不解析域名Windows 上是 tracert。
功能与 mtr 类似,但只做一次不做统计,不如 mtr 好用。
五、DNS 排查:dig / nslookup
# 安装
apt install dnsutils -ydig example.com # 完整输出
dig example.com +short # 只要 IP
dig example.com A +short # 查 A 记录
dig example.com MX +short # 查 MX
dig example.com NS +short # 查 NS
dig example.com TXT +short # 查 TXT
dig -x 1.2.3.4 # 反向解析
dig @8.8.8.8 example.com +short # 指定 DNS 服务器
dig @223.5.5.5 example.com +short # 阿里 DNS
dig @114.114.114.114 example.com +short # 114 DNS
dig example.com # 看 Query time对比多个 DNS 的结果能判断是不是 DNS 污染或缓存未同步:
for dns in 8.8.8.8 223.5.5.5 114.114.114.114; do
echo -n "$dns: "; dig @$dns example.com +short | head -1
donenslookup example.com # Windows 也有
nslookup -type=mx example.com详见《域名解析与 DNS 记录详解》。
六、端口检测:telnet / nc / nmap
telnet(最简单)
telnet example.com 80
telnet 1.2.3.4 27015- 连上:显示
Connected或黑屏,说明端口通 Connection refused:端口没服务在监听Connection timed out:被防火墙拦了(或网络不通)
nc(netcat,更灵活)
apt install netcat -y
nc -zv 1.2.3.4 80 # 扫描单个端口
nc -zv 1.2.3.4 20-100 # 扫描端口范围
nc -zv -u 1.2.3.4 27015 # UDP 端口(注意 UDP 检测不一定准)
nc -l 8080 # 本机监听 8080(测试用)
echo "hello" | nc 1.2.3.4 8080 # 发送数据nmap(专业扫描)
apt install nmap -y
nmap 1.2.3.4 # 常见端口扫描
nmap -p 1-65535 1.2.3.4 # 全端口(慢)
nmap -sV 1.2.3.4 # 探测服务版本
nmap -sU -p 27015 1.2.3.4 # UDP 扫描
nmap -O 1.2.3.4 # 探测操作系统⚠️ 只扫描自己的服务器,扫描他人系统可能违法。
七、本机连接状态:ss / netstat
ss -tulnp # 查看监听端口(推荐)
ss -tulnp | grep :80
ss -tnp # 已建立的 TCP 连接
ss -s # 统计概览
ss -tn state established # 只看已建立
ss -tn state time-wait | wc -l # TIME_WAIT 数量
netstat -tulnp # 老命令
netstat -an | grep :80 | wc -l关键:服务是否监听在正确的地址
ss -tulnp | grep 3306
# tcp LISTEN 0 80 127.0.0.1:3306 ← 只监听本地,外网访问不到
# tcp LISTEN 0 80 0.0.0.0:3306 ← 监听所有地址很多"防火墙全开还是连不上"的问题,根源就是服务只监听了 127.0.0.1。
连接数统计(排查攻击):
# 每个 IP 的连接数
ss -tn | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -nr | head -20
# 各状态数量
ss -ant | awk '{print $1}' | sort | uniq -c| 状态异常 | 可能原因 |
|---|---|
SYN_RECV 很多 | SYN Flood 攻击 |
TIME_WAIT 巨多 | 短连接过多,需开 keepalive |
ESTABLISHED 来自少量 IP 且数量巨大 | CC 攻击 |
八、HTTP 层:curl
curl -I https://example.com # 只看响应头
curl -s -o /dev/null -w "%{http_code}\n" URL # 只要状态码
curl -L URL # 跟随重定向
curl -v URL # 详细过程(调试用)
curl -H "Host: example.com" http://1.2.3.4 # 指定 Host 测试
curl --resolve example.com:443:1.2.3.4 https://example.com # 跳过 DNS
curl -x http://proxy:8080 URL # 走代理性能分析(最实用):
curl -o /dev/null -s -w '
DNS: %{time_namelookup}s
TCP: %{time_connect}s
TLS: %{time_appconnect}s
TTFB: %{time_starttransfer}s
总计: %{time_total}s
大小: %{size_download} bytes
速度: %{speed_download} B/s
' https://example.com详见《网站打开慢的排查流程》。
九、抓包:tcpdump(终极手段)
当所有工具都看不出问题时,抓包看原始数据。
apt install tcpdump -y
# 抓指定网卡
tcpdump -i eth0
# 抓指定端口
tcpdump -i eth0 port 80
# 抓指定主机
tcpdump -i eth0 host 1.2.3.4
# 组合
tcpdump -i eth0 host 1.2.3.4 and port 443
# 抓 HTTP 包(含内容)
tcpdump -i eth0 -A -s 0 'tcp port 80'
# 只抓 SYN 包(看有没有收到连接请求)
tcpdump -i eth0 'tcp[tcpflags] & tcp-syn != 0'
# 保存到文件(用 Wireshark 分析)
tcpdump -i eth0 -w capture.pcap
# 读取
tcpdump -r capture.pcap
# 抓 100 个包就停
tcpdump -i eth0 -c 100
# 不解析域名(更快)
tcpdump -nn -i eth0实用场景:
- 判断请求有没有到达服务器:在服务器上
tcpdump -i eth0 host 客户端IP,如果客户端说访问不了但这里能看到包,说明包到了,问题在服务端(防火墙规则、服务本身)。 - 看 DNS 查询是否正常:
tcpdump -i eth0 port 53 - 看 TLS 握手是否完成:
tcpdump -i eth0 port 443
十、带宽与流量
# 实时流量(按连接)
apt install iftop -y
iftop -i eth0
iftop -i eth0 -n # 不解析域名
# 按进程看流量
apt install nethogs -y
nethogs eth0
# 网卡吞吐统计
apt install sysstat -y
sar -n DEV 1
sar -n DEV 1 10 # 采样 10 次
# 看网卡配置和统计
ip -s link
ethtool eth0 # 看网卡速率(千兆/万兆)测速:
# 下载测速
curl -o /dev/null https://speed.cloudflare.com/__down?bytes=100000000
# 安装 speedtest
apt install speedtest-cli -y
speedtest-cli十一、路由与网卡
ip a # 查看 IP 和网卡
ip route # 查看路由表
ip route get 8.8.8.8 # 查到某 IP 走哪条路由
ip neigh # ARP 表
ip link set eth0 up/down # 启用/禁用网卡
# 老命令
ifconfig
route -n常见网络配置问题:
# DNS 配置
cat /etc/resolv.conf
# nameserver 8.8.8.8
# 永久改 DNS(Ubuntu 用 netplan)
nano /etc/netplan/00-installer-config.yaml
netplan apply
# CentOS
nmcli con mod eth0 ipv4.dns "8.8.8.8 223.5.5.5"
nmcli con up eth0十二、实战:端口不通的完整排查
服务起好了,外面访问不了,按这个顺序查:
# ① 服务在不在跑
systemctl status nginx
ps aux | grep nginx
# ② 有没有监听端口
ss -tulnp | grep :80
# 注意是 127.0.0.1 还是 0.0.0.0
# ③ 本机能不能访问
curl http://127.0.0.1:80
# ④ 系统防火墙
ufw status / firewall-cmd --list-all
# ⑤ 云平台安全组(去控制台看)
# ⑥ 从外部测
nc -zv 服务器IP 80
# 或用在线端口扫描工具
# ⑦ 服务端抓包,看请求有没有到
tcpdump -i eth0 host 你的IP and port 80
# ⑧ DNS 是否解析到正确 IP
dig 域名 +short最常见的三个原因:
- 服务只监听 127.0.0.1(占 40%)
- 云平台安全组没放行(占 30%)
- 系统防火墙没放行(占 20%)
十三、工具速查表
| 目的 | 命令 | |
|---|---|---|
| 通不通 | ping -c 10 IP | |
| 哪一跳有问题 | mtr -r -c 100 IP | |
| DNS 对不对 | dig 域名 +short | |
| 端口开没开 | nc -zv IP 端口 | |
| 本机监听 | ss -tulnp | |
| 连接数统计 | ss -s / `ss -ant \ | awk ...` |
| HTTP 响应 | curl -I URL | |
| 性能分解 | curl -w "%{time_starttransfer}" | |
| 实时流量 | iftop -i eth0 | |
| 进程流量 | nethogs eth0 | |
| 抓包 | tcpdump -i eth0 host IP | |
| 路由 | ip route | |
| 网卡速率 | ethtool eth0 |
网络问题往往不在你这一端,选一个网络稳定的云服务商很重要。财富云计算 的云服务器提供稳定网络与多线路支持;做内网服务、游戏服务端可选 NAT 型(无独立公网 IP,价格比带独立 IP 机型省一半以上),通过端口映射按需开放服务。
相关阅读:
- 《网站打开慢的排查流程》
- 《Linux 防火墙配置:ufw / firewalld / iptables》
- 《域名解析与 DNS 记录详解》
延伸阅读
- 网站环境怎么选:LNMP 手动 / 宝塔面板 / Docker / 云开发
- 问卷表单系统搭建:SurveyKing / Formbricks,数据自己收
- 图床搭建:Lsky Pro / Lychee,自托管图片托管方案
- 邮件列表搭建:listmonk 自托管 Newsletter,把读者握在自己手里
- 文档站点搭建:MkDocs / VuePress / Docsify,产品文档与技术手册方案
- RSS 阅读器搭建:FreshRSS 自托管,把信息流拿回自己手里
- 短链接服务搭建:Shlink 自托管,链接数据自己掌握
- 网站状态监控页搭建:Uptime Kuma,服务器挂了第一时间知道

[...]netsh advfirewall firewall add rule name="GameRange" dir=in action=allow protocol=UDP localport=26901-26903完整的 Windows 环境准备(远程桌面连接、运行库安装、SteamCMD 用法、开机自启、8 个常见坑)见:《Windows 云服务器开服通用前置教程》→ htt[...]
2026-10-18 回复