https://p3terx.com/archives/use-cloudflare-warp-to-add-extra-ipv4-or-ipv6-network-support-to-vps-servers-for-free.html
标签归档:cloudflare
识别与 Cloudflare 的代理兼容的网络端口
概述
Cloudflare 默认代理发往下列 HTTP/HTTPS 端口的流量。
Cloudflare 支持的 HTTP 端口:
- 80
- 8080
- 8880
- 2052
- 2082
- 2086
- 2095
Cloudflare 支持的 HTTPS 端口:
- 443
- 2053
- 2083
- 2087
- 2096
- 8443
如果您的域的流量要发送到上面列出的端口以外的其他端口,则可以:
- 通过您 Cloudflare DNS 页面添加子域为灰色云记录,或者
- 开启 Cloudflare Spectrum。
通过 WAF 规则 ID 100015 针对 Pro、Business 和 Enterprise 域阻止除 80 和 443 以外的其他端口上的流量:”Block requests to all ports except 80 and 443″.
只有端口 80 和 443 可兼容以下服务:
- 对于启用了中国网络的域名的中国境内数据中心 HTTP/HTTPS 流量,
- Cloudflare Apps 代理,以及
- Cloudflare 缓存。
Cloudflare Access 不支持 URL 中的端口号。 系统会从通过 Cloudflare Access 保护的 URL 请求中剥离端口号。
相关资源
利用CloudFlare设置Dynamic DNS(DDNS)
如果买了动态 VPS,IP 会经常改变。这时,就可以设置 DDNS 来获取动态 IP。比如,设置后,我可以用 ddns.zhaozhu.net 获取自己 VPS 的最新 IP。
获取 API
以 zhaozhuji.net 域名为例,在 CloudFlare 按提示添加域名 zhaozhuji.net 和对应的 A 记录 ddns.zhaozhuji.net,TTL 可设为 2 分钟。注意,DDNS 使用的域名不要开启 CloudFlare 的 CDN。

前往https://www.cloudflare.com/a/profile获取 API,把 API 一长串字符复制保存。

获取脚本
下载脚本 https://gist.github.com/larrybolt/6295160/raw/c634c48c001a411240fc78147949a6a32e1de370/cf-ddns.sh 到/usr/local/bin 目录:
curl https://gist.githubusercontent.com/larrybolt/6295160/raw > /usr/local/bin/cf-ddns.sh && chmod +x /usr/local/bin/cf-ddns.sh
配置
打开脚本进行配置:
vi /usr/local/bin/cf-ddns.sh
需要修改以下内容:
# 输入前面获取的 API
CFKEY=nvake8vn8ak8en8fjka88bnfe
# 输入 Zone name,如 zhaozhuji.net
CFZONE=zhaozhuji.net
# 输入域名的 id,如果不知道可先不填,运行一次脚本获取对应的 id 后再填入
CFID=
# 输入 CloudFlare 的账号邮箱,如 user@example.com
CFUSER=user@example.com
# 设置需要更新的 Hostname,如 ddns.zhaozhuji.net
CFHOST=ddns.zhaozhuji.net
# 设置 Cloudflare TTL,单位是秒,可填 120 到 86400 间的数值
CFTTL=120
输入bash /usr/local/bin/cf-ddns.sh运行脚本,会显示:
bash cf-ddns.sh
No file, need IP
Missing DNS record ID
fetching from Cloudflare...
=> Incorrect zone, or zone doesn't contain the A-record light.acg.al!
listing all records for zone acg.al:
ID RECORD TYPE
133333332 zhaozhuji.net "A"
133333333 ddns.zhaozhuji.net "A"
133333334 www.zhaozhuji.net "A"
这时,把 DDNS 使用的域名对应的 ID 填入刚才提到的 CFID 中,例如这里是CFID=133333333。保存退出后,再运行一遍 cf-ddns.sh,如果显示如下内容,则代表配置成功:
bash cf-ddns.sh
No file, need IP
Updating DNS to 9.9.9.9
Updated succesfuly!
crontab 定时运行
脚本配置成功后,需要让它定时运行,这里设置每 10 分钟运行一次 cf-ddns.sh 脚本。输入crontab -e,然后会有个 vi 编辑界面,在里面添加一行:
*/10 * * * * /usr/local/bin/cf-ddns.sh >/dev/null 2>&1
crontab 的用法建议参考http://man.linuxde.net/crontab,涵盖了 crontab 服务状态的启动、重启、查看、简单配置等。另外也可以看看http://linuxtools-rst.readthedocs.io/zh_CN/latest/tool/crontab.html和http://www.runoob.com/linux/linux-comm-crontab.html。
参考
cloudflare-update-record.sh同样可设置 DDNS,配置也比较简单。
本文参考了PumpCloud 的教程。
备注
有人提及换了域名再操作提示WAN IP Unchanged, to update anyway use flag -f true,这是因为脚本是检测到 IP 发生变化后,才会更新 CloudFlare 的 DNS。可以先手动在 CloudFlare 改 dns,下一次换 IP 时,脚本就会自动修改更新 CF 的 DNS(前提是设了 crontab 定时运行)。
如果有问题,欢迎留言。