IPv6公网也能端口转发了(SocatG全网首发)

2022-03-10 14:20:32 65点赞 300收藏 84评论

声明

其他作者在写文章时涉及到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

成功将端口转发成功将端口转发

如果局域网内有大量设备的话,这样也太麻烦了吧IPv6公网也能端口转发了(SocatG全网首发) ,重头戏登场了,SocatG:

SocatG

作为不喜欢敲代码的我,看到这么长的命令,瞬间没了兴趣,于是我开发了一个OpenWrt插件SocatG,顾名思义,socat的GUI(可视化)版本,界面十分简洁明了,

软件的主体界面软件的主体界面

安装:由于是首发,目前仍处于官方审核阶段,只能通过在ssh或者telnet上以预编译文件ipk的方式安装,当然也可以直接通过编译固件来安装,ipk文件已在文末给出,软件支持所有架构

opkg update

opkg install socat

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由于是免费的,可以理解IPv6公网也能端口转发了(SocatG全网首发)

应用

有了公网“IP”,瞬间为你打开了新的世界,从现在开始,起飞IPv6公网也能端口转发了(SocatG全网首发)

阿里云盘、NAS、监控摄像头,还有许多,需要你们去发掘

总结

SocatG是开源的项目,目前已有开发目标,会持续更新迭代,如果在使用的时候遇到了问题或者有更好的建议,希望可大家可以在评论区回复,各位有能力的大佬们也可以直接做改进,大家都一起维护这个实用的插件吧。

最后求点赞投币收藏转发IPv6公网也能端口转发了(SocatG全网首发)

关于文中提到的项目源代码和预编译ipk文件的链接:Gitee/码云

作者声明本文无利益相关,欢迎值友理性交流,和谐讨论~

