某老头的折腾笔记

使用Cloudflare Tunnels实现内网穿透(以WordPress为例)

使用Cloudflare Tunnels实现内网穿透,同时突破80/443限制

(感谢天地极限大佬、左右同学指导,完成了内网穿透设置,可域名不带端口访问。本文大部分内容为抄袭原作者:左右。记录下来主要为防止本人老年痴呆忘记下次如何操作)

    玩NAS的朋友应该都知道,国内由于IPv4资源紧张,运营商通常不会主动给家宽用户开公网IP,即使要到了公网,也会因众所周知的原因,无法使用80/443端口,对于喜爱折腾的NAS玩家来说可谓如鲠在喉。
    一般来说,有公网的情况下,可以使用DDNS实现域名访问家里的NAS,但是无法使用80/443端口;如果没有公网,也可以借助像Frp、Zerotier、NPS/NPC等家喻户晓工具实现内网穿透,不过都各有优缺点。本文要介绍的通过大名鼎鼎的工具–CloudFlare Tunnels,实现无公网的情况下,穿透到内网,并直接使用80、443端口。

前提条件

  • 注册一个Cloudflare账号,选择免费计划就行
  • 准备一个域名,没有就买一个,不想买可以自己找免费的

将域名解析转移到Cloudflare

1、登录Cloudfalre,将你的域名添加到Zones中,然后在DNS上找到名称服务器的网址,如下图红框所示,两个网址就是:
将域名添加搭配Cloudflare中
将域名添加搭配Cloudflare中并找到NS服务网址

2、比如,域名是从腾讯云购买的,则找到你的域名,在管理中奖DNS解析服务器改成Cloudfalre的名称服务器网址即可,如下图
腾讯云修改域名DNS解析服务器
在腾讯云控制台中修改域名的DNS解析服务器

创建Tunnels

1、打开Cloudfalre控制台,依次点击Zero Trust-> Access -> Tunnels


首次点Zero Trust会弹出下图这个,这里随意填一个,这个是隐藏的域名,专属你的

2、创建Tunnel
1) Access -> Tunnels,点击Add a Tunnel按钮,创建一个新的隧道

建好了的是下图这样子的,这里先不管:

创建Tunnel

2)名称按自己想法填,然后点击Save Tunnel
填写Tunnel
3)保存后,回到Tunnels界面,找到上面创建的Tunnel,点击右边三个点,选择Configure,到达配置页面
Configure

4)在配置界面,切换到Public Hostname页签,点击Add a Public Hostname,创建一个新的穿通域名
添加公网穿透域名

参考图中的说明进行填写,划重点:
Subdomain:就是你要用的子域名,比如你想用x.abc.com访问家中的服务,就填x
Domain:就是你的域名,直接下拉箭头选择
Path:路径,不用填
type:内网服务的协议,一般是http,如果你非要给内网服务配置了https,你就选https
URL:内网服务的ip+端口,比如你想穿透到内网的WP博客,则填写WP的ip和端口。
注意:此处如果内网服务是docker部署的,需要注意使用合适的ip和端口

穿通设置

  1. 设置并保存后,回到域名的DNS记录页面,会看到已经自动添加了一个CNAME记录,并且开启了代理。什么都不要动,保持就行。

部署connector

上面的步骤已经完成了域名配置以及隧道配置,但是要想让域名自动找到你的内网服务,还需要你在内网安装一个程序,或者叫连接器,用于与Cloudfalre Tunnel进行通信。
1、回到Tunnels界面,并点击Configure进入配置页面,在Overview页签中,可以看到选择安装环境的按钮,选择一个,然后安装下面的提示安装即可。
Choose an operation system

2、本文以Docker为例,选择Docker按钮,下面会显示出一键启动镜像的命令,把命令复制到你的内网机器上,打开终端(或者ssh),直接执行即可。实际上就是启动了一个Cloudflared容器
Docker允许Cloudfalred

如果是威联通用户,也可以通过威联通dock容器的应用创建来部署 Cloudflared
这里以应用程序安装为例输入以下命令部署:

version: '3.8'

services:

    cloudflared:

        container_name: Cloudflared

        restart: unless-stopped

        network_mode: host

        environment:

            - cloudflared --no-autoupdate

        command: tunnel --no-autoupdate run --token 改成你的token

        image: 'cloudflare/cloudflared:latest'

token和上面图一样在获取,如下图(注意粘贴token要去掉别的无用的代码,因为按钮复制的是整个docker拉取的命令)

3、部署完成后,去博客后台,用你的域名替换原有的内网ip

4、一些必要的设置, 让文章页面走缓存,管理后台不走
回到cloudflare页面,点击你的域名
左侧选择:规则-页面规则
然后创建页面规则添加以下三项,按图设置,并注意上下顺序:

强制HTTPS设置

现在打开域名,由于没有ssl证书,会提示HTTP显示不安全,所以要进行强制HTTPS设置,去到cloudflare页面,点开你的域名,左侧选择SSL/TLS-边缘证书
右边确保开启这两项:始终使用HTTPS和自动 HTTPS 重写
打开你的域名测试,abc.xxxx.com,会自动跳https了,且自带证书
为避免出现问题,可以在宝塔面板后台对wordpress对应进行如下设置:
添加三行命令后保存即可:
$_SERVER['HTTPS'] = 'on';
define('FORCE_SSL_LOGIN', true);
define('FORCE_SSL_ADMIN', true);

起飞吧

现在,打开浏览器,输入你域名(不需要输入端口),你会发现可以直接在外网访问内网的服务了。

来自为知笔记(Wiz)
赞(0) 打赏
未经允许不得转载:一个锤子 » 使用Cloudflare Tunnels实现内网穿透(以WordPress为例)

评论 抢沙发