使用cloudflare+域名 内网穿透

Refer to

没有公网IP? 免费域名搭建cloudflare内网穿透,不限流量,不用绑卡支付 - YouTube
https://dongchenxie.com/2024/02/25/running-cloudflare-tunnel-with-docker-compose/

1
docker run cloudflare/cloudflared:latest tunnel --no-autoupdate run --token <token>

这个命令来自于cloudflare,使用docker compose 运行只要配置相应的 docker-compose.yml 文件就可以。

以上的docker命令写作 yaml的话

1
2
3
4
5
6
7
8
9
10
version: '3' 
services:
cloudflared:
image: cloudflare/cloudflared:latest
restart: unless-stopped
command: tunnel --no-autoupdate run
volumes:
- ./cloudflared:/etc/cloudflared
environment:
- TUNNEL_TOKEN=<your_tunnel_token>

这里的 volumes表示映射从当前目录映射到docker容器中的==/etc/cloudflared==

Cloudflare的配置,其实就很简单

原理

内网穿透其实上是需要一个公网ip,和自己的内网ip地址,英文名NAT (Network Address Translation (NAT)),这个协议刚开始是因为ipv4地址不够用了,控制公网ip地址的方法,使得内网ip地址可以复用,从而解决ip地址不够的问题

NAT

简单的介绍 cloudflare

Cloudflare是一家成立于2009年的美国科技公司,主要提供CDN(内容分发网络)、DDoS防护、DNS服务等网络安全和性能优化服务。它就像网站的保安和快递员,通过全球数据中心网络帮助网站更快、更安全地传递内容给用户,同时保护网站免受黑客攻击。目前已成为全球最大的网络服务提供商之一,服务着数百万网站。​​​​​​​​​​​​​​​​

使用docker 运行 cloud connect, 并使用tunnel进行内网穿透

托管域名

先明确:

  • 内网ip, 我本地服务器的ip地址
  • 公网ip,我购买的域名的ip地址
    我要做的事就是使用 cloudflare的tunnel 把它们连起来

打开cloudflare后, 进入dashboard,点击右上角的add,增加对于域名的管理:如下

接下来按照步骤将cloudflare的命令复制到公网ip域名的nameserver处

之后就只需要等待其准备完毕

创建tunnel 和服务

这里包含两个核心步骤,

  1. 在本地服务器上启动好cloudflare connector
  2. 在cloudflare上设置好相应域名

回到 cloudflare 找到 zero trust, 然后需要创建一个自己的项目

这里创建之后最重要的就是这个token.

有了token后在本地服务器docker上运行cloudflared即可

1
docker run cloudflare/cloudflared:latest tunnel --no-autoupdate run --token <token>

这个命令来自于cloudflare,使用docker compose 运行只要配置相应的 docker-compose.yml 文件就可以。

以上的docker命令写作 yaml的话

1
2
3
4
5
6
7
8
9
10
version: '3' 
services:
cloudflared:
image: cloudflare/cloudflared:latest
restart: unless-stopped
command: tunnel --no-autoupdate run
volumes:
- ./cloudflared:/etc/cloudflared
environment:
- TUNNEL_TOKEN=<your_tunnel_token>

这里的 volumes表示映射从当前目录映射到docker容器中的==/etc/cloudflared==

这个时候可以在cloudflare zero trust 的项目处看到状态,显示为health说明tunnel建立成功可以进行本地服务挂载了,我这里挂载了一个自建的图床详见[[图床搭建]]