

本文结合实际经验,总结一套较为系统的排查思路,帮助运维人员快速定位和解决问题。
问题现象与初步定界
不通 问题集中在网络底层(物理链路、交换机、主机防火墙、IP冲突等)。需要联系网络团队。 通 仅证明ICMP协议开放,业务端口(如snc-agent使用的端口)仍可能被阻断。继续下一步。
Connection refused (连接被拒绝) 通常意味着目标端口上没有服务监听。问题可能在agent进程本身。 Connection timed out (连接超时) 几乎可以肯定数据包在路径上被防火墙丢弃。这是最典型的防火墙症状。 Connected (连接成功) 证明TCP层连通性无异常,问题可能出现在应用层(如认证、授权、协议解析)。
系统性排查思路
# 对于 iptablessudo
iptables -L -n --line-numbers # 查看过滤规则
sudo iptables -L -n -t nat # 查看NAT规则
# 对于 firewalld
sudo firewall-cmd --list-all # 查看所有信息,包括 zones 和开放服务/端口
检查 INPUT 链中是否有规则 DROP 或 REJECT 了来自 snc-proxy IP 或目标端口的流量。 检查是否将业务网卡加入了错误的 zone(如 drop zone)。 临时规避验证(切记操作后恢复): 临时清空防火墙规则 sudo iptables -F 或添加允许规则,然后再次测试telnet。若成功,则问题根源在此。
登录云控制台,检查目标设备所属安全组的入方向规则,确保源IP(snc-proxy的IP或IP段)被允许访问snc-agent的端口,实际现场中需要结合统管网络人员,本现场不需要自己操作。
使用 traceroute 命令跟踪路径,确认数据包是否被错误地路由到了黑洞或无法返回的路径。
# 确认snc-agent进程是否在运行ps -ef | grep snc-agent
# 确认snc-agent是否在正确端口上监听sudo netstat -tlnp | grep :<端口号>
sudo ss -tlnp | grep :<端口号> # (推荐,更高效)
进程崩溃 找不到进程。需要检查agent日志并重启。 绑定错误IP 进程可能只绑定在 127.0.0.1(本地回环),而非 0.0.0.0 或业务IP,导致外部无法访问。netstat 输出中会显示 127.0.0.1:端口。
检查 snc-agent 进程的运行用户是否具有足够的权限(如读取 /proc 目录、执行特定命令等)。 检查 agent 用于连接 proxy 或本地资源的密钥文件、证书文件、配置文件的权限和属主。
# 检查关键文件的权限ls -l path/to/snc-agent/config.confls -l path/to/snc-agent/secret.key
# 确保属主和权限正确,通常不应是777等过于宽松的权限chmod 600 path/to/secret.key
# 示例:设置仅用户可读写chown ampdcp:ampdcp path/to/secret.key
主机防火墙和云安全组都正确,但连接仍被拒绝或超时。
某些应用、业务主机自身内置了防火墙或白名单功能。
检查业务自身的配置文件,查看防火墙是否开启,如未开启,可及时询问机器使用方是否使用其他三方或自研封装防火墙 ,确保 snc-proxy 的IP地址被加入白名单。
# 监听指定网卡和端口,查看是否有来自proxy_ip的包sudo tcpdump -i any -n host <proxy_ip>and port <agent_port>
# 更详细的输出sudo tcpdump -i any -nn -S -X host <proxy_ip>and port <agent_port>
能看到 SYN 包到达 证明网络层通畅,需要检查应用层是否回复 RST(应用层拒绝)。 看不到任何包 证明包在到达网卡之前就被丢弃(主机防火墙或云安全组嫌疑最大)。
总结


本文作者:李伟康(上海新炬中北团队)
本文来源:“IT那活儿”公众号

文章转载自IT那活儿,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




