前言
在国内,搭建一个对公网开放的网站从来都不简单:
1、你可能没有公网 IP
2、哪怕你有公网 IP,但是 80 和 443 的网站核心端口默认被封
但今天要讲的方案,只需要一台能本地能上网的 VPS 或本地服务器,就能用 Cloudflare 的隧道服务,把你的网站发布到全球,并且使用国际域名,和普通的网站看起来没有任何区别!
重点是:永久免费!!!!
本期视频
准备工作
1、国际域名一个,推荐使用 .top 域名,首年 1.88刀,续费 4.88刀,嫌贵就年抛!
若是不会注册域名,请详细阅读:这篇文章
推荐在 Namesilo 进行购买,因为他的 WHOIS 隐私 是免费的,可以适当的进行一下隐私保护,而且域名还都挺便宜的 购买地址:点击访问 (.top
1.88刀/年.cfd
1.79刀/年 )新用户 1 美元优惠券:v2rayssr.com
2、注册 CloudFlare,并把域名托管在上面,若是不会托管,还是详细阅读:这篇文章
3、本地 VPS (或是其他)服务器。(博主环境是 PVE 上面创建的 Debian12,并且安装了宝塔面板)
若是不会搭建 PVE 平台,请详细阅读:这篇文章
4、SSH 连接工具:点击下载
PVE 创建设置
一键替换容器模版源
# 无论你的模板源是否更改过,都可以替换为清华源 perl -i -pe 's|url\s*=>\s*".*?"|url => "https://mirrors.tuna.tsinghua.edu.cn/proxmox/images"| if $in_block; $in_block = 1 if /host\s*=>\s*"download\.proxmox\.com"/; $in_block = 0 if /\}/' /usr/share/perl5/PVE/APLInfo.pm && pveam update
创建 CT 虚拟机,Debian12 (PVE - Local - CT 模版)
SSH 登录 CT 虚拟机
sed -i 's/^#Port 22/Port 22/' /etc/ssh/sshd_config sed -i 's/^#PermitRootLogin/PermitRootLogin/' /etc/ssh/sshd_config sed -i 's/^#PasswordAuthentication/PasswordAuthentication/' /etc/ssh/sshd_config sed -i 's/PermitRootLogin prohibit-password/PermitRootLogin yes/g' /etc/ssh/sshd_config sed -i 's/PasswordAuthentication no/PasswordAuthentication yes/g' /etc/ssh/sshd_config reboot
一键更换国内(清华源)
cp /etc/apt/sources.list /etc/apt/sources.list.bak && \ echo "备份原有源为 /etc/apt/sources.list.bak" cat > /etc/apt/sources.list <<EOF deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bookworm main contrib non-free non-free-firmware deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ bookworm main contrib non-free non-free-firmware deb https://mirrors.tuna.tsinghua.edu.cn/debian-security bookworm-security main contrib non-free non-free-firmware deb-src https://mirrors.tuna.tsinghua.edu.cn/debian-security bookworm-security main contrib non-free non-free-firmware deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bookworm-updates main contrib non-free non-free-firmware deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ bookworm-updates main contrib non-free non-free-firmware deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bookworm-backports main contrib non-free non-free-firmware deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ bookworm-backports main contrib non-free non-free-firmware EOF apt update
安装设置宝塔面板
安装宝塔面板
SSH 工具连接我们的 Debian12
# 宝塔面板 9.0.0 稳定版 优先推荐 wget -O install.sh https://download.bt.cn/install/install_lts.sh && bash install.sh ed8484becd
安装博客基本环境
我们选择 LNMP 安装方式 - 极速安装
搭建本地博客
注意,域名这里需要填写你的域名,包括宝塔面板的内网 IP 地址。
我们使用 WordPress 来创建我们的博客
WordPress 下载地址:点击下载
重要提示:博客安装完毕以后,我们不要进行设置(需要等后续配置好以后,再来进行设置)
安装配置 CloudFlare
安装 CloudFlare
因为 GitHub 国内无法访问,若是你不能正常的使用下面的命令,我们可以 访问这个地址 获取代理地址
在 https://github.com
前面加上 代理地址 例如:https://ghfast.top/https://github.com/*
# 因为 GitHub 国内无法访问,若是上面的命令无法访问,请看视频操作 wget https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64.deb dpkg -i cloudflared-linux-amd64.deb # 验证 cloudflare 版本,显示版本号,证明安装成功 cloudflared --version
CloudFlare 认证
执行下面命令,并复制登录地址,用浏览器打开,选择相关域名,授权
cloudflared login
授权后会在 /root/.cloudflared/
下生成 cert.pem
认证文件,以下图片为成功的提示!
创建 Tunnel
以下命令中的 bozaiz-top
改为你需要的项目名字,推荐使用域名,把 .
改为 -
,英文符号!!!!!
cloudflared tunnel create bozaiz-top
执行成功以后,如上图。会在 /root/.cloudflared
下,生成图中红色的 .json
文件,我们需要对其改名为 bozaiz-top.json
(就是上一步的项目名字)
设置 DNS 解析
依次执行下面的命令,创建博客所需域名的解析,若是不需要多个域名访问,请看视频的解释!
# 命令中的 bozaiz-top ,是刚才创建的 tunnel 的项目名字,请自行修改 cloudflared tunnel route dns bozaiz-top bozaiz.top cloudflared tunnel route dns bozaiz-top www.bozaiz.top
执行成功以后会提示如上图,并在域名的 DNS 中自动创建相关的 CNAME 解析,如下图:
配置 ingress 路由
在 /root/.cloudflared
下创建文件: config.yml
,填入以下内容
# tunnel 后面为刚才设置的 Tunnel 的项目名字 # credentials-file 后面为刚才修改的 json 文件绝对路径 # 两个 hostname 后面的域名为你的域名 # 其中的 IP 地址为安装宝塔机器的 IP 地址,端口不能丢 tunnel: bozaiz-top credentials-file: /root/.cloudflared/bozaiz-top.json ingress: - hostname: www.bozaiz.top service: http://10.0.0.56:80 - hostname: bozaiz.top service: http://10.0.0.56:80 - service: http_status:404
设置 CloudFlare 启动和自启
# 安装 cloudflared 服务 cloudflared service install # cloudflared 开机启动 systemctl enable cloudflared # cloudflared 重新启动 systemctl restart cloudflared
启用 HTTPS 强制访问
在域名的 SSL/TLS 中,找到边缘证书,开启 始终使用 HTTPS
到这里,我们的 CloudFlare 就已经全部配置完毕了
访问并配置博客
现在,我们可以通过我们的域名来访问我们的博客了。
若是小白不太明白的,可以通过观看视频来配置 WordPress
后记
我们来说说很多人关于安全问题的顾虑,Zero Trust 是零信任接入
零信任的三大核心原则: 1.默认不信任(Never trust) 所有请求都要验证身份,不管你是员工、设备、脚本。 2.强制验证(Always verify) 每一次访问,都必须身份认证 + 权限校验。 3.最小权限访问(Least privilege) 谁只能访问他该访问的服务,其他一律禁止。
Cloudflare Tunnel 是 Cloudflare Zero Trust 体系下的核心服务
它的本质是:“由内向外发起连接,Cloudflare 不会入侵或探测你本地网络”
没有公网 IP、没有端口暴露、不使用传统防火墙端口穿透
这就是 Zero Trust 的最直接体现:默认所有网络请求不可信,必须通过可信入口发起并受控调度。
所以,不是你网站代码有 IP 的故意暴露,或是网站程序存在远程读取漏洞,哪怕是 Cloudflare 工作人员和他人泄密,也不会暴露你的 IP。
因为 Cloudflare Tunnel + Zero Trust 架构,不会因为 Cloudflare 员工或外部泄密而暴露你的源站 IP,除非你自己在页面或 DNS 设置中泄露了它。
最后,博主祝愿大家玩的愉快!最后附上其他的命令(不用的项目请及时删除,不要存在重复名字的项目)
# 关闭本地的 cloudflared tunnel systemctl stop cloudflared # 查看 Cloudflare Tunnel 列表 cloudflared tunnel list # 删除相关的项目 bozaiz-top 为项目名字 cloudflared tunnel delete bozaiz-top
Comments | NOTHING