找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

 火.. [复制链接]
本帖最后由 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的,这边放个离线包:
游客,如果您要查看本帖隐藏内容请回复


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

本帖子中包含更多资源

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

×
我的恩山、我的无线 The best wifi forum is right here.
这是运维方面的知识
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

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

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

使用道具 举报

看一看哦
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

为啥不用luci 非得用命令呢
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

好像以前就有在梅林用socat来访问v6的web了
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

支持下~~~~~~
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

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

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

使用道具 举报

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

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

使用道具 举报

牛逼牛逼,希望楼主能搞一个保姆级教程,举个例子什么的。在移动宽带网络下实现外网访问黑群,感谢

点评

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

使用道具 举报

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

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

使用道具 举报

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

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

使用道具 举报

zhuichuyan 发表于 2021-5-4 17:50
其实我是自编译或者官方版,不会安装luci界面

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

使用道具 举报

zhuichuyan 发表于 2021-5-4 19:58
应该够详细了吧,安装socat,添加启动脚本,设置防火墙,完事

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

使用道具 举报

本帖最后由 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-4-27 05:25

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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

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