Unraid实践——IPv6反向代理实现域名访问Docker应用

[复制链接]
查看: 25|回复: 0

1

主题

1

帖子

5

积分

新手上路

Rank: 1

积分
5
窃格瓦拉 发表于 2023-3-11 17:08:48 | 显示全部楼层 |阅读模式
距离上一篇公网IPv4版本已经过去三年,而IPv6的教程也从前年拖更到现在,其实是因为一直在光猫拨号+二级路由的环境下,路由器内网的设备只能获取到内网IPv6地址,之前在Padavan上尝试用6relayd方式获取公网地址也不是很稳定。偶然发现了某位老哥的文章 OpenWrt二级路由器分配公网IPV6地址,解决了长久以来的困惑,原来二级路由开启中继模式让内网的设备获取公网IPv6并没有那么复杂,于是上周自己编译了一把OpenWrt,配置好路由器并让NAS获取到了IPv6地址,还在chatgpt的帮助下写了一个反向代理的程序,现在终于能舒舒服服地用IPv6了

。本文总结了个人使用IPv6的最佳实践,希望可以帮到大家。
目录
  • 开启IPv6
  • 光猫配置
  • 路由器配置 (以OpenWrt为例)
  • Unraid配置
  • 配置域名解析
  • 申请免费域名
  • DDNS-GO设置自动解析
  • 设置反向代理
  • Unraid修改网页端口
  • Docker部署反向代理应用
  • 移动网络访问
  • 手机APN打开IPv6
  • 使用域名访问应用
    开启IPv6光猫配置出租屋使用的是某SDN网关,默认开启了IPv6,所以我这里没有额外配置。
    动手能力强的朋友可以进入光猫后台修改IP协议,普通用户可以直接致电运营商远程开启。
    有条件的还可以改成桥接模式,具体参考前一篇文章或其他教程。
    路由器配置理论上较新型号的路由器使用光猫桥接+路由器拨号,下级设备就可以自动获取公网IPv6地址了。
    如果是光猫拨号+二级路由,需要开启中继模式:

    完整步骤请参考 https://www.azimiao.com/8523.html
    首先确认WAN6接口设置为DHCPv6客户端,然后将接口中的WAN和LAN都设置为静态地址;接口页面下方的IPv6 ULA 前缀部分需要清空
    分别进入 网络-接口-LAN和WAN,点击下方的IPv6 设置,将可选项全部设置为中继模式


    路由器-接口-LAN


    路由器-接口-WAN-DHCP服务器
    如何判断成功获取到IPv6地址
    Windows下进入设置-网络和Internet-属性,可以看到IPv6地址处 24 开头的地址即表示配置成功
    或者直接打开 test-ipv6.com 测试页面查看


    IPv6测试
    防火墙配置
    本地获取到公网地址后,可能还不能直接从外网访问,需要进行防火墙配置
    打开网络-防火墙-基本设置,将 转发 处更改为 接受 即可


    路由器-防火墙设置
    Unraid配置
    首先兑现上篇文章的承诺,工作后入正了




    正版软件受害者
    Settings进去Docker和VM Manager中将Enable设置为No,进入 Settings->Network Settings,将 Network protocol 设置为 IPv4 + IPv6


    Unraid-网络设置
    其余的 assignment 部分设置为 Automatic,会自动分配IP地址
    当IPv6分配完成后,可以看到 IPv6 address 变成了 24 开头的地址
    (后文中参考配置的IPv4地址默认使用192.168.123.181,需要替换成你自己的地址)
    至此NAS已经成功获取IPv6公网地址,重新Enable Docker和VM后,就可以直接在浏览器中输入 [IPv6地址]:端口 访问NAS中的应用了


    IPv6地址访问应用
    配置域名解析申请免费域名
    这部分可以参考前一篇文章,动态域名解析需要到DNS服务商处获取API ID和Key,可以参考不同服务商的官方文档
    DDNS-GO设置自动解析

    这次我们将动态域名解析(DDNS)服务直接安装在了Unraid,省去一些路由器的配置
    Docker中添加 jeessy/ddns-go 的配置如图


    DDNS-GO 容器设置
    浏览器输入 192.168.123.181:9876 进入ddns-go后台
    选择DNS服务商并填入ID和Token
    下方找到IPv6勾选启用,选择通过网卡获取,Domain框中输入域名,这里依旧使用泛域名 *.xxx.ml


    DDNS-GO 后台设置
    保存配置后等待日志显示新增解析成功


    新增域名解析成功
    现在已经可以通过 x.xxx.ml:端口号 访问NAS上的应用了
    设置反向代理Unraid修改网页端口与前一篇文章不同的是,域名直接解析到了NAS的IPv6地址,而不是路由器的地址,因此需要修改Unraid默认的网页端口,将80和443端口预留给反向代理程序
    进去Settings ->Management Access,将HTTP和HTTPS port更改成其他空闲端口,Apply以后,内网访问Unraid后台需要使用新设置的端口号,例如 192.168.123.181:1880


    修改Unraid网页端口
    Docker部署反向代理应用这次反向代理没有使用Nginx Proxy Manager,在ChatGPT帮助下用go语言写了一个反向代理的小应用,使用toml文件配置代理和证书目录,支持https,还可以自动申请ssl证书,免去了手动配置证书的麻烦
    Github代码仓库:ricardomlee/repro
    部署也很简单,首先准备一个配置文件,命名为repro.toml,内容参考如下
    [proxies]
    "jelly.example.ml" = "http://192.168.123.181:8096"
    [cert]
    dir = "/config/cert"
    将配置文件上传到appdata目录,例如新建一个/mnt/user/appdata/repro目录,放入repro.toml文件
    Docker中添加 ricardomlee/repro 的配置如图,将刚刚创建的目录映射到容器里的 /config 目录,80和443端口分别映射到容器内的80和443端口


    反向代理容器设置
    部署完成后,可以在浏览器输入代理的域名例如 jelly.example.ml 直接访问Unraid应用
    第一次访问应用需要申请SSL证书,因此会加载等待一段时间,等证书申请完成后面访问就很快了
    当然,除了代理Unraid上的应用,还可以代理内网中任意设备上的应用,例如要添加路由器管理页面的代理,只需要修改/mnt/user/appdata/repro/repro.toml文件,在 [proxies] 下方新增一行
    "newifi.example.ml" = "http://192.168.123.1:80"
    然后在Unraid Docker页面重启repro即可
    移动网络访问APN开启IPv6以MIUI13为例,打开设置-双卡与移动网络,选择上网卡设置 接入点名称(APN),进入默认APN的设置页面,找到APN协议,修改成 IPv4/IPv6, 然后返回并确认保存


    APN开启IPv6
    重启一下流量开关后,进入我的设备-全部参数-状态信息,查看IP地址部分成功获取到 24 开头的公网IPv6地址



    手机查看IPv6地址
    使用域名访问应用
    浏览器中输入代理的域名,访问成功




    域名访问应用
    最后

    鸽了好久的内容终于补完了,这次没有那么多啰嗦的废话,也是因为从学生成长为了一名入门级码农。希望这篇文章可以帮助还没有用上IPv6的小伙伴,有任何问题欢迎在评论区讨论


    链接
    [1] Unraid尝鲜——设置反向代理实现泛域名访问Docker应用_NAS存储_什么值得买 (smzdm.com)
    [2] OpenWrt二级路由器分配公网IPV6地址 | 梓喵出没 (azimiao.com)
  • 回复

    使用道具 举报

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

    本版积分规则

    Copyright   ©2015-2023  中国最佳CEO  技术支持:腾讯云