前言:
前段时间摸索了一下IPv6远程访问NAS的方案,现在基本宽带和手机都有IPv6了,特意分享一下流程。
在群聊上经常见到很多老哥用xx.com或者www.xx.com后面加个端口的形式访问内网服务,一个服务一个端口。我这个分享主要是把不同端口对应不同的二级域名,比如:
访问 file.xx.com 就可以访问NAS的文件服务,访问 video.xx.com 就可以访问NAS的视频服务,不需要后面加端口(前提是80或者433没有被封,被封了可以改其他默认端口,一样可以用二级域名访问,但是域名后面需要加一个固定的端口)。
由于路由IPv6防火墙的配置还不熟悉,因为安全问题(个人比较敏感),内网机器也比较多不想一台台配置排查防火墙,暂时没有分配内网机器的IPv6地址(等有空摸熟ip6tables再改回来),只在路由开IPv6,转发内网NAS的端口到路由做域名解析,架构如下:
对安全问题不敏感,可以把IPv6分配到NAS上,NAS直接做域名解析,不需要像我这么复杂。
部署流程如下(以阿里为例):
一、确认能获取分配到IPv6地址;
二、购买阿里域名,取得AccessKey,部署域名解析;
三、NAS上部署Docker的宝塔面板,并优化;
四、宝塔面板部署站点并自动申请SSL;
五、宝塔站点反向代理NAS或内网服务;
一、路由获取、内网分配IPv6
由于各人使用的路由和联网方式花式比较多,而且网上资料也比较多,大家自行百度。
貌似国内各大运营商的地址开头都是固定的:
电信IPv6 地址开头是:240e
教育IPv6 地址开头是:2001
联通IPv6 地址开头是:2404
移动IPv6 地址开头是:2409
这里要确认的是,DDNS你要解析到哪个设备的IP地址上(IPv6):
1、不担心安全问题的,直接给NAS分配IPv6地址,在NAS上做域名解析即可;
2、对安全问题比较敏感的,不想分配内网IPv6地址的,在路由上做域名解析也可;(等我有空摸熟ip6tables,也改回方案1)
如果选用方案2的话,你需要在路由上安装socat软件:
opkg update && opkg install socat
socat可以把内网IPv4端口转发到路由的IPv6端口上,如:
socat TCP6-LISTEN:80,reuseaddr,fork TCP4:192.168.7.7:8080
这样内网192.168.7.7的8080就转发到路由IPv6的80端口上了,我这里IPv6的80和433端口,外网可以正常访问。
PS:记得在路由防火墙放行哦!
二、DDNS自动解析IPv6
NAS用docker或者脚本,路由用插件或者脚本,网上教程也很多,不再赘述。
大家要做 * 记录哦,* 是二级域名通配。
* 记录的意思是:无论二级域名是什么,都会指向主机IP,由主机去解析你访问的服务内容,这样我们就可以利用宝塔的nginx分开站点去反向代理不同的服务了。
我新三的老毛子插件,ipv6只能做一条记录,自己改了脚本再加了@记录,*级域名也可以指向主机了,纯粹也想用上*级域名。。。
三、Docker部署宝塔面板
可以参考人生观大佬的这篇文章:nRAID docker 安装宝塔,并持久化配置
1、我自己使用bridge模式,把http端口映射为主机8080端口,https端口映射为主机4433端口;根据docker hub的说明建议用host模式,不需要端口映射,这样的话你可能需要查一下主机有没有服务占用80.443.8888这几个端口。
2、不打算建站的话,用pch18/baota:lnp这个吧,没有数据库。
四、宝塔面板部署站点并开启SSL
1、进入宝塔面板后,新建一个站点,域名填自己的域名,二级域名前一段jellyfin可以自定义,PHP选纯静态;
2、自动申请Let’s Encrypt证书(这个证书支持二级域名通配,就是说一个证书就可以通配所有*级、二级域名,而且宝塔定时任务可以自动续签,个人比较喜欢用),在域名解析这一步申请的阿里AccessKey可以填到这里面去,没有意外点击申请就可以拿到证书了,点击一下强制HTTPS,以后访问HTTP都会自动跳转到HTTPS的
ps:如果想使用其他已经申请到的证书(比如阿里、腾讯一年期的单域名证书),用记事本直接打开下载下来的文件复制粘贴保存就可以的了
3、后续新增更多的站点的话,点开证书夹,点击部署就可以了!
4、大家可以先试试 jellyfin.xx.com 这个域名是不是可以使用了,可以访问的话:
五、反向代理NAS或内网服务
1、在宝塔的网站管理里面点进去刚刚新建的站点,选反向代理,添加反向代理,代理名称随意,目标URL就是你平时内网访问这个服务的地址,点击提交即可:
2、修改反向代理配置,因为默认的反向代理配置传递的header可能不适合我们的服务,把大括号里的修改一下并且把缓存关掉:
这里是一个通用的配置,替换上面标示{ }内的的内容即可,注意IP地址端口不需要改,要对应:
proxy_pass http://192.168.7.7:8096;
proxy_http_version 1.1;
proxy_read_timeout 300;
proxy_set_header Upgrade $http_upgrade;
proxy_cache_valid any 0s;
proxy_cache off;
3、没有下一步,这样就完了哦!如果想给站点另外加用户密码可以用basic认证:
最后有没有大佬出豆希主板的可以联系我哦