国内服务器免备案实现 HTTPS:Cloudflare Tunnel 配置全记录
0x00 为什么选择 Cloudflare Tunnel?
备案繁琐:没有备案的域名/国外域名无法直接指向国内服务器 IP。
安全需求:现代浏览器对许多 API(如剪贴板、摄像头等)要求必须在 HTTPS 环境下运行。
Cloudflare Tunnel 提供了一种优雅的解决方案:通过在本地运行一个轻量级守护进程,建立一条通往 Cloudflare 网络的长连接,从而实现无需公网 IP、自动分配 SSL 证书的高性能内网穿透。
0x01 安装 Cloudflared
根据您的系统环境,选择对应的安装方式:
1. Debian / Ubuntu 系列 (APT)
# 下载最新 .deb 安装包
wget https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64.deb
# 安装
sudo dpkg -i cloudflared-linux-amd64.deb
2. CentOS / RHEL / Fedora 系列 (YUM)
# 下载最新 .rpm 安装包
wget https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-x86_64.rpm
# 安装
sudo yum localinstall cloudflared-linux-x86_64.rpm
0x02 隧道认证与创建
1. 身份认证
执行以下命令,终端会返回一个链接:
cloudflared tunnel login
在浏览器中打开该链接,登录您的 Cloudflare 账号,选择域名 例如 cornradio.org 并授权。
2. 创建隧道
创建一个名称为 lc-tunnel (名称可以自己取)的隧道:
cloudflared tunnel create lc-tunnel
执行后会获得一串 Tunnel ID,例如:98b17e94-xxxx-xxxx-xxxx-xxxx8a1297c9。
3. 配置 DNS 解析
将子域名例如 xxx.cornradio.org 映射到该隧道:
cloudflared tunnel route dns lc-tunnel xxx.cornradio.org
0x03 完善配置文件
为了实现服务的长期稳定运行,我们需要将隧道信息写入配置文件。
配置文件路径:/etc/cloudflared/config.yml
sudo mkdir -p /etc/cloudflared
sudo vim /etc/cloudflared/config.yml
写入以下内容(已根据您的环境配置):
tunnel: 98b17e94-xxxx-xxxx-xxxx-xxxx8a1297c9
credentials-file: /root/.cloudflared/98b17e94-xxxx-xxxx-xxxx-xxxx8a1297c9.json
ingress:
# 将域名映射到本地 5001 端口
- hostname: xxx.cornradio.org
service: http://localhost:5001
# 默认 404 规则,处理未匹配的请求
- service: http_status:404
0x04 注册为系统服务
将 cloudflared 配置为系统守护进程,实现开机自启。
# 安装服务
sudo cloudflared service install
# 启动并检查状态
sudo systemctl start cloudflared
sudo systemctl status cloudflared
# 设置开机自启
sudo systemctl enable cloudflared
0x05 结语
现在,访问 https://xxx.cornradio.org,流量将通过 Cloudflare 的安全隧道安全地转发到服务器本地的 5001 端口。
通过这种方式,我们不仅解决了国内服务器 80/443 端口被封锁的问题,还免费获得了由 Cloudflare 颁发的受信任证书,完美解决了现代浏览器对“安全上下文”的严苛要求。
