为什么使用IPv6?
近年,工信部等部门在推进IPv6发展,家宽基本是内网IPv4+公网IPv6的状态了,而我们部署了服务最头痛的莫过于在局域网以外的地方无法访问我们的服务,而公网IPv6恰恰可以解决这个问题,只需要进行简单的设置即可。
检查是否有IPv6及获取IPv6
通过IPv6测试我们可以检查是否已经拥有了IPv6
如下图所示即拥有了IPv6
如果是以下显示没有检测到IPv6地址,但是DNS服务器接入了IPv6的情况,一般是设置或者是硬件不支持
首先检查硬件是否支持
在(๐•ᴗ•๐)由器的后台查看是否有IPv6功能或者通过网络搜索(๐•ᴗ•๐)由器型号+IPv6,一般不是太老的(๐•ᴗ•๐)由器已经支持了IPv6
其次检查设置是否开启
如果是设置开启的状态依然没有IPv6,大概率是上级设备的问题,一般这个设备是光(๐•ᴗ•๐),光(๐•ᴗ•๐)修改设置可能需要运营商的人员来协助,最简单合理的方式是将光(๐•ᴗ•๐)改为桥接模式,(๐•ᴗ•๐)由器进行拨号。
需要用到的工具
ddns-go
简单易用的 DDNS。支持阿里云、腾讯云、Dnspod、Cloudflare、Callback、华为云、百度云、Porkbun、GoDaddy、Namecheap、NameSilo...
nginxproxymanager
该项目作为预构建的 docker 映像提供,使您能够轻松转发到在家或其他地方运行的网站,包括免费的 SSL,而无需了解太多有关 Nginx 或 Letsencrypt 的信息。
部署工具
目前主要的成品NAS已经开始支持docker compose,所有这里使用docker compose的方式部署工具
需要注意的是家宽的80和443端口一般是用不了的,所有这里我使用了880和8443端口,可根据需要自行修改
version: "3.8"
services:
ddns-go:
image: jeessy/ddns-go
container_name: ddns-go
restart: unless-stopped
network_mode: bridge
ports:
- '9876:9876'
volumes:
- './ddns-go:/root'
npm:
container_name: npm
image: jc21/nginx-proxy-manager:latest
restart: unless-stopped
network_mode: bridge
ports:
- '81:81'
- '880:80'
- '8443:443'
volumes:
- './nginx-proxy-manager/data:/data'
- './nginx-proxy-manager/letsencrypt:/etc/letsencrypt'
if(window.hljsLoader && !document.currentScr(๐•ᴗ•๐).parentNode.hasAttribute('data-s9e-livepreview-onupdate')) {
window.hljsLoader.highlightBlocks(document.currentScr(๐•ᴗ•๐).parentNode);
}
使用ddns-go解析IP
在解析IP之前我们需要有一个域名,可以在阿里云,腾讯云等域名服务商购买
我这里使用cloudflare作为演示
需要着重注意的是选择正确的服务商,所需要的token或者key,ddns-go均提供了跳转连接,如下图所示。
取消IPv4项的勾选,开始设置IPv6项,如下图所示。
获取 IP 方式选择通过网卡获取,如下图所示,有多个网卡的情况需要选择机器的物理网卡,请自行尝试。
Domains设置我建议是解析泛域名,即在注册的域名前加 “*” 即可,如下图所示
使用nginx-proxy-manager反代并配置SSL证书
首先申请SSL证书备用
按下图顺序进入申请页面
申请页面如下图
申请好证书之后进行反代设置,如下图顺序进入Proxy Hosts,并打开添加页面
按照下图进行设置并保存
以上就设置好了域名解析及反代,可以通过https://emby.example.com:8443访问emby了。