fix-tun-tap-not-available-on-a-synology-nas.jpg
fix-tun-tap-not-available-on-a-synology-nas.jpg

最近我的群晖NAS在执行 zerotier-one -d 启动命令的时候就会报错,导致使用 zerotier 内网穿透一直失败,报错如下:

ERROR: unable to configure virtual network port: could not open TUN/TAP device: No such file or directory

据说在 Zerotier-1.4.0 版本中已经修复了这一问题,大家可以自己去试试看,若依然解决不了可以继续往下看,步骤如下:

检查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.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

重新启动 Synology NAS 或手动执行一次脚本。完成!