作者:窃格瓦拉
前言
距离上一篇公网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地址了。
如果是光猫拨号+二级路由,需要开启中继模式:
分别进入 网络-接口-LAN和WAN,点击下方的IPv6 设置,将可选项全部设置为中继模式
如何判断成功获取到IPv6地址
Windows下进入设置-网络和Internet-属性,可以看到IPv6地址处 24 开头的地址即表示配置成功
或者直接打开 test-ipv6.com 测试页面查看
防火墙配置
本地获取到公网地址后,可能还不能直接从外网访问,需要进行防火墙配置
打开网络-防火墙-基本设置,将 转发 处更改为 接受 即可
Unraid配置
首先兑现一下上篇文章的承诺,工作后入正了!
关掉Docker和VM,进入 Settings->Network Settings,将 Network protocol 设置为 IPv4 + IPv6
其余的 assignment 部分设置为 Automatic,会自动分配IP地址
当IPv6分配完成后,可以看到 IPv6 address 变成了 24 开头的地址
(后文中参考配置的IPv4地址默认使用192.168.123.181,需要替换成你自己的地址)
至此NAS已经成功获取IPv6公网地址,可以直接在浏览器中输入 [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端口预留给反向代理程序
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)
4000520066 欢迎批评指正
All Rights Reserved 新浪公司 版权所有