强迫症就是不想要端口折腾记
换宽带引起的折腾
搬新之后,新小区拉不了移动宽带,肉疼的拉了个300M的电信。想到电信宽带是有公网IP的,再想到原先用vultr的VPS+frp内网穿透代理方式的访问速度太感人,就想要直接使用公网IP访问nas的方式代替之。
简单配置光猫和路由器上的端口映射后,实测对nas的外网访问速度,在线看视频、上下传文件、远程桌面虚拟机再也不卡了👍。直接使用IP+端口号方式访问,虽然配置很简单,但是在浏览器里输入IP和端口号,强迫症是忍不了的,况且买了三五年的域名也不能浪费呀。那么问题来了,怎么折腾能直接用二级域名访问到我nas上的应用服务呢?
捋了一下手上现有的资源清单
| VPS | vultr上租的虚拟主机,含有公网IP + 80和443端口 | |
| xrr.fun | 阿里云上租的域名 | |
| xurr.work | 阿里云上租的域名 | |
| 电信宽带 | 含有公网IP是动态分配的,在光猫的WLAN上,光猫可配置端口映射,但80和443端口被封 | |
| 华硕路由器 | 路由器的WLAN口接在光猫的LAN口上 | |
| 群晖NAS | 白群晖,很多功能有待开发,通过有线接在路由器的LAN口上 |
电信宽带的IP默认是动态的
原先VPS的IP是固定的,在阿里云上做域名解析的时候,直接使用A记录的方式解析到这个IP就可以了。电信宽带的IP默认是动态分配的,可以打客服电话申请改为固定IP。但是使用固定IP不是我想要的,有些网站下载或其他其他操作的限制是根据公网上的IP来的,如果IP被限制了,只要重启下光猫分配我一个新IP就可以绕过限制,所以觉得还是得保留动态IP。
用动态IP就要做DDNS才方便,不然每次IP一变,就去阿里云改域名的A记录值,也是要逼shi懒人的节奏(网上搜索说阿里云提供了DDNS的SDK,但复杂啰嗦的配置也不是我想要的)。
群晖提供了动态域名解析的功能,配置路径在控制面板->外部访问->DDNS,一堆的DDNS服务商里选择了Synology,毕竟nas是他亲儿子,配置后,电信宽带动态IP就和设置的二级域名绑定了。然后在阿里云上配置购买的域名指向这个DDNS的二级域名,虽然这种域名解析转了两次,但是配置简单省钱😀。
电信宽带的80和443端口被封了
一开始的时候443端口没有被封,通过群晖的控制面板->应用程序门户->反向代理服务器,可以直接通过例如https://book.xrr.fun访问到我的书单。然鹅,没过两天,443端口也被封了。在浏览器地址栏里输入https://book.xrr.fun:4000的方式,实在没法忍,只能想其他办法了。
方法一
阿里云DNS解析中有显式转发和隐式转发两种方式可以设置,但是要求目标服务器做备案。简便的一种方法是购买阿里云的虚拟主机可以得到备案服务号,但是要新买一个vps,比较费钱,pass。
方法二
利用301、302跳转,配置点如下,
- 在阿里云DNS配置
book.xrr.fun指向vps的固定IP; - 在阿里云DNS配置
book.xurr.work指向nas配置DDNS的二级域名; - 可选步骤:在nas上配置反向代理,将http的应用转到https及4000端口上;
vps上docker部署
nginx,配置nginx将book.xrr.fun的访问转到https://book.xurr.work:4000。虽然跳转后浏览器地址栏显示的是https://book.xurr.work:4000,但是打开浏览器时只要输入book.xrr.fun就可以访问,还是很拯救强迫症的。第一次跳转可能需要花费几秒钟,之后访问就比较省时间了。修改nginx配置参考,打开默认配置文件/etc/nginx/default.conf,增加如下if配置段,
1
2
3
4
5
6
7
8
9
10server {
listen 80;
server_name localhost;
if ($host = 'book.xrr.fun' ) {
return https://book.xurr.work:4000;
}
...
}因为使用了https,所以还需要一个ssl证书。nas虽然提供了
Let’s Encrypt的免费证书申请,但是浏览器中对这个证书还是会报不安全。阿里云提供了免费个人版的赛门铁克(Symantec)ssl证书购买,每个证书可以和一个一级或二级域名绑定,将证书下载后配置到nas中,浏览器中终于显示小绿锁,满满的安全。
跳转示例:http://book.xrr.fun
假装做个总结
换工作+新冠疫情的影响,过了毕业工作以来的最长的一个假期——2个月+,得重新折腾起来哇,折腾自己,人生就怕没有追求,将来需要的事,现在必须要着手准备。