展开 收起
84评论

  • 精彩
  • 最新
  • 内网穿透这东西,没有的时候拼命想要,有了发现一年用不了几次。。。

    校验提示文案

    提交
    有时候还是很重要的,监控、emby、文件资料呀,用frp带宽实在有限

    校验提示文案

    提交
    身在外企,每天用3389转发用家里电脑办公,已经离不开了。

    校验提示文案

    提交
    还有3条回复
    收起所有回复
  • 多个ip和端口的话如何填进去呢

    校验提示文案

    提交
    现在只能刷新再填新的内容

    校验提示文案

    提交
    那旧的会保留在页面吗

    校验提示文案

    提交
    还有6条回复
    收起所有回复
  • 掉头发大神,牛pppppp! [献黄瓜] [献花] 。花小钱保ipv4公网的默默的支持一下!之前的几家公司,单位内网全是纯ipv4内网地址,没有v6,所以路由的ipv6都连不上。

    校验提示文案

    提交
    对啊,教育网内也都是IPv4

    校验提示文案

    提交
    收起所有回复
  • Gitee的代码是被删了吗?最后在GitHub上找到的

    校验提示文案

    提交
    优先会在GitHub上更新,gitee会同步推送的

    校验提示文案

    提交
    刚刚看过,gitee上没有被删掉呀,

    校验提示文案

    提交
    收起所有回复
  • openwrt做旁路由能用吗

    校验提示文案

    提交
    只要在同一个网段都是可以的,而且主路由要开通ipv6

    校验提示文案

    提交
    好的,谢谢,回去试下,还有个问题ipv6那个端口需要映射出去吗

    校验提示文案

    提交
    还有2条回复
    收起所有回复
  • 参考我之前写的博客 去看看

    校验提示文案

    提交
    我也看到过有web可视化版本的socat,但是都没有一个开源的,都是已经集成在固件里了,只能自己开发 [高兴]

    校验提示文案

    提交
    收起所有回复
  • 感谢大佬,一直在用socat,都是命令行配置,希望大佬持续更新哈

    校验提示文案

    提交
    已经在做了 [ok了]

    校验提示文案

    提交
    收起所有回复
  • 移动内网福音。大众无公网的福利。谢谢楼主分享

    校验提示文案

    提交
    开源精神,国内也要发扬

    校验提示文案

    提交
    收起所有回复
  • 太实用了,我也想用

    校验提示文案

    提交
    移动大内网的福音 [小眼睛]

    校验提示文案

    提交
    收起所有回复
  • gitee无法访问啊,提示403
    你的访问受限!
    服务器拒绝处理您的请求!您可能没有访问此操作的权限, 点击这里返回首页

    也可能是以下原因导致您没有权限

    1. 没有登录,请登录后查看

    2. 资源属于企业,企业用户应安全策略被企业屏蔽,请联系企业管理员

    3. 项目因违规被 Gitee 屏蔽,请联系项目拥有者查看项目是否被屏蔽

    校验提示文案

    提交
    您可以再尝试访问一下

    校验提示文案

    提交
    收起所有回复
  • IPv4访问ipv6,有解决方案吗?
    例如,从单位的IPv4环境,访问家里的ipv6(中移动公网)

    校验提示文案

    提交
    通常来说,只有ipv6才可以直接访问ipv6,如果要实现v4访问v6,那么这两者之间需要服务器进行中转,这和frp是没有差别的。当然也可以向单位的网络中心申请开通ipv6

    校验提示文案

    提交
    收起所有回复
  • 不明觉厉!!大佬太厉害了

    校验提示文案

    提交
    小言姐姐你也是

    校验提示文案

    提交
    收起所有回复
  • 不错,学习了,写的很详细呀,辛苦了

    校验提示文案

    提交
    在学习中成长,应该的

    校验提示文案

    提交
    收起所有回复
  • 先收藏再慢慢看 [傻笑] [赞]

    校验提示文案

    提交
    适合移动内网或者没有公网使用 [小眼睛]

    校验提示文案

    提交
    收起所有回复
  • 大佬能出个详细的小白教程吗

    校验提示文案

    提交
    这个就是啊

    校验提示文案

    提交
    收起所有回复
  • FRP不要域名又不是不能用

    校验提示文案

    提交
    这只针对那些固定的IP地址,你指的应该是那些云服务器的IP地址,截止到今天,固定的IP地址池已经耗尽,目前所谓的大多数公网IP都指的是动态公网,即在一定时间过后,其IP地址会发生改变,对于拥有(动态/固定)IPv4地址的用户来说,尚且能够勉强接受的,毕竟32位的地址还是很好记的,但是对于绝大大多数移动大内网用户来说,这几乎不可能,因为ipv6太长了,而且现在有一些浏览器仍然是不支持直接通过ipv6地址来访问的,因此拥有域名,这会使得非常方便。

    校验提示文案

    提交
    那国内哪里能买到便宜带宽大的机器呢 [想一想]

    校验提示文案

    提交
    收起所有回复
  • 我已经完成光猫桥接,并且nas获取了ipv6地址。但是路由器的防火墙禁止了外网访问nas。路由器是tplink,这种情况你这个方法是不是能解决问题?

    校验提示文案

    提交
    socatg就是的期望就是讲冗长的IPv6地址通过端口转发的方式进行远程访问,使用socatg的前提就是需要能够通过原始的IPv6地址进行访问,否则也只能在内网下使用

    校验提示文案

    提交
    也就是说哪怕我获取了ipv6地址,还是无法突破我tp路由器的防火墙实现内网穿透?

    校验提示文案

    提交
    还有2条回复
    收起所有回复
  • 内网这么玩很厉害😄

    校验提示文案

    提交
    走投无路了,只能自己开发 [喜极而泣]

    校验提示文案

    提交
    收起所有回复
  • 如果是ipv6地址直连的话,开3389端口倒是还好,要是ipv4开3389天天被扫 [尴尬]

    校验提示文案

    提交
    IPv6好,3389端口太危险了

    校验提示文案

    提交
    能改当然是最好了 [认真听讲]

    校验提示文案

    提交
    收起所有回复
  • 用了您编译的插件觉得很好,请问在下一版本可否加上像Socat一样已经做了端口转发的列表。可以清晰的看到哪些端口已经做了转发。

    校验提示文案

    提交
提示信息

取消
确认
评论举报

相关文章推荐

更多精彩文章
更多精彩文章
最新文章 热门文章
300
扫一下,分享更方便,购买更轻松