R6300v2上安装zerotier(修订)
前言
之前写的「 R6300v2上安装zerotier 」当时一切正常,但是发现在R6300v2重启之后,还是存在问题,估计问题主要是出在防火墙的设置上。
现在把重做的过程做个记录。
问题1:PORT_ERROR
错误
putty登录到R6300v2,执行
1 | zerotier-cli listnetworks |
显示出现了 PORT_ERROR
错误。
初步判断是TUN出了问题,执行 ifconfig
,确实没发现zt开头的网卡设备
重启
重启zerotier
1 | killall zerotier-one |
再次执行 ifconfig
,有了
再看看是否正常?
1 | zerotier-cli listnetworks |
显示 OK
可能的原因
虽然在 /jffs/scripts/nat-start
中有 modprobe tun
,但是可能存在加载顺序等问题,所以导致在执行 zerotier-one -d
没成功,所以在 /opt/etc/init.d/S90zerotier-one.sh
新加一段,用于解决 PORT_ERROR
问题。
1 | if lsmod | grep -q tun ; |
完整的 /opt/etc/init.d/S90zerotier-one.sh
脚本
1 |
|
问题2:访问不到内网设备
将路由加入到 Zerotier
网络是为了在外网访问到家庭局域网中的设备,但是之前的设置只是能够让我们通过zt网地址 192.168.191.10
访问到R6300v2,而不是通过 192.168.0.1
zerotier.com上设置路由
比如192.168.0.0/24是我的内网网段,后面那个地址是我R6300v2里面zerotier获取的zt地址。
增加 iptables rules
先运行
1 | iptables -v -L -n --line-numbers |
先接受zerotier的所有数据
1 | iptables -I INPUT -i zt+ -j ACCEPT |
【备注:】 all “zt0, zt1, ztzlgf7vul” can be replaced by zt+ for wild matching in iptables only! 所以后面 ztyqb3hz7p
都将写成 zt+
,这使得脚本有了很大的通用性
重启zerotier
先停止
1 | /opt/etc/init.d/S90zerotier-one.sh stop |
或者
1 | killall zerotier-one |
再启动
1 | zerotier-one -d |
ping
测试网络
1 | ping 192.168.191.10 -c 4 |
Allow FTP, SSH, WEBUI
1 | iptables -t nat -A PREROUTING -d 192.168.191.10 -p tcp -m multiport --dport 21,22,80 -j DNAT --to-destination 192.168.0.1 |
或者替代方案
1 | iptables -t nat -I PREROUTING -i zt+ -d 192.168.191.0/24 -p tcp -m multiport --dport 21,22,80 -j DNAT --to-destination `nvram get lan_ipaddr` |
修改脚本
修改 /jffs/scripts/firewall-start
1 |
|
手机测试
手机上打开zerotier,用4G上网,记得勾选 Use Cellular Data
在浏览器中访问192.168.0.1( 就是我们的路由器R6300v2的局域网地址 ) ,已经可以访问了
但是直接访问192.168.0.199 ( NAS的局域网地址 )还是不行
再次修改脚本
在 /jffs/scripts/firewall-start
中增加下面三行就直接可以访问到内网的设备;
1 | iptables -I FORWARD -i zt+ -j ACCEPT |
完整的 /jffs/scripts/firewall-start
脚本
1 |
|
在手机浏览器中直接访问192.168.0.199 ( NAS的局域网地址 )
结论
终于达成所愿!但是从测试看,依然有2个问题:
- 速度并不稳定,有时快有时慢,取决于相连的两侧能否P2P打洞(NAT穿越)成功,如果不成功还是会走服务器中转,这个就会比较影响速度
- 在外网访问,需要启动zerotier客户端,这一点不如frp方便
但不管怎么说可以和frp互为补充,做个双保险。
附录
为防止和避免拷贝脚本出错,作为附件提供参考
/jffs/scripts/firewall-start
firewall-start
/jffs/scripts/nat-start
nat-start
/jffs/scripts/post-mount
post-mount
/jffs/scripts/wan-start
wan-start
/opt/etc/init.d/S90zerotier-one.sh
S90zerotier-one.sh
参考文档
[教程] LEDE旁路由中安装zerotier,内网穿透,访问局域网,极简教程
地址:https://koolshare.cn/thread-152561-1-1.htmlA Guide About Installing ZeroTier on ASUS AC68U Router
地址:https://www.snbforums.com/threads/a-guide-about-installing-zerotier-on-asus-ac68u-router.42648/