IStoreOS 固件开启 Ipv6 并实现异地远程访问

前言

眼馋 ipv6 很久了,在查看相关的文字教程和视频后 开始对自己的家的路由器下手了,一顿折腾后,终于可以通过 ipv6 (配置了域名) 访问自家的设备了,附上成功的截图,通过域名访问

通过域名访问路由器后台

如果你想通过 ipv6 + 域名 + https 异地访问自家的路由器管理后台,可以参考我的配置方式

设备环境

我的网络拓扑如下(运营商是联通的):

  1. 光猫:让安装人员改好了桥接模式,开放了 IPv6 下发;
  2. 主路由:R2S,安装了 iStoreOS版本:22.03.7 2024120615)的 openwrt 固件,负责 pppoe 拨号;
  3. 无线 AP:斐讯 k2p,设置成了无线 AP 模式,不负责 DHCP,地址分配任务交给了 openwrt(能减少一层 nat 算一层)

网络拓扑

准备好了,我接下会按照 ipv6 + 域名 + https 的顺序介绍,一步步实现异地访问自家的路由器管理后台

一、openwrt 获取 ipv6

光猫开启了 ipv6 后,openwrt 还没有配置 IPv6 相关的设置 所以第一步,要先配置好相关的 IPv6 设置 在iStoreOS 固件中,可以通过系统便利工具 ,方便地配置好 IPv6 相关的设置

该工具可以在侧边栏的 iStore 插件商店中找到,安装即可

选择 IPv6 Full,点击执行,等待执行完成,关闭弹出的命令行窗口

开启 ipv6

接下来配置 openwrt网络,还需要配置一下接口 lan 的有关 IPv6 的设置 找到 lan 接口,点击 编辑

编辑 lan 接口

按照顺序完成如下的配置,最后再点击保存

修改高级设置 修改高级设置

修改 DHCPIPv6 设置,RA 选择服务器模式,不启用 DHCPv6 服务 开启 RA 模式 修改 IPv6 RA 设置,RA 标记选择 取消 RA 标记 完成这几项配置后,回到刚刚的网络 --> 接口 页面,点击保存并应用,等待一会 保存并应用

二、获取域名并配置 DDNS-GO

通过 dync6 注册一个免费域名,域名的注册方法不在这里赘述,你也可以用自己已有的域名,方法类似 假设你已经注册好了域名,现在需要先把 DDNS-GOACME 证书 要用的信息记录下来

域名和 token 信息

  1. 注册好的域名
  2. 配置 DDNS-GOACME 证书需要的 token 令牌

接下来就是 DDNS-GO 的配置,请参考下图 DDNS-GO

URL 的链接格式如下

https://dynv6.com/api/update?zone=#{domain}&token=替换成你的token令牌&ipv6=#{ip}

点击 save ,等待 3~5 分钟,去 dynv6 网站的后台,查看域名的 DNS 记录里,是否自动添加一条 AAAA 的记录,正常情况如下所示

域名解析记录自动添加成功

已经成功一大半了,接下来,我们还需要配置 ACME 证书服务,以及 uhttpd 服务,为了能够,安全的从外网异地访问我们的路由器管理后台,麻烦一点也是值得的!

三、配置 ACME 证书服务

找到 服务 --> ACME 证书,打开 ACME 证书 插件(没有请自行安装),如下图所示,填入自己注册域名使用的邮箱,删除默认提供的示例 填入有限并删除默认的示例

添加新配置 添加自己的证书配置

配置常规设置,添加域名信息 配置常规设置,添加域名信息

配置质询验证 配置质询验证 相关配置项:

  1. DNS API: dns_dynv6
  2. DNS API 凭证:DYNV6_TOKEN=你的TOKEN令牌

DNS API 的值,每家域名提供商的值都不一样,请在这里找自己域名家的 ACME 支持的 API 列表

完成上面的配置,最后点击保存,可以看到添加如下的配置,点击保存并应用 保存配置

耐心等待 3~10 分钟等待证书颁发,登录路由的器 SSH ,检查证书密钥文件是否下发到我们的设备,正常应该如下图所示:

检查证书下发情况

查看的路径为:/etc/acme/你的域名/

如果拿到了 fullchain.cer 和 域名相对应的 *.key 密钥,就可以配置最后的 uhttpd 服务了

如果还是没有拿到,请检查 证书配置,是否填写正确 !

四、配置 uhttpd 服务与 socat 端口转发

打开 uhttpd 插件,选择对应的证书和密钥 配置 uhttpd 的证书和密钥 选好了证书和密钥

如果你之前配置了其他的证书和密钥,建议删除后再配置,以免发生冲突!

由于 iStoreOS 采用的是 22.03 版本的 openwrt ,防火墙的端口转发,不支持转发 ipv6 地址,所以只好用 socat 来进行端口转发,曲线救国

接下来开始配置 socat,找到 网络 --> socat插件(没有请自行安装) 打开 socat 插件配置

添加转发规则 添加转发规则

返回概览,检查端口转发的状态是否开启,如果失败可能是监听的端口有冲突 检查开启状态

五、测试 ipv6 是否可达

终于到最后一步了,成败在此一举! 通过 ipv6 测试站点 ,测试我们的路由器后台是否可达,得带上端口号测试!

成功! 测试域名的解析

域名的记录,需要一些时间,等一会再测试会比较稳定

碎碎念

拿到公网 IP,可以做的事情就很多了,包括单不限于

  1. 和朋友游戏远程联机更加方便;
  2. 搭建自己的属于自己服务器,部署一些服务
  3. 部署自己的 AI 服务,异地远程访问

uhttpd 服务也许可以换成 Nginx 反向代理? 这样可以更加灵活的配置一些需要加密访问的服务

IPv6 有时候会有点不稳定,配置的过程中不要着急,一步步来 特别是 DDNS-GO 和证书,域名的记录和证书的颁发,需要一些时间

参考资料

参考了很多大佬的资料和视频,少走了很多弯路,感激涕零,整理如下

  1. 【拒绝裸奔】openwrt防火墙安全配置,DDNS、TLS证书,公网远程访问NAS家庭影音
  2. dynv6 免费域名申请
  3. ACME 证书配置需要的 DNS API
  4. openwrt 配置 ipv6 访问的方法
  5. ipv6 远程访问配置方法 2
  6. ipv6 测试
  7. 设备 ipv6 地址查询
  8. OpenWrt 开启 IPv6 公网访问全指南
  9. 通过socat,使OpenWrt实现ipv6端口转发