×

无需公网 IP 的内网穿透方案

hqy hqy 发表于2025-12-17 22:22:00 浏览20 评论0

抢沙发发表评论

 ——通过 Cloudflare Tunnel 安全访问家中 Web 服务。

   之前自己在玩客云上搭了个私人云盘,然后一直使用的cpolar内网穿透,不过免费用户的公网地址每天都会更换一次,使用起来也不太方便。正好最近有注意到可以使用cloudflare tunnel方案代替,记录一下部署过程(值得一提的是cloudflare就在上个月18号出现重大故障导致X, ChatGPT, Spotify等全球数百万个网站和服务瘫痪,我当时一度以为我的vpn出问题了)。
一、部署前的准备工作
1、需要绑定域名,因此需要购买一个域名,可到阿里云或腾讯云购买,第一年只需一块钱,第二年似乎也不贵大概十块到几十左右;
2、注册cloudflare账号;
3、一台NAS或其它服务器,我自己是在玩客云搭建了nextcloud
二、整体原理
    
图片
三、部署流程
1、把自己购买的域名接入cloudflare
    进入cloudflare官网添加好自己的域名,选择free计划,修改域名DNS服务器(在哪个平台买的就到哪个平台改)为cloudflare提供的两个NS,等待DNS生效。
在腾讯云修改我的域名DNS服务器
图片
修改为cloudflare提供的两个NS
图片
2、本地设备安装cloudflared

①armhf:

wget https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-arm -O cloudflared

 

arm64

wget https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-arm64 -O cloudflared

 ②添加可执行权限
    chmod +x cloudflared
③移动到/usr/local/bin
    mv cloudflared /usr/local/bin/
3、登录创建隧道
 ①登录
    执行命令:
        cloudflared tunnel login
     执行命令后会给一个链接,浏览器打开链接登录并选择自己的域名,成功后会生成cert.pem文件,位置在~/.cloudflared/cert.pem。
②创建隧道
       执行命令:
            cloudflared tunnel create <yourtunnel>
    <yourtunnel>是自定义的名字,成功后会生成隧道凭证~/.cloudflared/<UUID>.json。
如下图是我的设备上的创建的隧道信息
图片
4、配置隧道路由
创建config.yaml文件:
    vi ~/.cloudflared/config.yaml
填写以下内容:
图片
注释:
    ①credentials-file: /root/.cloudflared/<UUID>.json 替换为自己实际的 UUID;
    ②hostname:  你想访问的子域名(example.com替换为自己购买的域名,其余可自定义,这就是最终通过浏览器公网访问的地址),可添加多个hostname暴露多个服务;
    ③service: http://localhost:8080 # 自己本地服务地址,这个是我nextcloud的服务地址;
   ④- service: http_status:404           兜底规则
5、启动隧道服务
(1)可以临时运行一下看是否成功,执行以下命令:
        cloudflared tunnel run <yourtunnel>
(2) 如果没问题,可以配置systemd永久运行
    创建服务文件:

        vi  /etc/systemd/system/cloudflared.service

  输入以下内容:

图片

启用并启动命令:

    systemctl daemon-reload

    systemctl enable --now cloudflared

     systemctl status cloudflared

图片
6、在cloudflared 控制台添加DNS记录

登录cloudflare官网,进入我的域名,添加一条CNAME记录:

  *Name对应前面配置的hostname 

      *Target : <UUID>.cfargotunnel.com cloudflared tunnel info <mytunnel>命令查看)

      *Proxy status: Proxied(橙色云)

完成后,访问https://<你前面设置的hostname>即可。

添加DNS记录如下图

图片
7、web服务添加trust-domain
    我的nas上部署的是nextcloud,因此我是直接修改config.php文件。
图片
三、开始访问
如下图在浏览器输入地址访问(地址就是前面在设备部署时~/.cloudflared/config.yaml文件里设置的hostname)。
图片
    以上就是部署全过程


打赏

本文链接:https://www.jingber.cn/post/3947.html 转载需授权!

分享到:

群贤毕至

访客

您的IP地址是: