前言
原本使用frp的方案进行外网访问jellyfin,但是阿里云的轻量服务器的带宽只有5M,只能支持看1080p的视频,看4K有点吃力,为了有更好的观影体验,选择ipv6+DDNS的方式实现外网访问,此方案能跑满群晖的上行带宽且不需要部署额外的软件。
ipv6设置
路由器修改
宽带一般都会给ipv6,群晖所使用的路由器是红米AX6S,首先进入路由器管理后台:192.168.31.1;选择常用设置-上网设置,在最底下找到ipv6网络设置,开启ipv6,上网方式选择Native,防火墙可以关闭。
设置完成后请查看路由器中是否有IPV6地址,如果有表示开启成功。如果没有IPV6地址,请把需要登录光猫后台,把光猫改成桥接模式,使用路由器进行拨号,再次尝试。
群晖修改
进入群晖系统,在控制面版-网络-网络界面-局域网1-编辑-ipv6中查看是否有ipv6地址。如果有则可以使用流量或其他连有ipv6网络的机器测试,在浏览器中输入: [群晖ipv6地址],看是否可以进入群晖界面,如果可以表示可以外网访问了。
DDNS设置
ipv6地址虽然没有NAT,可以直接访问,但是可能会进行变化,用户不可能每次都去请求最新的ipv6地址进行访问,同时ipv6地址也不好记,这时需要使用DDNS技术,将域名解析到地址中,在地址变化时,域名总是指向最新的地址。用户只需要使用域名就可以访问内网设备。
DDNS-go设置
本文使用DDNS-go进行域名解析,首先在docker中安装ddns-go,在docker文件夹下创建ddns-go的文件夹,之后需要进行文件映射。
下载完毕后进行容器创建,设置网络和映射文件夹就好
默认端口是9876,输入内网ip:9876即可进入管理界面。本人使用的是阿里云的域名,在阿里云的域名列表,右上方选择头像,进入AccessKey管理。
创建AccessKey,将AccessKey ID和AccessKey Secret复制到ddns-go的对应位置
在ddns-go中,开启IPV6,选择通过接口获取,在Domains栏填入你的域名,这个也支持子域名。如果需要IPV4,也可以启用IPV4,与ipv6一样的步骤。点击保存即可。
回到阿里云域名管理平台,可以看到新创建了一个AAAA记录。使用带有ipv6网络的机器输入域名,看是否可以进入群晖的管理界面。
反向代理
群晖的界面可以成功进入,表示DDNS设置成功,但目前域名加jellyfin端口是无法进入jellyfin界面的。由于我的jellfin服务器运行在docker上,而docker对ipv6的支持并不是很好,如果修改docker,需要重新部署jellfin,较为麻烦。好在群晖提供了一个反向代理服务器,可以将内网端口映射出去,实现ipv6访问。
进入控制面板-登录门户-高级-反向代理服务器
新建反向代理服务器规则-来源主机名为上文的域名,端口随意。目的地端口为jellyfin的本地端口。之后使用域名+8097即可访问jellfin。
后文
至此全部的操作完成。目前三大运营商的流量都有ipv6地址,使用流量可以访问内网的机器,但是在公司,学校等地往往没有ipv6地址,也就无法访问机器。所以解决目前是使用ipv6和frp两套方案实现外部访问和观影的。关于frp的部署见参考链接。