IPV4+IPV6公网DDNS搭配https
背景
起因
- 家用宽带下发了IPV6地址,加上本身的公网IPV4地址,达成了公网双栈的网络环境。
- 之前配置的的DDNS仅限于http的无加密访问,暴露在公网且不支持IPV6解析。
目标
- 配置IPV6网络,实现各支持IPV6的终端均可以进行IPV6的使用。
- 为光猫的出口IPV4地址和nas的IPV6地址配置DDNS解析。
- 对DDNS的域名解析配置https证书认证,仅涉及到nas管理后台页面,transmission web control。
- 实现免端口号访问。
方案
- 配置光猫和路由器就可以简单实现。
- 搭配自动同步动态IP脚本实现动态DDNS,米发提供301永久重定向实现免端口号访问。(我看看能不能贴一个推广链接,啊这,没有推广链接,那没事了)
- 申请免费的Let’s Encrypt证书实现https证书认证。
效果为:
主域名(进行301重定向)
----->前缀.域名:端口号(对应泛域名证书)
----->A解析记录解析到IPV4/AAAA解析记录解析到IPV6
----->通过端口转发到nas上
过程
光猫配置
设备:电信光猫ZXHN F650
网络->网络设置->网络名称选择5_INTERNET_R_VID_41
ipv6地址获取方式: DHCPv6
获取前缀(选中)
前缀获取方式: DCHPV6-PD
DNS获取方式: DHCPv6
这里我选择过自动配置,出现了PC设备获取的IPV6地址无法在路由器上查看到的问题,修改后问题解决。
网络->用户侧管理->IPv6设置
DNS来源: 网络连接
接口: 5_INTERNET_R_VID_41
前缀来源: WAN侧代理
启动DHCPv6服务器(选中)
起始地址(我没有改默认配置)
结束地址(我没有改默认配置)
地址信息是否通过DHCP获取 (选中)
其他信息是否通过DHCP获取 (选中)
RA使能(选中)
RA报文最大自动发送时间(我没有改默认配置)
RA报文最小自动发送时间(我没有改默认配置)
路由器配置
设备:Asus AC86U
基本设置
联机类型:Passthrough
Release prefix on exit:启用
IPv6 DNS 设置
自动接上 DNS 服务器:启用
Let’s Encrypt证书申请
-
参考https://github.com/acmesh-official/acme.sh项目进行证书的申请
-
我则直接使用DNSPOD的ID和key的API方式进行申请(ID和key获取对于不同域名供应商有所不同)
-
也可以使用Koolshare软件中心的Let’s Encrypt自动申请SSL证书(也是采用的acme)
-
最终申请了泛域名证书用于同一域名不同前缀的认证。
获得材料:
- fullchain.crt (证书)
- *.域名.key(密钥)
备份待用
DDNS配置
- 这里采用了https://github.com/NewFuture/DDNS项目脚本
我使用了二进制版进行实现,在威联通TS-453Bmini上成功执行。 - 定时任务配置参考https://blog.csdn.net/weixin_33966365/article/details/94316205
vim /etc/config/crontab
* */1 * * * /share/Public/dnspod/ddns -c /share/Public/dnspod/config.json > /share/Public/dnspod/run.log #添加这一行后保存,这里是每小时执行一次#
crontab /etc/config/crontab #套用設定#
/etc/init.d/crond.sh restart #重启crontab#
301永久重定向
参考https://www.mfpad.com/blog/how-to-redirect-a-domain进行301重定向的设置
证书文件使用
- qnap取代证书
/mnt/HDA_ROOT/.config/stunnel - nginx反代证书
nginx反向代理
nginx反向代理证书使用是为了让transmission实现https的访问,不通过代理未找到合适的方法实现https访问。(nginx有各种安装方法,我采用了在qnap上安装Qnginx的方式)
下载后的Qnginx文件通过qnap的APP Center安装,然后进行配置。
配置文件是/share/CACHEDEV1_DATA/.qpkg/QNginx/etc/nginx/nginx.conf
根据你选择安装的位置对应配置文件的所在,然后进行证书和反向代理的配置。(配置方法参考了挺多,就不附上原文链接了)以下是我新增的反向代理的配置部分
server {
listen <监听的端口> ssl;
server_name <监听的域名>;
ssl_certificate /share/CACHEDEV1_DATA/.qpkg/QNginx/etc/ssl.crt; #证书复制到自定义位置#
ssl_certificate_key /share/CACHEDEV1_DATA/.qpkg/QNginx/etc/ssl.key; #密钥复制到自定义位置#
location / {
root html;
index index.php index.html index.htm;
proxy_pass <transsmission的http连接及端口>;
}
}
重启nginx后生效
这样外部网络访问transmission的方式就是https域名和自定义端口,通过反向代理转发到内部的http连接和transsmission的访问端口。
QA
413 Request Entity Too Large报错
修改/share/CACHEDEV1_DATA/.qpkg/QNginx/etc/php.ini
upload_max_filesize = 20M (原2M)
post_max_size = 80M (原8M)
(实际上可能并不需要修改)
主要修改/share/CACHEDEV1_DATA/.qpkg/QNginx/etc/nginx/nginx.conf
server {
…
client_max_body_size 20M;
…
}