梅林路由器安装zerotier
本文最后更新于:2024年9月16日 下午
准备工作(重要)
如果zerotier后台建立了路由表的话,需要先删除,不然等下梅林连接的时候就会引起路由器死机
关闭梅林路由器防火墙,实测安装完zerotier后,不关防火墙ping结果最高1000ms,关闭后稳定在30ms,貌似传说的打洞成功
安装过程
首先安装好entware环境
安装zerotier
1
2
3
4
5opkg update
opkg install zerotier
modprobe tun
zerotier-one -d
zerotier-cli join xxxxx网页端同意加入,并建立路由表192.168.50.0/24 via 192.168.192.1
添加iptables,允许转发到192.168.50.0网段的流量通过
1
iptables -A FORWARD -d 192.168.50.0/24 -j ACCEPT
测试连接是否正常,包括从学校访问家中的局域网是否ping通
添加开机启动项
1
2
3
4
5
6cd /jffs/scripts
vi post-mount
# 在fi语句前添加下面三行命令
modprobe tun
zerotier-one -d
iptables -A FORWARD -d 192.168.50.0/24 -j ACCEPT重启路由器测试是否正常启动
至此,从外边任何安装了zerotier的电脑,都可以随意访问到家中局域网的各个设备了。
后记
modprobe tun命令的作用
Tun/Tap是通过软件模拟的网络设备,提供与网络设备完全相同的功能。其中TAP模拟了以太网设备,即操作第二层数据包;TUN则模拟了网络层设备,即第三层数据包。Tun/Tap虚拟网络设备为用户空间程序提供了网络数据包的发送和接收能力。既可以当做点对点设备(TUN),也可以当做以太网设备(TAP)。不仅Linux支持Tun/Tap虚拟网络设备,其他UNIX也是支持的,之间有少许差别。Tun/Tap驱动程序实现了虚拟网卡的功能,Tun表示虚拟的是点对点设备,Tap表示虚拟的是以太网设备,这两种设备针对网络包实行不同的封装。利用Tun/Tap驱动,可以将tcp/ip协议栈处理好的网络分包传给任何一个使用Tun/Tap驱动的进程,由进程重新处理后再发到物理链路中。
Linux 2.4 内核之后代码默认编译tun、tap驱动,使用的时候只需要将模块加载即可(modprobe tun,mknod /dev/net/tun c 10 200)。运行tun、tap设备之后,会在内核空间添加一个杂项设备(miscdevice,类比字符设备、块设备等)/dev/net/tun,实质上是主设备号10的字符设备。从功能上看,tun设备驱动主要应该包括两个部分,一是虚拟网卡驱动,其实就是虚拟网卡中对skb进行封装解封装等操作;二是字符设备驱动,用于内核空间与用户空间的交互。
iptables命令相关知识
为啥在post-mount中添加开机启动项
/jffs/scripts目录: 里面的脚本名固定不可以随便修改,但是可以加自己的内容。
脚本名
作用
wan-start
在wan网卡启动后调用
nat-start
在NAT配置后调用
post-mount
在挂载磁盘后调用
services-start
在系统服务启动后调用
services-stop
在系统服务器停止前调用
让我们看看post-mount的内容:
1 |
|
由于我们的zerotier就是安装在U盘上的,所以放在这个脚本里面,只有U盘正确挂载后,才会执行这里的操作,再合适不过了!
梅林启动项的问题
/jffs时路由器自带的可写目录,按照特定格式命名的脚本可以被系统启动时自动调用。
安装 entware后,产生了一个/jffs/service-start文件。
该脚本调用/opt/etc/init.d/rc.unslung。
然后rc.unslung启动/opt/etc/init.d/目录下的所有脚本,使用*.* start参数进行调用。
脚本中运行的进程以服务方式驻留,是Linux早期版本的标准运行机制。
自己的脚本放在/opt/etc/init.d/目录下