序言

  起初无意间发现cloudflare的origin rules规则,可以进行端口反向代理,将对应端口上的页面代理到正常的80、443上,直接访问。于是开始琢磨起它的使用方法

这个功能的应用场景非常广泛,大致有以下几点,

  • 家宽,运营商拦截了80、443端口的,可以绕过限制建站。
  • 没有公网ipv4但有ipv6的家宽,可以实现1的同时将ipv6单栈解析转为ipv4、ipv6双栈的。
  • 让限制了端口数量的nat小鸡建站
  • 让纯ipv6小鸡也可以建站

1. 有公网ipv4/6

有公网ip就相对简单很多,首先需要准备以下三项

  • ddns工具
  • 通过ddns将域名A tool.example解析到家宽ip上
  • 将域名A(tool.example)cname到域名B(xxx.example)上

* 域名A为工具域名,域名B为需要访问的域名

ddns工具安装教程网上非常多,默认已经安装

1.1 首先将域名解析到ddns上

image

1.2 在cloudflare创建一个cname记录,将xxx.example.com解析到tool.example.com上,并开启cf cdn

image

1.3 创建一个Origin rules,将域名xxx.example.com重写到1234端口.

80/443为1234*
image
image
* *这里的1234就是你所需要访问的端口,因为web服务80/443端口压根通信不出去,所以需要你在Nginx或类似工具上修改默认的

完成

访问你的xxx.example.com就能打开你的网站了

2. 无公网ip

既然没有公网ip那就只能使用frp/nps转发工具了

2.1 安装frp

  • 您可以从 GitHub 的 Release 页面中下载最新版本的客户端和服务器二进制文件。所有文件都打包在一个压缩包中,还包含了一份完整的配置参数说明。

    1. 解压下载的压缩包。
    2. 将frpc复制到内网服务所在的机器上。
    3. 将frps复制到拥有公网 IP 地址的机器上,并将它们放在任意目录。
  • 配置frps.toml并运行frps服务

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# FRP 服务端监听端口
bindPort = 7000

# HTTP  HTTPS 虚拟主机端口
vhostHTTPPort = 8090   # HTTP 服务端口
vhostHTTPSPort = 8443 # HTTPS 服务端口可选

# FRP 服务端 Web 管理界面配置
[webServer]
addr = "0.0.0.0"  # 监听地址0.0.0.0 表示允许所有 IP 访问
port = 7001       # Web 管理界面端口
user = "xxx"    # 登录用户名
password = "xxxxxx"  # 登录密码

# FRP 客户端连接鉴权配置
[auth]
token = "xxxxxxxx"  # 客户端连接所需的鉴权 token

# 日志配置
[log]
to = "./log"     # 日志文件保存路径
level = "info"   # 日志级别可选trace, debug, info, warn, error
maxDays = 7      # 日志保留天数

* xxxxx为需要自定义修改的部分

运行frps服务

1
./frps -c ./frps.toml

* 如果需要在后台长期运行,建议结合其他工具,如 systemd 和 supervisor

  • 配置frpc.toml并运行frpc服务
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
serverAddr = "xx.xx.xx.xx" #运行frps服务的公网机器ip
serverPort = 7000
auth.method = "token"
auth.token = "xxxxxx"      #frps.toml配置里的token

[[proxies]]
name = "xxx"
type = "tcp"
localIP = "127.0.0.1"
localPort = 80/443
remotePort = 1234

运行frpc服务

1
./frpc -c ./frpc.toml

至此frp基本配置完毕更多参数配置参考 frp参数配置

2.2 转发服务端口

参考第一部分即可