Unraid实践——IPv6反向代理实现域名访问Docker应用
前言
距离上一篇公网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 设置,将可选项全部设置为中继模式
如何判断成功获取到IPv6地址
Windows下进入设置-网络和Internet-属性,可以看到IPv6地址处 24 开头的地址即表示配置成功
或者直接打开 test-ipv6.com 测试页面查看
防火墙配置
本地获取到公网地址后,可能还不能直接从外网访问,需要进行防火墙配置
打开网络-防火墙-基本设置,将 转发 处更改为 接受 即可
Unraid配置
首先兑现上篇文章的承诺,工作后入正了
Settings进去Docker和VM Manager中将Enable设置为No,进入 Settings->Network Settings,将 Network protocol 设置为 IPv4 + IPv6
其余的 assignment 部分设置为 Automatic,会自动分配IP地址
当IPv6分配完成后,可以看到 IPv6 address 变成了 24 开头的地址
(后文中参考配置的IPv4地址默认使用192.168.123.181,需要替换成你自己的地址)
至此NAS已经成功获取IPv6公网地址,重新Enable Docker和VM后,就可以直接在浏览器中输入 [IPv6地址]:端口 访问NAS中的应用了
配置域名解析
申请免费域名
这部分可以参考前一篇文章,动态域名解析需要到DNS服务商处获取API ID和Key,可以参考不同服务商的官方文档
DDNS-GO设置自动解析
这次我们将动态域名解析(DDNS)服务直接安装在了Unraid,省去一些路由器的配置
Docker中添加 jeessy/ddns-go 的配置如图
浏览器输入 192.168.123.181:9876 进入ddns-go后台
选择DNS服务商并填入ID和Token
下方找到IPv6勾选启用,选择通过网卡获取,Domain框中输入域名,这里依旧使用泛域名 *.xxx.ml
保存配置后等待日志显示新增解析成功
现在已经可以通过 x.xxx.ml:端口号 访问NAS上的应用了
设置反向代理
Unraid修改网页端口
与前一篇文章不同的是,域名直接解析到了NAS的IPv6地址,而不是路由器的地址,因此需要修改Unraid默认的网页端口,将80和443端口预留给反向代理程序
进去Settings ->Management Access,将HTTP和HTTPS port更改成其他空闲端口,Apply以后,内网访问Unraid后台需要使用新设置的端口号,例如 192.168.123.181:1880
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, 然后返回并确认保存
重启一下流量开关后,进入我的设备-全部参数-状态信息,查看IP地址部分成功获取到 24 开头的公网IPv6地址
使用域名访问应用
浏览器中输入代理的域名,访问成功
最后
鸽了好久的内容终于补完了,这次没有那么多啰嗦的废话,也是因为从学生成长为了一名入门级码农。希望这篇文章可以帮助还没有用上IPv6的小伙伴,有任何问题欢迎在评论区讨论
链接
[1] Unraid尝鲜——设置反向代理实现泛域名访问Docker应用_NAS存储_什么值得买 (smzdm.com)
[2] OpenWrt二级路由器分配公网IPV6地址 | 梓喵出没 (azimiao.com)
作者声明本文无利益相关,欢迎值友理性交流,和谐讨论~
值友7736933919
校验提示文案
值友5344443119
校验提示文案
Oo野火燎原oO
校验提示文案
piscesc
校验提示文案
MayaHenazy
校验提示文案
雷雷leo1
校验提示文案
梁下君子
校验提示文案
窃格瓦拉
校验提示文案
值友8974565270
校验提示文案
值友8974565270
校验提示文案
窃格瓦拉
校验提示文案
梁下君子
校验提示文案
雷雷leo1
校验提示文案
MayaHenazy
校验提示文案
值友7736933919
校验提示文案
值友5344443119
校验提示文案
piscesc
校验提示文案
Oo野火燎原oO
校验提示文案