
解决家宽 443/80 等常用端口被禁用的问题
一. 前言
众所周知,所有网络服务在运行时都需要监听端口号,例如通过 http(s)://地址:端口
的格式可以用来访问某个网站。如果这个网站使用的是 80 / 443 这样的默认端口,在访问时还可以省略端口号,比如百度 https://www.baidu.com
的地址实际上是 https://www.baidu.com:443
,省略掉端口号可以让网址更加直观,还能方便记忆。
但在国内由于运营商的各种限制,就算申请到公网 IP 也会发现 80/8080/443
等常用端口被禁用。如果想要开通必须给网站备案,然后向运营商提交申请。而很多人发现申请解除了限制过段时间也有可能又被莫名其妙关掉,非常麻烦。
二. 解决方案
在这种情况下想要访问自建的网站会增加一些麻烦,实际上能使用的方式其实有很多,而且各有优劣。
方案 / 效果 | 操作难度 | 隐藏端口 | 访问速度 | 实现成本 |
---|---|---|---|---|
更换端口 | ⭐️ | 否 | 快 | 低 |
隐/显性 URL 记录 | ⭐️⭐️ | 是 | 快 | 低 |
Cloudflare 代理 | ⭐️⭐️⭐️ | 是 | 慢 | 低 |
NPS / FRP 内网穿透 | ⭐️⭐️⭐️⭐️⭐️ | 是 | 快 | 高 |
1. 更换端口
这个方案其实是最简单,也最没有技术含量的一种方法了。换一个端口号不会影响添加证书使用SSL,缺点就是没办法隐藏端口号。
2. 隐/显性 URL 记录
这个需要配置两条域名解析才可以达到效果,例如您的域名是 example.com
,网站监听在 12345
端口,最终想要用 redir.example.com
访问网站:
- 主机名
a
→ 记录类型A/AAA
→ 记录值IP地址
- 主机名
redir
→ 记录类型隐/显性 URL 记录
→ 记录值http(s)://a.example.com:12345
在只配置了第一条的情况下,访问网站的地址是 http(s)://example.com:12345
。但在配置了第二条之后,就可以使用 redir.example.com
访问网站了。
但这种方式有致命的缺点,您会发现用配置 隐性URL记录
的域名访问网站,无论在如何切换页面 URL 都是 redir.example.com
,地址栏不会发生任何变化,也就意味着不能复制定位到指定页面的 URL 路径。如果用配置 显性 URL 记录
的域名访问网站,地址栏会立即跳转到 http(s)://a.example.com:12345
,根本达不到隐藏端口号的目的。
这是因为 隐性 URL 记录
是将网站内容直接展示在当前页面下,就像是嵌套了个网页,无论怎么切换页面地址栏的 URL 都不会发生变化。而 显性 URL 记录
是直接将页面重定向了记录值,会把真实的域名和端口暴露出来。
如果您的网站只有单个页面,不在乎 URL 地址是否变化,配置 隐性URL记录
来达到效果会更合适。
需要注意的是不同的域名注册商记录类型名称会有差异,已知阿里和腾讯的域名解析支持配置
隐/显性 URL 记录
。
3. Cloudflare 代理
关于赛博活佛的事迹大家可能已经听过不少了,使用 Cloudflare 解析域名可以使用免费的代理功能,访问网站会通过代理服务器中转请求,能达到隐藏网站的真实 IP 的效果,而且还提供免费的 SSL 证书和 DDOS 攻击防御。
Cloudflare 代理在开启状态下,会先通过 443
端口强制 SSL 连接中转服务器,再由中转服务器通过 80/443
端口连接至网站。由于网站的 80/443
端口不通,因此需要额外的配置修改代理服务器连接网站使用的端口。
切换加密模式
点击菜单 SSL/TLS
→ 概述
→ 配置
,切换加密模式到 完全(严格)
。
获取边缘证书
切换加密模式后,代理服务器与我们的网站之间也需要使用 SSL 加密,因此需要下载边缘证书并配置到网站。点击菜单 SSL/TLS
→ 边缘证书
获取和下载,该证书是通配符证书,到期后会自动续订,无需定期更新。
创建规则
点击菜单 规则
→ Orign Rules
→ 创建规则
,网站的端口以 123456
为例。字段选择 SSL/HTTPS
,重写到 123456
。
在像实例图片这样配置后,访问 https://test.myhs.cc
就相当于访问的是 http://123.123.123.123:12345
,而且还是 SSL 加密连接。
如果只需要对某个特定的域名解析生效,还可以点击图中的
And
按钮添加主机名
规则。
该方法唯一的缺点就是代理服务器都在国外,访问速度很慢。如果想加速自己电脑的访问速度,可以通过 测试工具 获取访问速度最快的代理服务器 IP 并修改 Hosts 文件,就能加速访问网站。
4. NPS / FRP 内网穿透
该方法的原理是通过有公网 IP 的服务器来中转请求,需要在服务器和网站所在的设备上分别配置好服务端和客户端。好处是允许网站所在设备没有公网 IP,但需要额外的支出购买服务器。
由于博主在撰写时没有可以使用的服务器,所以在未经测试的情况下无法提供教程,您可以自行参阅项目文档:
- NPS:ehang-io/nps: 一款轻量级、高性能、功能强大的内网穿透代理服务器。支持tcp、udp、socks5、http等几乎所有流量转发,可用来访问内网网站、本地支付接口调试、ssh访问、远程桌面,内网dns解析、内网socks5代理等等……,并带有功能强大的web管理端。a lightweight, high-performance, powerful intranet penetration proxy server, with a powerful web management terminal. (github.com)
- FRP:fatedier/frp: A fast reverse proxy to help you expose a local server behind a NAT or firewall to the internet. (github.com)