一、简介
前面几篇文章已经写完了自己建立服务器的方法,今天写一下我在使用过程中遇到的问题和解决方法。
二、准备工作
准备一个有公网IP的云主机。
要稳定性、安全性、不差钱的可以使用阿里、腾讯等大厂的云服务器。
本人穷屌丝一枚,所以我用的是免费的“三丰云”,同时提供"免费虚拟主机"和“免费云服务器”产品,有兴趣的可以试一下。
“三丰云”我已经用了一段时间,感觉还是很不错的,速度快也很稳定。
三丰云 https://www.sanfengyun.com 链接。
大家可以点击前往查看是否需要。
控制界面如图:
三、操作步骤
1 - 4、zerotier-one自建根服务器方法一-CSDN博客
5、6、zerotier-one自建根服务器方法二-CSDN博客
7、 zerotier-one自建根服务器方法三-CSDN博客
四、客户端加入自建的根服务器
见:zerotier-one自建根服务器方法四-CSDN博客
五、常见问题及解决办法
我使用的是一台2007年购买的笔记本,非常旧速度很慢,所以我安装了一个适合老旧电脑使用的linux发行版:AntiX 23.1
在使用zerotier-one的过程中出现了路由表不正常的情况,具体描述我就不在这里重复了,参见我寻找解决办法发的两个帖子:
Network issues – antiX-forum
Starting zt causes loss of internet - Linux - ZeroTier Discussions
我在这里说一下修复方法,经过我的测试此方法可以完美解决路由表不正确的问题。
先写一个脚本/home/username/fixztn.sh内容如下:
#!/bin/bash
vartmp=0
for ((i=1;i<=20;i++))
do
sleep 6
if [ -n "$(ip route |grep 'default via')" ]; then
dfr="$(ip route |grep 'default via')"
fi
if [ -n "$(ip addr |grep 169 |cut -d' ' -f6 |cut -d/ -f1)" ]; then
ip169="$(ip addr |grep 169 |cut -d' ' -f6 |cut -d/ -f1)"/16
ip169dev="$(ip addr |grep 169 |cut -d' ' -f11)"
echo "ip addr del $ip169 dev $ip169dev"
ip addr del $ip169 dev $ip169dev
((vartmp++))
fi
if [ -n "$(ip route |grep '0.0.0.0 dev '$ip169dev)" ]; then
ztn0r="$(ip route |grep '0.0.0.0 dev '$ip169dev)"
echo "ip route del $ztn0r"
ip route del $ztn0r
((vartmp++))
fi
if [ -n "$(ip route |grep 'default dev '$ip169dev)" ]; then
ztndfr="$(ip route |grep 'default dev '$ip169dev)"
echo "ip route del $ztndfr"
ip route del $ztndfr
((vartmp++))
fi
echo -n "vartmp: $vartmp i: $i "
if [ -n "$(ip route |grep '172.16.183')" ] && [ $vartmp -ge 3 ]; then
if [ "$(ip route |grep default |wc -l)" = 1 ]; then
break
fi
fi
done
脚本里面的IP需要根据自己的情况稍作修改。改好后可以用sudo bash /home/username/fixztn.sh先手动运行一下,如果运行正常,请继续下面的步骤。在/etc/init.d/zerotier-one文件中找到如下脚本位置,并增加一行,如下:
#修改前:
start) log_daemon_msg "Starting ZeroTier One" "zerotier-one"
start_daemon -p $PIDFILE $DAEMON $EXTRA_OPTS
log_end_msg $?
;;
#修改后
start) log_daemon_msg "Starting ZeroTier One" "zerotier-one"
start_daemon -p $PIDFILE $DAEMON $EXTRA_OPTS
log_end_msg $?
bash /home/username/fixztn.sh
;;