关于免费内网穿透方案的研究
一直以来在研究一些关于内网穿透的方案,都是一些很不靠谱的营销文章。索性很长一段时间就没了兴趣做这件事情,偶然的机会听到了ZeroTier,居然让我有种发现新大陆的喜悦。可能真的一分钱都不需要花就能搞定内网穿透的事情,而且网速还是杠杠的。
下面我来记录下我的所有的操作步骤:
- 需要有个OpenWRT的系统。可以花点小钱拼某多上买个刷了系统的电视盒子,当然也可以买个OpenWRT系统的路由器。如果这点钱也不想出,OK我们还有办法,在您的服务器上安装个虚拟机,在虚拟机中安装个OpenWRT的系统。那你可能要问,为什么要弄这个玩意,那我需要告诉你的是我要通过这个系统作为旁路由将当前局域网的所有连接设备全部映射出去。
- 现在我们需要设置旁路由的IP了,请注意,将网线插入旁路由(OpenWRT)的Lan口,然后另一端连接我们的电脑,注意修改电脑的网络适配器,将IPV4的IP修改为旁路由(OpenWRT)同一网段的IP,然后将网关设置为旁路由的IP。进入OpenWRT后,修改OpenWRT的接口Lan口的IP和网关,将IP设置为局域网相同的网段地址,比如我自己的主路由(分配DHCP的路由)网段为192.168.25.1,那么现在我可以将OpenWRT的Lan口的IP设置为192.168.25.245(看心情设置),网关设置为主路由的IP:192.168.25.1。如下图
- 我没有全局出国的考虑,所以我就直接关闭OpenWRT的DHCP功能了。(如果有需求了,手动修改电脑的网关为OpenWRT的IP即可,这样的话我所有的网络都是通过旁路由(OpenWRT)进行解析了)
- 现在我们需要进入ZeroTier的官网: https://my.zerotier.com/network申请帐号了
- 申请账号以后,我们需要创建一个网络,后面我们就是通过创建的网络进行组网,创建完成以后注意记录这个网络的NETEWORK ID,后面我们组网是需要用到的。
- 我的盒子集成了ZeroTier的功能,如果没有集成,那大家自行百度去集成吧,我就不进行讲解了。在OpenWRT的系统中启用ZeroTier斜体样式的功能,其实也非常的简单,在3处输入NETWORK ID后勾选启用,点击保存和应用即可启动该功能
- 启动ZeroTier之后,我们回到ZeroTier的管理界面,在Member中会看到我们刚刚加入网络的Address,在前面的复选框中进行勾选,这样的话我们的(OpenWRT)旁路由器就加入了当前的ZeroTier虚拟网中(NETWORK ID);注意我们要在当前的地址中勾选允许桥接(很重要)
- 在Basic设置中选择Private
- 在Advance中我们需要去进行最重要的设定了,我们要设置局域网中的所有IP都能对ZeroTier的网络进行桥接。先设定ZeroTier网段的IP,设定完成后我们会在Member中看到OpenWRT的IP,然后在位置2输入局域网的网段(192.168.25.0/24),最后在3处输入当前OpenWRT的ZeroTier的IP(局域网都通过这个网络桥接后实现虚拟组网)
- 我们回到OpenWRT的系统中进行端口及防火墙的设定,首先在网络中添加一个ZeroTier的接口,我这里已经创建好了,大家可以参考下截图
- 名称设置为ZeroTier(看心情),接口协议为【不配置协议】,物理端口选择【zt】开头的适配器
- 现在对防火墙进行设置:入站允许,出站允许,转发允许。
- 对当前接口防火墙进行修改,将【端口触发】全部切换到Lan中
- 最后我们需要进入到防火墙自定义规则中,添加以下规则
iptables -I FORWARD -i zteb4mn7ec -j ACCEPT
iptables -I FORWARD -o zteb4mn7ec -j ACCEPT
iptables -t nat -I POSTROUTING -o zteb4mn7ec -j MASQUERADE
注意:防火墙中的【物理端口名称】一定不能出错,添加后重启防火墙
14. 现在我们如果在家里,只需要在电脑或手机端连接ZeroTier的客户端,并且加入ZeroTier的NETWORK ID中(需要在ZeroTier中新进入的Address进行勾选授权),就可以访问OpenWRT所在局域网内的所有设备了。比如我现在出差在外面就可以直接使用局域网内的IP地址访问我的OpenWRT。(当然最后我是需要在局域网内安装一台Vault的服务器,那样我就可以愉快的访问Vault了)