无需公网IP,用国际域名一键访问本地博客!不加端口号,不做内网穿透、不开端口映射,像官网一样上线!Cloudflare Tunnel全民教程


前言

在国内,搭建一个对公网开放的网站从来都不简单:

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

我就是我,不起眼的那颗烟火!有时候看到自己也会恼火!