其他作者在写文章时涉及到luci-app-socatg或者SocatG,须提前声明本篇文章。
前言
在移动大内网的各位小伙伴们,为了实现远程访问,可谓是想尽了一切办法,本人先后使用了ngrok、frp、ddnsto,都是满满的吐槽啊!!!ngrok和frp需要一个独立的ip主机作为服务端,国内还需要对域名进行备案,总结下来:流程复杂、准备时期长、不够灵活、受服务端带宽限制(“小水管“);ddnsto相对前两者来说,确实是便捷不少,但是仍然有最高5M带宽的限制。
如今IPv4地址池耗尽,IPv6开始向人们走来,目前看来运营商对IPv6几乎没有做仍何限制,包括Http 80端口和Https 443端口均可以正常使用,当然了对于大多数用户来说IPv6也并不是静态不变的,在一定时候其地址会发生变化,好在目前阿里云、dnspod、dynv6都支持解析动态IPv6。这在OpenWrt/Lede下不难实现,具体的教程也站内也都有,便不再啰嗦。
消息发送(无需动态解析)
每个IPv6地址都是独立的地址,只要支持IPv6地址的设备都可以访问到的,但是因为目前的IPv6大多数都是动态的,即在一段时间会自动更新,这样的话,可以通过脚本运行的方式,定期扫描在局域网内活跃的IPv6设备或者当IPv6地址发生更改后的,发送内容至预先设置好的邮箱或者其他消息服务器。DDNS脚本大法
在每个设备编写相应的DDNS脚本,对其进行DDNS解析,好处是,不会AIB(All in Boom),每台设备都是独立的,不会相互影响。但是问题来了,如果需要修改脚本,你必须在局域网下修改(不难想象),而且对每台设备都进行脚本设置,工程量太大,不利于整体部署,鸡肋。端口转发
但是对于路由器之下的其他需要被访问的设备来说,你一定会想到端口转发
常规的端口转发
那么成功了吗?并没有,注意看上图,OpenWrt端口转发的IP地址(默认)类型是IPv4,这显然是行不通的。
Frp
已知OpenWrt路由器已经做到了DDNS,那么是否可以在路由器上开启Frps服务端呢?理论可行,但是笔者经过一晚上的实践,已经对Frp失去了信心,而且还需要在对应的客户端上进行部署;不光如此,Frp的性能也非常低下,常常因为在高并或者其他占用突然增大的情况下,会将Frp进程关闭,所以,Frp只有在迫不得已的情况下作为临时使用,应用场景非常有限。Socat
开始进入主题了,socat可以把局域网下设备(如Nas、监控摄像头、网络服务器)的IPv4地址的端口转发到路由器的IPv6地址上,以此来远程访问局域网下的设备。Socat是不需要在客户端部署环境的,全程只要在路由器上监听对应IPv4地址的指定端口即可,不会对应用层(OSI模型的第7层)上的设备进行干预,整体的网络环境也会相较Frp简洁许多,而且Frp暴露在公网下是非常不安全的。
socat命令的格式如下:
socat TCP6-LISTEN:{IPv6端口,远程访问的端口},reuseaddr,fork TCP4:{IPv4地址}:{IPv4端口} &
系统->启动项->本地启动脚本
我用Idea搭建了spring的临时环境(当然vscode下live share插件亦是如此),测试端口转发,IP地址:192.168.1.226 端口号:8083
成功将端口转发
如果局域网内有大量设备的话,这样也太麻烦了吧
,重头戏登场了,SocatG:
SocatG
作为不喜欢敲代码的我,看到这么长的命令,瞬间没了兴趣,于是我开发了一个OpenWrt插件SocatG,顾名思义,socat的GUI(可视化)版本,界面十分简洁明了,软件的主体界面
安装:由于是首发,目前仍处于官方审核阶段,只能通过在ssh或者telnet上以预编译文件ipk的方式安装,当然也可以直接通过编译固件来安装,ipk文件已在文末给出,软件支持所有架构。
opkg update
wget -P /tmp {插件地址,见文末}
opkg install /tmp/luci-app-socatg_1.1-1_all.ipk
注意:使用(固件编译)前需要提前安装(加入)socat
入口:网络->SocatG简单的页面告诉你,你只要依次填入IPv6的端口(远程访问时的端口,v6port)、IPv4地址(局域网内的设备,v4host)、IPv4地址的端口(该设备对应进程的端口号),v6port和v4port的端口号不可以相同,点击“保存&应用”按钮就可,这时你就可以直接通过域名+端口号访问。至于解析效果和稳定性,那肯定是阿里云和dnspod的好,dynv6由于是免费的,可以理解
。
应用
有了公网“IP”,瞬间为你打开了新的世界,从现在开始,起飞
阿里云盘、NAS、监控摄像头,还有许多,需要你们去发掘
总结
SocatG是开源的项目,目前已有开发目标,会持续更新迭代,如果在使用的时候遇到了问题或者有更好的建议,希望可大家可以在评论区回复,各位有能力的大佬们也可以直接做改进,大家都一起维护这个实用的插件吧。最后求点赞投币收藏转发
关于文中提到的项目源代码和预编译ipk文件的链接:Gitee/码云
作者声明本文无利益相关,欢迎值友理性交流,和谐讨论~
网友评论