找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
广告投放联系QQ68610888
查看: 26037|回复: 85

【5.4】通过socat,实现ipv6外网访问内网ipv4的设备

 火.. [复制链接]
发表于 2021-5-4 12:57 | 显示全部楼层 |阅读模式
本帖最后由 zhuichuyan 于 2021-5-27 16:03 编辑

socat真的是个好东西,外网v6访问内网v4设备,尤其对于不支持v6或者不好做v6ddns的设备好用,不需要v4公网(比如移动),有v6公网的(现在三大运营商ipv6应该都开通了,没有的八成是光猫路由器不支持,openwrt大部分集成,除非编译者刻意去掉),openwrt可以正常获取到ipv6地址即可,无论lan或者wan,一般都会有。只不过有些固件不好做lan口ipv6的动态dns,这里建议用wan口的ipv6。

1:安装socat,基于lede和官方源编译的固件在软件包里更新即可


2:系统-----启动项,最下面本地启动脚本添加这条命令“socat TCP6-LISTEN:3380,reuseaddr,fork TCP4:10.0.0.4:3389 &”,其中3380是ipv6外部访问端口,10.0.0.4是内网访问ipv4地址,我这边改过了,填自己的内网ip,3389是需要访问的内网设备ipv4端口,比如我这个3389是微软远程桌面端口。这几个参数都要根据自己实际情况来


3:要打开ipv6相应的防火墙,比如上面的3380,在防火墙----通信规则下面新建一个打开路由器端口,名称随意,端口就填上面需要打开的端口,我这里就是3380,应用保存。


4:重启路由器,就可ipv6的端口映射ipv4,从而实现外网访问。如果不想重启,那就登录ssh,输入本地脚本的那个命令即可。如果只在ssh输入命令,重启会失效,建议还是在启动脚本里添加以下命令。


通过socat,只需要路由器能获取到ipv6,然后域名解析,即可以访问下接设备,不需要每个设备单独做一个ipv6ddns,且适用于不支持ipv6的设备。哦,对了,本地启动脚本那边记得放在exit0之前,才会随着路由器启动而触发。

软件包没有socat的,这边放个离线包:https://yunxi.lanzoui.com/iYFUGorwwch

最后得感谢socat的开发者,说实在不知道是谁,一开始知道还是在梅林华硕那边,梅林华硕不支持ipv6访问web,就搜了搜。这个插件简直为了移动宽带而存在。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
我的恩山、我的无线 The best wifi forum is right here.
发表于 2021-5-4 13:02 | 显示全部楼层
这是运维方面的知识
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

 楼主| 发表于 2021-5-4 13:04 来自手机 | 显示全部楼层
osainfo 发表于 2021-5-4 13:02
这是运维方面的知识

这就不清楚了,也不是专业的,不过好用是真的
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2021-5-4 13:06 | 显示全部楼层
看一看哦
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2021-5-4 14:16 | 显示全部楼层
为啥不用luci 非得用命令呢
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2021-5-4 14:43 | 显示全部楼层
好像以前就有在梅林用socat来访问v6的web了
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2021-5-4 15:53 | 显示全部楼层
支持下~~~~~~
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

 楼主| 发表于 2021-5-4 17:49 来自手机 | 显示全部楼层
cjchome 发表于 2021-5-4 14:43
好像以前就有在梅林用socat来访问v6的web了

是的,一开始就是梅林想办法搞得,我也是过,那边比这边还麻烦点
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

 楼主| 发表于 2021-5-4 17:50 来自手机 | 显示全部楼层
tch99 发表于 2021-5-4 14:16
为啥不用luci 非得用命令呢

其实我是自编译或者官方版,不会安装luci界面
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2021-5-4 18:11 | 显示全部楼层
牛逼牛逼,希望楼主能搞一个保姆级教程,举个例子什么的。在移动宽带网络下实现外网访问黑群,感谢

点评

scoat转发5000端口,然后把黑裙的ipv6地址在域名服务商那解析  详情 回复 发表于 2022-8-9 19:57
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

 楼主| 发表于 2021-5-4 19:58 来自手机 | 显示全部楼层
King13 发表于 2021-5-4 18:11
牛逼牛逼,希望楼主能搞一个保姆级教程,举个例子什么的。在移动宽带网络下实现外网访问黑群,感谢

应该够详细了吧,安装socat,添加启动脚本,设置防火墙,完事
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2021-5-4 20:08 | 显示全部楼层
King13 发表于 2021-5-4 18:11
牛逼牛逼,希望楼主能搞一个保姆级教程,举个例子什么的。在移动宽带网络下实现外网访问黑群,感谢

网上的教程大把
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2021-5-4 23:55 | 显示全部楼层
zhuichuyan 发表于 2021-5-4 17:50
其实我是自编译或者官方版,不会安装luci界面

会自编译给我赶脚很厉害呀
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2021-5-5 00:59 | 显示全部楼层
zhuichuyan 发表于 2021-5-4 19:58
应该够详细了吧,安装socat,添加启动脚本,设置防火墙,完事

我个人理解还是流水账式的教程比较简单,一步一步走基本不出错,挂个黑群做示范应该能帮到很多人
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2021-5-5 00:59 | 显示全部楼层
本帖最后由 sasalemma 于 2021-5-5 01:28 编辑

内网IPV6暴露其实比socat更简单。

