故障:
在 QNAP NAS 重启后,NAS 不能与 Cloudflare 建立连接。
查看隧道
[/opt/bin] # cloudflared tunnel list
2025-01-17T19:40:06Z ERR Cannot determine default origin certificate path. No file cert.pem in [~/.cloudflared ~/.cloudflare-warp ~/cloudflare-warp /etc/cloudflared /usr/local/etc/cloudflared]. You need to specify the origin certificate path by specifying the origincert option in the configuration file, or set TUNNEL_ORIGIN_CERT environment variable originCertPath=
Error locating origin cert: client didn't specify origincert path
[/opt/bin] #
cloudflared 无法找到证书文件. hmm
排查:
1. 查看进程, 确实没有运行
[/etc] # pkill cloudflared
-sh: pkill: command not found
[/etc] # ps aux | grep cloudflared
21612 admin 368 D grep cloudflared
[/etc] # kill $(ps aux | grep cloudflared | grep -v grep | awk '{print $1}')
kill: usage: kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l [sigspec]
[/etc] # ps -ef | grep flared
22876 admin 2408 S grep flared
[/etc] # ps | grep cloudflared
23408 admin 2436 S grep cloudflared
2. 找到 Cloudflare 目录
从查看 /etc/config/qpkg.conf 看到: 实际目录: /share/CACHEDEV1_DATA/.qpkg/CloudFlared/
link 的目录是: /opt/CloudFlared
[CloudFlared]
Name = CloudFlared
Class = null
Status = complete
store = 27405------------------788b
Build = 20241025
Display_Name = CloudFlared CLI
Version = 2024.10.1
Author = QoolBox
QPKG_File = CloudFlared.qpkg
Date = 2025-01-13
Shell = /share/CACHEDEV1_DATA/.qpkg/CloudFlared/CloudFlared.sh
Volume_Select = 3
Install_Path = /share/CACHEDEV1_DATA/.qpkg/CloudFlared
RC_Number = 111
FW_Ver_Min = 4.2.6
Enable = TRUE
Opt_Xml = 0
3. 查看目录内容:
[/share/CACHEDEV1_DATA/.qpkg/CloudFlared] # ls -al
total 44
drwxrwxr-x 3 admin administrators 4096 2025-01-17 14:51 ./
drwxrwxrwx 45 admin administrators 4096 2025-01-17 13:18 ../
drwxr-xr-x 2 admin administrators 4096 2025-01-17 13:46 .cloudflared/
lrwxrwxrwx 1 admin administrators 39 2025-01-13 20:05 CloudFlared -> /share/CACHEDEV1_DATA/.qpkg/CloudFlared/
-rwxr-xr-x 1 admin administrators 738 2021-03-15 10:22 CloudFlared.sh*
-rw-rw-rw- 1 admin administrators 93 2025-01-13 18:22 .list
-rw-r--r-- 1 admin administrators 4327 2021-03-15 10:25 .qpkg_icon_80.gif
-rw-r--r-- 1 admin administrators 3730 2021-03-15 10:26 .qpkg_icon.gif
-rw-r--r-- 1 admin administrators 2750 2021-03-15 10:26 .qpkg_icon_gray.gif
-rwxr-xr-x 1 admin administrators 306 2025-01-17 13:50 start.sh*
-rwxr-xr-x 1 admin administrators 1063 2025-01-13 18:22 .uninstall.sh*
4. 查看两个文件: CloudFlared.sh 和 start.sh
a. CloudFlared.sh
[/opt/CloudFlared] # cat CloudFlared.sh
#!/bin/sh
CONF=/etc/config/qpkg.conf
QPKG_NAME="CloudFlared"
QPKG_ROOT=`/sbin/getcfg $QPKG_NAME Install_Path -f ${CONF}`
APACHE_ROOT=`/sbin/getcfg SHARE_DEF defWeb -d Qweb -f /etc/config/def_share.info`
export QNAP_QPKG=$QPKG_NAME
export QPKG_NAME QPKG_ROOT
case "$1" in
start)
ENABLED=$(/sbin/getcfg $QPKG_NAME Enable -u -d FALSE -f $CONF)
if [ "$ENABLED" != "TRUE" ]; then
echo "$QPKG_NAME is disabled."
exit 1
fi
/bin/ln -sf $QPKG_ROOT /opt/$QPKG_NAME
/bin/ln -sf $QPKG_ROOT/cloudflared /usr/bin/cloudflared
;;
stop)
rm -rf /usr/bin/cloudflared
rm -rf /opt/$QPKG_NAME
;;
restart)
$0 stop
$0 start
;;
*)
清楚:
- 程序会创建符号链接到
/usr/bin/cloudflared
和/opt/CloudFlared
启动是这命令:getcfg CloudFlared Enable -u -d FALSE -f CloudFlared 查了一下,QNAP自有的。
b. start.sh
"[/etc] # cat /share/CACHEDEV1_DATA/.qpkg/CloudFlared/start.sh
#!/bin/sh
cd /share/CACHEDEV1_DATA/.qpkg/CloudFlared
./cloudflared tunnel --no-autoupdate run --token eyJhIj--------------KbE5UUmtZVFF3TVRSaiJ9 > /dev/null 2>&1 &
[/etc] # "
解决:
之前,没有加到系统的启动中。既然 /opt/config/qpkg.conf 中已经调用了:CloudFlared.sh
添加调用 start.sh , 修改CloudFlared.sh :
[/opt/CloudFlared] # cat CloudFlared.sh
#!/bin/sh
CONF=/etc/config/qpkg.conf
QPKG_NAME="CloudFlared"
QPKG_ROOT=`/sbin/getcfg $QPKG_NAME Install_Path -f ${CONF}`
APACHE_ROOT=`/sbin/getcfg SHARE_DEF defWeb -d Qweb -f /etc/config/def_share.info`
export QNAP_QPKG=$QPKG_NAME
case "$1" in
start)
ENABLED=$(/sbin/getcfg $QPKG_NAME Enable -u -d FALSE -f $CONF)
if [ "$ENABLED" != "TRUE" ]; then
echo "$QPKG_NAME is disabled."
exit 1
fi
# 启动 CloudFlared 隧道
cd $QPKG_ROOT
./start.sh > /var/log/cloudflared.log 2>&1 &
;;
stop)
# 停止所有 cloudflared 进程
killall cloudflared
;;
restart)
$0 stop
sleep 5
$0 start
;;
*)
echo "Usage: $0 {start|stop|restart}"
exit 1
esac
exit 0
[/opt/CloudFlared] #
注:先读代码,推荐使用我这个文件去替换,仅限 QPKG 安装 Cloudflare argo tunnel
补充:
如果是这类错误,是通道正常, 所指向的服务没有回应,在网上比较常见。