基于腾讯云EO实现对被封443端口IP的 443 端口访问

Guikong
Guikong
发布于 2024-10-21 / 23 阅读
0

基于腾讯云EO实现对被封443端口IP的 443 端口访问

目前,大部分家庭宽带的IP 地址都属于城域网 IP,并非独立的公网 IP,并且动态公网 IP 的申请难度在大部分地区都是比较大的。即使申请到了公网 IP,但是常用的 80、443、8080 端口都是封闭不可用的。

我的公网 IP 绑定的家用 NAS 服务器并不用于任何公开服务,仅用于个人访问,常用的一些服务没有 80、443 端口也是可以正常使用的,并且因为未使用常用端口,安全性也更高。但是偶尔需要进行测试或者搭建一些个人应用,使用非 443 端口还是非常不便。本篇文章介绍一下我常用的1种使用CDN 实现 443 端口访问被封443 端口的家用动态公网 IP 的方法。

今天介绍的方法适用于已备案的域名,且域名在 DNS 服务商已经解析。同时假设你有一个动态公网 IP 的服务器。

使用腾讯云EdgeOne 加速服务

EdgeOne(后简称 EO)是腾讯云发布的一个和 Cloudflare 服务有相似之处的边缘安全加速网络,目前也在逐步取代腾讯云的内容分发服务(CDN)的部分功能,例如动态 ECDN 部分。

腾讯云 EO 支持不同的版本,对应不同规模的调用次数和流量,对于个人使用而言,个人版完全够用,且日常互动价在 40-70 之间既可买到一年。

使用 EO 实现 443 端口访问被封443 的服务器时,你的域名需要是国内已完成工信部备案的域名。同时,这里只能加速 http 服务。

(1)配置域名的动态 DDNS 解析

我们需要用到两个域名,假设一个是a.example.com ,另一个是b.example.com。

这里我们假设a.example.com是你需要公网 443 端口访问的域名,那么我们使用b.example.com这个地址来配置 DDNS 动态解析。

配置动态解析是为了防止动态 IP 地址变化,配置方法可以看我的这篇文章:

同时,在我们的服务器端,需要配置b.example.com这个域名作为你的主机服务的外部访问地址。例如,如果你使用 nginx 反向代理了一个本地的 docker 服务,那么需要使用b.example.com这个域名作为你的该 nginx 服务的域名。那么正常情况下,此时使用 https://b.example.com:9443是可以通过 https 访问你的服务器的相关服务的。

(2)在 EO 添加源站组

打开 EO 的源站配置,我们添加一个源站组,将动态解析的b.example.com作为源站填写到源站信息中,同时设置回源 Host 为b.example.com。

image-clfa.png

(3)在 EO 添加域名设置

我们打开 EO 的域名管理,添加域名,这里我们添加 a.example.com作为加速域名,同时源站类型选择源站组,选择刚才我们创建的源站组。随后,我们将回源端口改为我们的服务器暴露的端口。例如,如果我们的服务器暴露了 9443 作为 https 服务,那么就将回源端口的 HTTPS 改为 9443 即可。

image-wgdq.png

(4)在 DNS 解析 CNAME并设置 SSL 证书

完成前面的设置后,EO 会给到你一个 CNAME 解析地址,你需要去 DNS 服务商将你的域名的 a.example.com的解析设置为 CNAME 并解析到指定的腾讯云 EO 地址。

随后在 EO 设置面板设置你的 SSL 证书,等待部署完成,就可以通过 https://a.example.com直接访问源站相关服务了。

(5)额外的安全设置

此时我们通过https://b.example.com:9443和 https://a.example.com ,都是可以访问源站服务的。

如果你不希望https://b.example.com:9443能够直接被访问,你可以通过 EO 的自定义头部信息的方法,增加一个回源的头部信息,然后在服务器 nginx 中设置,仅允许带有特定头部信息的访问请求,即仅允许来自 EO 访问https://b.example.com:9443的请求。

这样,只有通过https://a.example.com访问才能访问源站服务。

image-kloi.png