防火墙 - 通信规则 - 新建规则:名称-你定,协议-tpc+udp,源区域-WAN,源地址-空,源端口-空,目标区域-LAN或者任意转发,目标地址-::1234:abcd:5678:efgh/::ffff:ffff:ffff:ffff(这个地址为LAN下设备,比如PC的地址,PD为变动前缀,所以用掩码写),目标端口-需要开放的端口,动作-接受。高级里面可以之选 IPv6协议

也就是用ip6tables写,在自定义规则里。

ip6tables -t filter -I FORWARD -p tcp --dport 3389 -d ipv6-addr -j ACCEPTip6tables -t filter -I FORWARD -p udp --dport 3389 -d ipv6-addr -j ACCEPT

关于内网lan的ddns,实际上修改下也是一样的。

比如电信前缀,一条自定义规则规则也能得到,PF=$(ip -6 route | awk '{print $1}' | awk '/240e:?/') 然后加上lan的机器的后缀,就是内网的ipv6地址了。


如果不像变动wan口的ddns,那就用下NAT6,可以和公网ipv6共存,但同样转发到内网的nat6地址也是可以的。

只是多了几条自定义规则。

开启nat6

1.安装 opkg update ,opkg install kmod-ipt-nat6
2.在/etc/hotplug.d/iface 新建一个90-ipv6,写入一个nat网关。

#!/bin/sh
[ "$ACTION" = ifup ] || exit 0
iface_name=wan_6(dhcpv6的名字,或者是pppoe的接口的名字)
iface_interface=eth1 (dhcpv6的网口,或者是pppoe的接口)
[ -z "$iface_name" -o "$INTERFACE" = "$iface_name" ] || exit 0
ip -6 route add `ip -6 route | grep $iface_interface | grep via | sed -e 's/from [^ ]* //' | sed -e '2,$d'`


3.防火墙自定义规则里的一个NAT转发。
ip6tables -t nat -A POSTROUTING -o eth1(wan口的网卡,有的是eth0.1,看自己的接口界面) -j MASQUERADE

4.接口中全局,改下前缀,用dd开头,像地址短,可以直接用 dd00::/64,lan口中dhcp服务里的ipv6设置:
路由通告服务


DHCPv6 服务


NDP 代理


DHCPv6 模式
默认是无状态的 + 有状态的


总是通告默认路由





然后下面的机器就有了可以nat地址了,当然,前面2、3不做也行的(因为有公网ipv6地址,不需要通过nat6上网)只是获取一个可本地路由的dd本地地址(也就是类似于192.168.1.1这样的私网地址,但我个人并没有测试直接用链路地址fe80开头的nat行不行)就能转发了。

然后防火墙的自定义规则就可以写NAT了。

转发:
ip6tables -I ipv6_forward -p tcp --dport 3389 -d dd本地ipv6地址 -j ACCEPT
ip6tables -I ipv6_forward -p udp --dport 3389 -d dd本地ipv6地址 -j ACCEPT

NAT(完整写法):
ip6tables -t nat -A PREROUTING -d ::wan口的ipv6后缀/::ffff:ffff:ffff:ffff -p tcp --dport 3389 -j DNAT --to-destination [dd本地ipv6地址]:3389
ip6tables -t nat -A PREROUTING -d ::wan口的ipv6后缀/::ffff:ffff:ffff:ffff -p udp --dport 3389 -j DNAT --to-destination [dd本地ipv6地址]:3389


省略的写法可以这样

ip6tables -t nat -A PREROUTING -p tcp --dport 3389 -j DNAT --to-destination [dd本地ipv6地址]:3389
ip6tables -t nat -A PREROUTING -p udp --dport 3389 -j DNAT --to-destination [dd本地ipv6地址]:3389


NAT的意思是 访问 wan口ipv6地址的3389端口,把wan口的ipv6地址和端口,替换成dd本地地址的ipv6和端口。转发是替换后在路由内部进行的数据留转发。
NAT需要更改 wan口访问端口就是:

ip6tables -t nat -A PREROUTING -p tcp --dport 3390 -j DNAT --to-destination [dd本地ipv6地址]:3389
ip6tables -t nat -A PREROUTING -p udp --dport 3390 -j DNAT --to-destination [dd本地ipv6地址]:3389


这样nat的话,客户端,比如win的防火墙是能记录到进来的ip地址的,socat最大的问题,只是转发,ip信息是被屏蔽的。就是加-l -l 参数,也是浪费路由的算力。也就是说对于win的远程服务,记录到的ip地址是路由的lan口地址进来,无论外面是哪个ip进来。

点评

厉害,不错  详情 回复 发表于 2023-10-8 12:20
不明觉厉,先收藏慢慢看!  发表于 2022-8-8 16:06
太牛了吧。这个支持双向UDP 双向吗?  详情 回复 发表于 2022-5-23 03:47
高手! 防火墙Port forwards 以及 Traffic rules之间有什么区别,一直傻傻分不清楚,这里给出了一些解惑,  详情 回复 发表于 2021-9-28 11:12
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

有疑问请添加管理员QQ86788181|手机版|小黑屋|Archiver|恩山无线论坛(常州市恩山计算机开发有限公司版权所有) ( 苏ICP备05084872号 )

GMT+8, 2024-3-29 08:03

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

| 江苏省互联网有害信息举报中心 举报信箱:js12377 | @jischina.com.cn 举报电话:025-88802724 本站不良内容举报信箱:68610888@qq.com 举报电话:0519-86695797

快速回复 返回顶部 返回列表