群晖使用Zerotier-one,重启后offline怎么解决?
5 个回答
我也遇到这个问题,安装完可以正常使用,但群晖一旦重启就不行了,直觉是某个配置丢失造成的,耐心找了一天,最终发现重启后出现port_error是因为/dev/net/tun丢失,使用./bin/zerotier-one -p 会返回提示,...device not found。把*.spk文件的install脚本释放出来看看,发现:
#!/bin/sh
# load TUN kernel module
SYNOPKG_PKGDEST=/volume1/\@appstore/zerotier
SERVICE="zerotier"
ZEROTIER_MODULE="tun.ko"
ZT_HOME_DIR="${SYNOPKG_PKGDEST}/var"
ZEROTIER="${SYNOPKG_PKGDEST}/bin/zerotier-one"
BIN_SYNOMODULETOOL="/usr/syno/bin/synomoduletool"
PID_FILE="${ZT_HOME_DIR}/zerotier-one.pid"
# Make device if not present (not devfs)
if [ ! -c /dev/net/tun ]; then
echo 'Device /dev/net/tun not found, create now...'
if [ -f ${PID_FILE} ] && kill -0 `cat ${PID_FILE}` > /dev/null 2>&1; then
pkill zerotier-one
rm -f ${PID_FILE}
fi
# Make /dev/net directory if needed
if [ ! -d /dev/net ]; then
mkdir -m 755 /dev/net
fi
mknod /dev/net/tun c 10 200
fi
# Load TUN kernel module
if [ -x ${BIN_SYNOMODULETOOL} ]; then
$BIN_SYNOMODULETOOL --insmod $SERVICE ${ZEROTIER_MODULE}
else
/sbin/insmod /lib/modules/${ZEROTIER_MODULE}
fi
# daemon status
if [ -f ${PID_FILE} ] && kill -0 `cat ${PID_FILE}` > /dev/null 2>&1; then
echo 'ZeroTier running ok!'
else
pkill zerotier-one
rm -f ${PID_FILE}
sleep 1
echo 'ZeroTier not running! start now...'
${SYNOPKG_PKGDEST}/bin/zerotier-one -d
echo $! >> ${PID_FILE}
fi
所以,把这个代码复制保存到一个文件,例如:zerotier_bug_fix.sh,请务必使用unix编码保存,DOS编码在群晖中运行会出错,把这个文件放进计划任务,每次启动时执行一下这个脚本即可解决。
zerotier one是一款很好用的P2P内网穿透软件,在PC端、 手机端的安装都较为简易方便,但是在NAS中进行安装时,很容易出现种种未知问题,影响使用。由此,自己整理了几个在 群晖系统 中安装zerotier one时容易出现的问题,并提供相应解决方法,希望能够帮到大家。
一、我应该下载什么平台的zerotier one套件?
zerotier官网下载最新的1.4.0版本套件的 地址是这里,点击进入后密密麻麻的不同平台套件呈现在眼前,此时,新手用户往往迷茫,不知应该下载哪个文件进行安装。
解决方案:通过putty连接NAS,查询系统所使用的 CPU平台。
操作方法如下:
1.登录NAS,进入控制面板,在右上角选择“高级模式”后,进入“终端机和SNMP”选项,将“启动Telnet功能”和“启动SSH功能”两处打勾,然后点击“应用”。
2.下载并安装putty软件,在红圈处填入NAS的内网IP地址,然后点击下方的“OPEN”按钮。
3.在"login as"后填入NAS的管理员账户名,回车后在下一行输入管理员密码。注意密码是不可见的,输入密码后直接回车即可。
4.输入“uname -ar”并回车,获取反馈信息。可以看到信息末尾出现了“synology_apollolake_918+”,说明该系统适用apollolake平台的zerotier套件,回到zerotier one 官网下载相应平台的套件即可。
5.下载完毕后,进入群辉“套件中心”,点击手动安装,然后选择我们刚才下载的*.spk文件即可完成安装。
二、打开zerotier套件后界面异常,或者点击“join”按钮无法加入网络
正常情况下,安装zerotier并打开后,应为如 图界面。
但是,不知是因为zerotier存在bug,还是黑群辉系统兼容性有问题,经常有朋友遇到红框内圈出的位置一片空白,并无显示内容,同时填入zerotier网络ID号后点击下方“join”按钮,毫无反应的情况。
此时我们需要使用putty手动登录进群辉,然后输入“sudo -i”,申请提权。
然后在下一行再次输入群辉管理员密码,获取到root权限。
输入“zerotier-cli join *****”并回车,这里的****是你申请到的zerotier网络ID号。
当结果返回“200 join OK"时,已经join网络成功。此时打开zerotier套件,会发现界面已经正常了。然后回到zerotier的官网,进入网络管理界面并刷新几次,就可以看到刚刚添加的这台设备,然后给该设备打勾即可了。
点击进入该位置管理虚拟网络中的设备
三、重启后zerotier报错,连接不上网络。
部分用户在安装zerotier并成功加入虚拟网络后,重启NAS时zerotier界面会出现“PORT_ERROR”报错,同时无法正常加入虚拟网络,内网穿透失败。此时大概率是因为/dev/net/tun模块丢失,使用./bin/zerotier-one -p 会返回提示,...device not found。
据说zerotier最新的1.4.0版本的套件已经解决了该问题,不过若有朋友安装了低版本的套件,解决方法如下(来源于 网络,实测有效):
首先需要使用putty登录进群辉系统,并使用sudo -i获取root权限。
检查tun模块状态
检查是否安装了tun模块:
lsmod | grep tun
如果结果为空,请尝试安装它:
insmod /lib/modules/tun.ko
如果一切顺利,继续进行下一个测试。
正常状态
测试tun.ko模块是否有效
依次输入下列命令,确保tun.ko模块可以正常工作:
mkdir /dev/net
mknod /dev/net/tun c 10 200
chmod 600 /dev/net/tun
cat /dev/net/tun
如果cat命令的返回结果是File descriptor in bad state,则表示模块已正确安装。
tun模块已经正确安装
使tun.ko模块持久化
模块安装需要在每次Synology重启时保持持久性,就必须重复使用insmod命令。可以创建开机脚本搞定,依次执行如下命令进行创建:
cat <<EOF > /usr/local/etc/rc.d/tun.sh
#!/bin/sh -e
insmod /lib/modules/tun.ko
EOF
给脚本可执行权限:
chmod a+x /usr/local/etc/rc.d/tun.sh
重新启动群辉,完成!
下载这个zerotier_x64-6.0.2_1.4.0-0.spk,1.4.0版本的,我群晖系统是918+,装上OK
重启后mac地址会发生变化。唯一的办法是路由器上装zerotier,然后路由器转发
安装1.2.10版本不会有这个问题。我装1.2.13也会有这种情况,然后重装旧版就可以了。