ping不通但端口能通,大概率是防火墙或ICMP策略限制:云安全组默认禁ICMP、iptables丢弃icmp包、rp_filter反向路径校验失败等导致ICMP被拦截,而TCP端口通信正常。
Linux主机能 telnet 或 curl 通目标端口,但 ping 返回“Network is unreachable”或直接超时,不是网络层断开,而是ICMP被主动拦截。常见于云厂
商安全组默认禁用ICMP、企业内网策略限制、或本地 iptables/nftables 规则丢弃了 icmp 类型包。
iptables 是否有显式 DROP 或 REJECT icmp 规则:sudo iptables -L INPUT -v -n | grep icmp
sudo iptables -I INPUT -p icmp --icmp-type echo-request -j ACCEPT
systemd-networkd 或 NetworkManager 管理的接口可能启用 rp_filter,导致反向路径校验失败,可查:sysctl net.ipv4.conf.all.rp_filter,值为
1 且路由不对称时会静默丢弃ICMP响应netstat -ant | grep TIME_WAIT | wc -l 高达几千甚至上万,不代表服务异常。TIME_WAIT 是 TCP 正常关闭的必经状态,持续 2MSL(通常 60 秒),用于防止旧报文干扰新连接。盲目改 net.ipv4.tcp_tw_reuse 或 net.ipv4.tcp_tw_recycle 可能引发连接复位、时钟漂移问题,尤其在 NAT 环境下。
ss -s 中 total 连接数 vs timewait 占比,以及 netstat -s | grep "segments retransmited" 是否突增Connection: keep-alive)、加连接池、避免频繁新建sockettcp_tw_reuse(需同时开启 net.ipv4.tcp_timestamps=1),tcp_tw_recycle 已在 Linux 4.12+ 移除,切勿配置执行 ip route show default 显示存在 default via 192.168.1.1 dev eth0,但 curl https://www.baidu.com 超时,往往不是网关宕机,而是路由优先级(metric)或出方向接口选择错误。
ip route get 8.8.8.8,看实际走哪个 dev 和 via —— 它反映内核真实选路结果,比 ip route show 更准ip route replace default via 192.168.1.1 dev eth0 metric 100 显式覆盖ip route get 指向 169.254.1.1(AWS VPC元数据地址)或 10.0.0.1(CNI网关),需检查容器网络插件配置及 iptables NAT 规则是否劫持了流量用 ss -tuln 查不到本该运行的 nginx 或 redis 监听行,但 ps aux | grep 显示进程在跑,说明监听行为未成功绑定到预期地址/端口。
127.0.0.1:8080 而非 0.0.0.0:8080 —— ss -tuln 默认只列 0.0.0.0 和 ::,需加 -a 查全部:ss -tulna | grep :8080
1-1023 端口,若配置文件写 listen 80 但以非root启动,nginx会静默降级到随机高端口,日志里提示 bind() to 0.0.0.0:80 failed (13: Permission denied)
http_port_t 上下文未赋给进程也会拒绝绑定,可用 ausearch -m avc -ts recent | grep nginx 查拒否记录ip route get 比 ip route show 更接近真实路径,或者把 tcp_tw_recycle 当成万能开关硬塞进生产配置。
# linux
# keep-alive
# ai
# curl
# 端口
# 云服务
# 防火墙
# nginx
# docker
# redis
# 路由