2021-10-08 19:22:19 22点赞 147收藏 8评论 现在公网IPV4越来越难得到了,以前联通电信还能通过客服获取公网IPV4,现在打电话给客服要公网IPV4客服只会打太极。 好在现在IPV6已经大面积普及,加上IPV6数量足够。运营商分配的几乎都是公网IPV6。那我们就可以通过拥有IPV6的设备远程访问家里的设备了。 想要获取IPV6地址,光猫和路由器都开启ipv6功能。好在我在新装宽带的时候,IPV6已经完全在所在城市铺开,光猫默认开启ipv6功能。但是有部分路由器并未默认开启IPV6,需要自己手动设置。 比如我的主路由是华硕的,就需要在设置IPV6选项卡中的联机类型选为"Native"。稍后就可以获取IPV6地址了。 为了家庭网络的稳定性,我是用硬路由完成拨号任务的。其他的服务由挂在主路由网段上的openwrt软路由系统负责,比如说负责穿透服务的openwrt。这样做的好处是,就算all in one服务器挂了,也不会导致家机断网只是会少一些功能而已。 这是我的家庭网络简易拓扑图,其中提供穿透服务openwrt是以二级路由的形式挂在一级网段上。我这么做是为了省去配置旁路由的麻烦事,反正上传带宽也就是30mbps。多一级NAT也不会怎么样。然后windows2019,win7-PT通过第二块虚拟网卡和openwrt穿透服务的lan口相连,因为SOCAT只支持同一网段的转发。 首先我们需要在阿里云申请一个域名,一般第一年域名是很便宜的。申请好以后添加一个AAAA解析,并将openwrt wan6口上的ipv6地址填入解析中。之后就可以在ipv6环境下通过域名访问内网设备了。不过因为有防火墙的存在,外网还不能直接访问。所以需要在主路由开放端口。 我个人不建议关闭IPV6防火墙,虽然IPV6数量庞大。扫描是不可能的事,但是域名是有可能暴露的。 下来简单的说一下IPV6的防火墙怎么设置。比如这个IPv6地址,他一共有8段,用" : "隔开。 140e:2ac:3cde:4fab:50a:60ff:70fe:807d 前面4段“140e:2ac:3cde:4fab”是运营商分配的,会随时间变化,后面4段“ 50a:60ff:70fe:807d”是由主路由分配的,不会随时间变化。 然后写成这这种格式“ ::后面4段的地址/::ffff:ffff:ffff:ffff ” 比如上面的例子就变成这样“ ::50a:60ff:70fe:807d/::ffff:ffff:ffff:ffff ”。 把他填入防火墙的目的地址中,并设置好开放的端口。 因为openwrt是以二级路由形式工作的,还要在openwrt的防火墙中开放相关的端口。 下一步,开解决ipv6动态解析的问题。因为Openwrt没有支持IPV6解析的aliddns插件。只能用SH脚本的方式自动解析IPV6到域名。 登录到阿里云控制台,在右上角头像处打开一个菜单选择Accesskey管理。之后会跳出一个选项,我们使用子用户。这样能指定子用户的权限保证安全。 进入子用户管理界面以后创建一个子用户,并把API调用访问选项勾上,然后确定。记录好accesskey ID和accesskey secret。当然也可以直接点击左上角下载包含他们的CSV文件。 下一步授予子用户管理云解析的权限 下一步是修改aliddns.sh文件 在第一行的aliddnsipv6_ak填入你的accesskey ID,在第二行的aliddnsipv6_sk填入你的accesskey secret,第三行的aliddnsipv6_name1填入主机记录,第四行的aliddnsipv6_domain填入你的域名。 然后修改一下第二十行的网卡设置,登录到openwrt ssh。输入下面的命令 ifconfig 找出拥有公网IPV6地址的网卡,比如我的是eth1 如果你的是eth0,那就把下面把第二十行的eth1改成eth0 ipv6s=`ip addr show eth1 改为 ipv6s=`ip addr show eth0 修改好后将aliddns.sh文件用winSCP上传到openwrt /usr/lib/ddns文件夹中,并设置0755权限。 cd到ddns目录,./aliddns.sh.看看是否运行成功,如果运行成功会输出本机的ipv6地址。并在稍后收到阿里云发来的域名解析变更邮件。 最后配置一下aliddns.sh的定时自动运行,在openwrt的计划任务中添加下面这条命令,提交后就完成配置。 */10 * * * * /usr/lib/ddns/aliddns.sh 接下来配置socat ipv6 to ipv4转发,以此访问与openwrt lan口下的局域网主机。 首先输入下面命令安装socat opkg update 安装好以后在系统-启动项,下拉到最下面-本地启动脚本中 输入socat转发命令 并以exit 0结尾。 转发命令格式: TCP转发 socat TCP6-LISTEN:IPV6端口,reuseaddr,forkTCP4:IPV4地址:IPV4端口 & TCP转发 socat UDP6-LISTEN:IPV6端口,reuseaddr,forkUDP4:IPV4地址:IPV4端口 & exit 0 比如我想通过IPV6的1125端口访问 192.168.1.1:80也就是openwrt的管理页面,IPV6的1122端口访问 192.168.1.1:22端口,IPV6的5201端口访问 192.168.1.246:5201端口,并同时设置UDP和TCP访问。那么命令就是下面这种格式。 socat TCP6-LISTEN:1125,reuseaddr,fork TCP4:192.168.1.1:80 & socat UDP6-LISTEN:1125,reuseaddr,fork UDP4:192.168.1.1:80 & socat TCP6-LISTEN:1122,reuseaddr,fork TCP4:192.168.1.1:22 & socat UDP6-LISTEN:1122,reuseaddr,fork UDP4:192.168.1.1:22 & socat TCP6-LISTEN:5201,reuseaddr,fork TCP4:192.168.1.246:5201 & socat UDP6-LISTEN:5201,reuseaddr,fork UDP4:192.168.1.246:5201& exit 0 这里需要注意转发的IPV6端口,需要在防火墙中设置放行。一切弄好之后就可以通过域名:指定端口的方式访问内网资源了内网穿透 篇一:aliddns动态解析IPV6远程访问openwrt及同网段设备
opkg install socat

还没有评论,来说两句吧...