本指南旨在为管理员提供一套标准的排障流程,用于解决员工通过飞连客户端连接 VPN 节点失败的问题。
请先阅读零信任接入常见问题,确认您遇到的问题是否已有对应的快速解决方案。若上述文档未能解决您的问题,请遵循本文提供的排查步骤进行深度诊断。
VPN 连接失败问题,通常可以从客户端、网络链路和 VPN 节点服务端三个层面进行分析。
VPN 连接失败时,客户端通常会弹出包含明确报错码的提示信息,不同报错码对应不同的故障类型。请根据下表,定位至相应的章节,提高排查效率。
错误提示/错误码 | 核心原因 | 排查指引 |
|---|---|---|
“请求失败”(21021000) | 控制端口连接被拒绝 | |
“网络请求超时”(21021001) | 控制端口连接无响应 | |
“请校准终端时间”(21021203) | 证书或时间问题 | |
“添加 VPN 连接信息异常”(10220010) | 数据通道服务异常 | |
“VPN 握手超时” | 数据端口连接失败 |
21021000 报错原因此错误表示客户端发往 VPN 控制端口的连接请求被立即拒绝(收到 TCP RST 包)。
检查服务状态
登录 VPN 节点后台,执行 systemctl status feilian-vpn。若返回状态为 active(running),则代表服务正常。
否则代表服务异常,请执行 sudo systemctl restart feilian-vpn 重启服务,并检查日志。
检查端口监听
执行 ss -tupln | grep <控制端口号>,确认监听该端口的进程是飞连相关服务。若被其他进程占用,请终止占用进程,或为 VPN 控制通道更换其它端口,并重启 feilian-vpn 服务,验证服务是否恢复正常。
检查配置文件
执行 cat /opt/feilian/vpn/conf/config.yaml 命令,检查配置文件内容,并通过 curl 命令测试与飞连服务端的 API 连通性。
url 字段中指定的飞连服务端地址(IP 或域名)是否正确;app_id 和 app_secret 是否与飞连服务端为该 VPN 节点配置的凭证一致。说明
注意:可以通过以下方式验证 VPN 节点与飞连服务端之间的连通性及 API 请求是否正常,请使用 config.yaml 中的实际配置参数进行操作:
curl -k '{url}/api/open/v1/token' --header 'Content-Type: application/json' --data '{
"access_key_id": "{app_id}",
"access_key_secret": "{app_secret}"
}'
分析返回结果:
{"code":0, ...},并包含一个access_token。这表明节点与平台的 API 通信正常。"code": 164001 表明 app_id 不正确。"code": 164003 表明 app_secret 不正确。502 Bad Gateway,请检查飞连服务端 corplink-platform 服务的运行状态。config.yaml中的url是否正确,以及节点到该 URL 的网络防火墙策略。21021001 报错原因此错误表示客户端发往 VPN 控制端口的连接请求,在超时时间内未收到任何响应。
sudo iptables -L --line-numbers,检查 INPUT 链是否存在丢弃(DROP)控制端口流量的规则。Wireshark 开始抓取发往 VPN 节点控制端口的流量。同时,在 VPN 节点服务器上,使用tcpdump命令,抓取来自该客户端公网 IP 的、发往控制端口的流量。让客户端尝试连接以复现问题,然后停止两边的抓包。SYN包,但在服务端抓包中完全没有看到对应的入向SYN包,即表明数据包在传输过程中被某个中间网络设备丢弃。21021003 报错原因TLS/SSL 证书验证失败。
方法一(浏览器检查):通过浏览器访问 https://<VPN 节点 IP>:<控制端口号>,查看浏览器安全警告,检查证书的有效期。
方法二(命令行检查):登录 VPN 节点后台,执行以下命令,直接检查节点上正在使用的证书有效期:
openssl s_client -connect 127.0.0.1:<控制端口号> | openssl x509 -noout -dates
10220010 报错原因VPN 数据通道的核心服务(feilian-tun@tun0)启动失败或异常退出。
检查服务状态
登录 VPN 节点后台,执行 systemctl status feilian-tun@tun0,确认服务状态。
active(running):服务正常运行。inactive(dead):服务当前未运行。failed:服务曾尝试启动但失败。重启服务
无论当前状态如何,请尝试执行 sudo systemctl restart feilian-tun@tun0 命令重启服务,并观察是否能快速恢复。
深度排查服务失败原因
如果服务重启失败,或重启后很快又进入failed状态,请从以下两个方面进行深度排查。
systemctl stop feilian-tun@tun0 命令。top、free -m、df -h 等标准 Linux 命令,检查以下指标:
feilian-tun 服务无法分配到所需资源。/、/var/log 等关键分区的磁盘使用率没有达到 100%。日志无法写入也可能导致服务启动失败。此现象通常表示客户端与 VPN 节点的控制端口通信正常,但后续建立数据端口连接的过程失败。数据通道默认首先尝试 UDP 协议,若不通则会自动降级尝试 TCP 协议。两者均失败,则报此错误。
数据端口的排查思路与控制端口完全一致,只是排查的对象发生了变化。您需要依次检查:服务是否运行、端口是否被占用、节点防火墙是否拦截、中间网络是否丢包。
请登录 VPN 节点后台,按照以下顺序进行检查。
检查数据通道服务状态
参考4.3 排查方法,确认负责数据通道的核心服务本身是否正常运行。
检查数据端口监听与占用情况
执行以下命令,检查您的 VPN 数据端口(UDP 和 TCP)是否被 feilian-tun 服务正确监听。
# 将 <数据端口号> 替换为您的实际数据端口 ss -tupln | grep <数据端口号>
feilian-tun进程正在监听该端口的 UDP 和/或 TCP。检查 VPN 节点防火墙策略
执行 sudo iptables -L --line-numbers 命令,检查 iptables 规则中是否存在针对数据端口的 DROP(丢弃)规则,确认 VPN 节点自身的防火墙是否静默丢弃了发往数据端口的连接请求。
诊断中间网络链路问题
如果以上所有节点侧的检查均无问题,则问题根源很可能在于客户端与 VPN 节点之间的中间网络设备。需确认数据端口的流量是否在传输途中被丢弃。
排查思路与2.4 排查方法中的“诊断中间网络链路问题”部分完全相同。请依次尝试:切换客户端网络环境(如手机热点)、在客户端和 VPN 节点进行同步抓包对比、协调网络团队排查中间防火墙/LB 等设备。
如果在执行完以上所有排查步骤后,问题依然存在,请在提交工单前,尽可能收集以下信息,帮助我们的技术支持团队更快地为您定位并解决问题。
Windows 11 22H2, macOS Sonoma 14.2)。办公室有线网络、家庭Wi-Fi、手机热点),以及是否有在不同网络环境下表现不一的情况。systemctl status ... 的结果截图。ss -tupln | grep ... 的结果截图。tcping 或 curl 的结果截图。/opt/feilian/vpn/log/vpn.event.logjournalctl -u feilian-tun@tun0 的输出。2024-10-21 15:30)。在准备好以上信息后,请通过以下渠道联系我们:
本附录提供了一系列快捷的命令行工具,可用于日常巡检或在排障过程中快速验证 VPN 各组件的状态。
目的:检查 VPN 的两个核心服务是否都处于正常运行状态。
命令:
# 检查控制通道主服务 systemctl status feilian-vpn.service # 检查数据通道隧道服务 (以tun0为例) systemctl status feilian-tun@tun0.service
结果分析:
active (running)。inactive (dead) 或 failed,请尝试使用 sudo systemctl restart <服务名> 重启服务,并检查相关日志以定位失败原因。目的:确认 VPN 的控制端口和数据端口是否已被正确的服务进程监听。
命令:
# 检查控制端口监听情况(请替换为实际控制端口,如8001) ss -tupln | grep 8001 # 检查数据端口监听情况(请替换为实际数据端口,如8002) ss -tupln | grep 8002
结果分析:
LISTEN 状态,并且对应的进程是 feilian-vpn 或 feilian-tun。目的:从客户端侧,测试到 VPN 节点的网络端口是否可达,以快速排查网络防火墙问题。
工具建议:推荐使用 tcping (Windows/Linux) 或 nc (macOS/Linux) 等工具。
命令示例 (tcping):
# 测试控制端口连通性 tcping <VPN节点IP或域名> <控制端口号> # 测试数据端口TCP连通性 tcping <VPN节点IP或域名> <数据端口号>
结果分析:
Port is open 或低延迟的响应。