过程:用户在浏览器输入并访问”cfpages1.tanglu.cf”,(运营商DNS服务器没有cfpages1.tanglu.cf的DNS记录,进而向根域名”.cf”服务器询问tanglu.cf的DNS服务器,得到tanglu.cf的DNS服务器为”gerald.ns.cloudflare.com”,运营商DNS服务器继续向”gerald.ns.cloudflare.com”服务器发送请求询问”cfpages1.tanglu.cf”的DNS记录,返回得到其服务器IP为”back.tanglu.cf”,运营商DNS服务器继续请求”back.tanglu.cf“的DNS记录,cloudflare会返回”back.tanglu.cf”的A记录为”104.29.124.26”)最终运营商DNS服务器向浏览器返回cfpages.tanglu.cf 对应的IP为”104.29.124.26“,浏览器向104.29.124.26对应的服务器请求”cfpages1.tanglu.cf”的网页,cloudflare收到浏览器的请求,查找发现cfpages1.tanglu.cf对应的IP为”back.tanglu.cf“的IP 即”43.43.43.43”,cloudflare向”43.43.43.43”请求”cfpages1.tanglu.cf”网站的数据,CDN回源请求得到数据后再发送给浏览器
过程大概就是这样,成功CNAME接入cloudflare
[链接登录后可见][链接登录后可见]
[链接登录后可见]2、自选IP
这个其实很简单,从上述过程可以发现 我们要实现自选,运营商DNS服务器就不能给我们返回”104.29.124.26”这个普通IP,我们可以直接将步骤1.3的CNAME记录换为A记录 值为优选的IP(假设为1.0.0.1)
注意:此时fallback”back.tanglu.cf”所属的顶级域名不能与加速网站”pages1.tanglu.cf”相同(即不能都为”tanglu.cf”),我也不懂为什么,相同会报错”Error1000”
图片中我用的back.tanglu.ltd做的回落域名,加速域名为”three.a.tanglu.cf”
步骤3也是back.tanglu.ltd做的回落域名,加速域名为”cfpages2.tanglu.cf”
[链接登录后可见][链接登录后可见]3、分线路解析
这个是利用国内DNS平台的分线路解析功能,(tencent ali huawei都支持),因为ali支持二级域名NS接入,我就将”cfpages2.tanglu.cf”接入ali,然后直接设置A记录就行
[链接登录后可见][链接登录后可见][链接登录后可见][链接登录后可见]## Security
Events
触发防火墙规则的事件,从这里可以分析到很多,如果你这里一条日志都没有 我建议你配置一下WAF
WAF
Firewall rules:每个人的需求都不一样,我列举一些常见的
匹配规则由上到下遍历,一旦遇到符合的防火墙规则 则执行规则并停止匹配
*1、禁止古巴和加拿大的小米手机访问r2.smalljp.com/的所有内容**
[链接登录后可见]
2、禁止访问所有png类型的图片,并且禁止访问smalljp.com下的所有mp4资源
[链接登录后可见]3、显示所有访问者的IP,并要求对浏览器进行质询,这个建议放在最后一条识别
托管质询和JS质询比较友善,但也会增加相应时间
Legacy CAPTCHA 这个选项会让用户手动选择图片 也就是机器人验证弹窗 非常影响用户体验
[链接登录后可见]
4、防盗链设置
比如我的图片域名是 “img.tanglu.me”,我想让图片只在 “blog.tanglu.me” 博客中显示,在其他地方阻止访问
[链接登录后可见]
Rate limiting rules
这个是防止CC,我配置的是10秒钟请求数超过200封禁
[链接登录后可见]
Setting
Security Level 这个选中低就行了,级别越高 用户打开网页所以对于应该越慢 用户体验应该越差
Caching
cloudflare规则我有很多都不会,我只写下我会的规则,欢迎大佬分享规则
Configuration
这个应该看得懂,自己设置吧
Cache Rules
这个我也不是很会,只知道一些简单的,期待大佬补充
另外官方也有很详细的说明:[链接登录后可见]
缓存规则可以改变默认设置,但无法改变规定设置,可能写的有点歧义。举个例子来说就是cloudflare默认缓存文件中没有html 但是我通过设置可以实现缓存HTML,又比如cloudflare规定免费版支持缓存不超过200MB的文件,这时你即使设置缓存所有文件 但如果某个文件大小超过500MB,cloudflare依然不缓存,这时我建议使用cloudflare R2。
[链接登录后可见]
1、缓存r2.smalljp.com下的所有资源
[链接登录后可见]
Rules
Page Rules
1、强制将某个子域名的所有http内容重定向到https
如:强制所有[链接登录后可见]*
此方式也可用于“网站域名更换后的跳转”,如下图 将原网站blog.tanglu.me 的内容跳转到tang.lu 相关页面
[链接登录后可见]
[链接登录后可见]
2、不缓存r2.smalljp.com下的mp4文件
因为cloudflare最大缓存500MB 一旦视频超出500MB就会和缓存起冲突,导致视频直链无法在线观看,但不影响视频下载
[链接登录后可见]
Configuration Rules
这个我主要用来设置回源属性
当我tanglu.cf主域名在SSL/TLS中设置的为”flexible”模式,此模式下当客户端使用https协议访问CDN时,CDN到源服务器(即回源请求)强制为http协议,但一些服务必须使用https才能访问。例如:backblaze(俗称b2,提供对象存储服务),我使用”b2.tanglu.cf”给b2套上cloudflareCDN以免除流量费用,但是b2只允许https访问资源,这时就需要配置 Configuration Rules 使”b2.tanglu.cf”下的资源为https回源
[链接登录后可见]
Transform Rules
1、修改http相应头
例如b2对象存储被访问时响应头会包含存储同中的路径信息,我们可以修改或删除响应头部信息
b2的更多配置可以参考 Luminous 大佬的 这篇文章:([链接登录后可见])
[链接登录后可见]
[链接登录后可见]
[链接登录后可见]
Redirect Rules
重定向规则,例如设置防盗链,将其他站点引用我的图片重定型到一张错误图片
[链接登录后可见]
Origin Rules
这个我只知道富强用途,因为cloudflare只支持特定端口的请求,这个可以设置CDN回源请求的端口
Network
这里面的配置可以全部开启,有些我也不懂…
Apps
这个我也不了解,哦,不对!剩下的我都不了解
当然也不支持全部都了解
domain Registration
听说这个注册和续费都是全球最低价,google土区除外(顺便说一句google domain 土区是真的便宜,org net只要30元一年)
google domains和cloudflare没有的域名可以看我这篇文章:[链接登录后可见]
Zero Trust
Zero Trust我只对tunnels有一点了解,其他的访问令牌Access什么的我用不到 就没有过多了解
tunnels就是cloudflare提供的内网穿透,,软件名字叫做”cloudflared”,windows mac linux都可用。类似与frp但是设置比frp简单一些,非常好用(但大陆因为网络环境体验感一般)
[链接登录后可见]写的很详细,我将常用的功能演示一下
Tunnels
一、内网网站映射到公网
常用于家庭电脑搭建网站或中国境内封禁80 443端口的服务器做站
此内网需要可以与公网通信
前景概要:我在内网用nginx部署了三个网站 [链接登录后可见] [链接登录后可见] [链接登录后可见] ,我的服务器80 433端口都被封禁了,我想通过内网穿透实现通过 [链接登录后可见] [链接登录后可见] [链接登录后可见] 来访问它
注:
我可以部署[[链接登录后可见]?](https://tunnel1.a.xn–com%3F-dm1g/)
答:可以,你可以自签证书但是我不清楚cloudflared是否认可你这个证书,我个人认为没必要,因为用户端的证书是cloudflare提供的,你运行cloudflared程序的电脑和cloudflare服务器之间的内容肯定是被加密过的,所以就用http就行。另外多嘴一句 a.com 这个域名又不能被用户看到,用户看到的是web1.smalljp.com这个域名…
a.com是否有什么意义?
答:可以随便设置一个你喜欢的即使你不拥有这个域名,这个域名仅仅是用来host匹配不同server{}字段,不然都是443端口 内网机器怎么知道用户请求的哪个server,不清楚的可以了解下http协议 这方面我也不是很懂…
我机器80端口被封禁了为什么还可以将网站部署在80端口?
答:cloudflared可以访问电脑的内网80端口,然后cloudflared将数据包从任意一个未被封禁的高位端口(比如55555)将数据包发送给cloudflare服务器
正常内网穿透是用一台443端口正常的公网IP机器来作为用户与服务端的桥梁,但是cloudflare的 tunnel可以实现让cloudflare服务器作为中转机即:用户>cloudflare服务器>内网电脑的cloudflared>内网站点>cloudflared将类网站点数据通过某个端口将数据返回给cloudflare服务器>用户收到cloudflare的数据
步骤1:在内网部署[链接登录后可见] [链接登录后可见] [链接登录后可见] 三个网站并安装tunnels,tunnels-status显示”healthy”表示安装成功,即cloudflared可与cloudflare服务器正常通信。至此服务端配置完成,接下来在[链接登录后可见]面板配置刚刚添加的tunnels-demo
[链接登录后可见][链接登录后可见]
[链接登录后可见]
步骤2:在”Public Hostname”依次添加这三个隧道,
注:HTTP Setting中的HTTP Host Header一定要填写,除非你这个端口就一个内容/服务
比如我设置的nginx81端口,该端口只有一个页面,你可以不填Host这一项
你设置qbittorrent的8080端口,alist的5244端口等都是可以的
[链接登录后可见]
————————————————
[链接登录后可见]
——————[链接登录后可见]
[链接登录后可见]#### 二、SSH远程
tunnel添加SSH [链接登录后可见]写的很详细,我只是将官方文档演示一下,国内使用不如套中转
官方说客户端必须使用WARP或者cloudflared连接,我无法使用WARP只好下载cloudflared演示了。当然你也可以配置Access通过浏览器访问
步骤:服务端就像之前那样安装cloudflared,然后如下图添加隧道,
客户端(就是你主控端)安装cloudflared或者WARP并启动,我以linux做客户端为例 代码登录后可见
然后填入以下内容
| 代码登录后可见<br/>代码登录后可见<br/> | 代码登录后可见<br/>代码登录后可见<br/> |
| ——————– | —————————————————————————————————— |
| 代码登录后可见<br/>代码登录后可见<br/>代码登录后可见<br/> | 代码登录后可见<br/>代码登录后可见<br/>代码登录后可见<br/> |
| —————————— | ——————————————————————————————————————————– |
[链接登录后可见]
[链接登录后可见]
[链接登录后可见]
三、windowsRDP登录
这个只有windows才有RDP好像,[链接登录后可见]写的很详细,要求和上面SSH几乎差不多,国内不如套中转
客户端执行
代码登录后可见
这个似乎是将RDP服务映射到本机3389端口,我也不是很清楚
然后浏览器会进行验证身份
如何让RDP像SSH一样在网页端远程我还不知道,期待大佬解答!
[链接登录后可见]
[链接登录后可见]