问题:每次重启Openwrt后,ZeroTier的虚拟网卡MAC地址会改变。导致网站后台认为是一台新设备,重新分配IP地址。
原理:
①:linux中,ZeroTier参数启动后文件放置在/var/lib/里。
②:重启或者掉电后,var中的数据都会被清理掉。
③:所以,这次配置成功的配置,下次起来后就没有了。
④:因此,知道原因后,就可以将当前配置存放到掉电后不会掉数据的磁盘上,
可以放在/etc下,这个是设备的配置文件,掉电后不会丢失。
1、当前先配置好zerotier,保证可以拿到ip地址。
2、 将整个zerotier 复制到断电不掉数据的/etc下做备份。
cp -a /var/lib/zerotier-one /etc/zerotier
3、(关键步骤和解释)
①:复制后,删掉 /etc/zerotier/下的zerotier-one.pid文件
②:这个文件中记录了后台的zerotier的进程号
③:之所以要删掉,是因为路由器下次启动起来后,zerotier的进程号可能已经不是当前这个pid号了。
④:这个不删掉,我们下一步将/etc/zerotier文件夹的东西全部复制到/var/lib/zerotier-one后,
虽然环境都还原了上次配置成功的环境,但此时文件中记录的pid号和后台真实的pid号对应不上,
就会出问题,但是去官网查看时,设备确实mac地址也没变,分配的ip地址也没变,会导致设备拿不到
ip地址。此时你也可以尝试,重新再加入下网络,发现加入成功,ip地址也拿到了,它加入网络的时候,
会重新在/var/lib/zerotier-one下创建zerotier-one.pid。所以,要删掉!!!
4、设备重启后,启动脚本中需要将复制的东西还原到var下,命令:
cp -a /etc/zerotier /var/lib/zerotier-one
5、启动脚本中添加如下命令,保证下次重启,自动还原环境,然后重新加入网络。
vi /etc/rc.local 打开这个文件后:添加下面的内容:
cp -a /etc/zerotier /var/lib/zerotier-one
sleep 5
/usr/bin/zerotier-one &
sleep 5
zerotier-cli join 网络号
综上所述,你的路由器就可以重启,重启后也可以拿到ip地址,也不用去页面点击授权了,非常方便。