如何用 cloudflare 隐藏自己的服务器 ip

2023-09-15 23:03:30 +08:00
 jlak
搞了个家用小破服务器,绑定了域名又不想暴露 ip 怕被攻击
听说 cloudflare 可以用来隐藏 ip ,我域名已经给 cf 代理虽然 ping 时是 cf 的 ip 但是一些网站比如 https://tool.lu/ip/
输入域名还是能查到原始 ip
请问是怎么回事,需要什么特殊操作吗
3622 次点击
所在节点    问与答
16 条回复
totoro625
2023-09-15 23:09:31 +08:00
DNS 延迟,域名从添加的时候就要点开小云朵
jlak
2023-09-15 23:12:32 +08:00
@totoro625 现在一查 ip 已经变成 cf 的 ip 了,是不是可以放心用了?我暴露了 80 和 443 端口
ruixue
2023-09-15 23:12:37 +08:00
你如果需要 cloudflare 隐藏 ip ,从一开始就不要解析 dns 到真实的 ip 上,有专门做 dns 历史查询的,发邮件也不要直接用服务器发,避免 smtp 泄露真实 ip

进一步的话就是不要把网站的 ssl 证书作为默认 ssl 证书,也就是说传递空 sni 给 443 端口时要返回其他证书,现在也有扫全网 443 端口的 ssl 证书抓里面域名提供反向查询的

更进一步就是用防火墙屏蔽除了 cloudflare 以外的 ip 的访问,避免精确的带 sni 全网扫描的攻击
bigbbhh
2023-09-15 23:17:36 +08:00
建议源站防火墙屏蔽 443 80 端口进入,外加 cloudflare tunnel ,丝滑~
eDeeraiD0thei6Oh
2023-09-15 23:22:54 +08:00
别人想知道你的真实 IP 很简单,发个 DMCA 的邮件给 Cloudflare 你的 IP 就被别人知道了。
jlak
2023-09-15 23:32:37 +08:00
@ruixue 学习到了谢谢,希望没被记录,我域名是买后转 cf 的 ns 直接开代理,一开始直接暴露 ip ,但现在不会了


@bigbbhh 服务器屏蔽 443 和 80 然后通过 cf 某功能把 443/80 转到服务器是某其他端口是吗
ruixue
2023-09-15 23:35:14 +08:00
@eDeeraiD0thei6Oh 并不会,首先 cloudflare 会审查 dmca 投诉里涉及到的链接和证据,并不是随便杜撰一封就 ok ,其次 cloudflare 只会告知投诉者托管服务器的主机商,并转发 dmca 投诉给主机商和用户,要求主机商和用户去处理,并不会直接把服务器的 ip 给投诉者
ruixue
2023-09-15 23:41:04 +08:00
@jlak cloudflare 网站上有列出他家用的全部 ip 段
https://www.cloudflare.com/ips/
防火墙里设置只允许这些 ip 访问 80 和 443 ,其余 ip 直接拒绝就行了

还有一个方法是只用 ipv6 回源,设置一个复杂点的 ipv6 后缀,几乎不可能被扫到
mschultz
2023-09-16 00:00:33 +08:00
@jlak #6 你的服务器上跑什么服务?如果是一般的网站( HTTP/HTTPS ),那么用 Cloudflare ZeroTrust 的 Tunnel (就是 4 楼梯道的 tunnel ),要点如下:

0. 假设你服务器上的一个 Web 程序,比方说 Nginx ,监听服务器的 127.0.0.1:80 端口

1. 在 Cloudflare Zero Trust 的面板 - Access - Tunnels 中设置 Tunnel ,跟着向导和文档来,它会让你在服务器上安装一个 cloudflared 程序( connector ),一般是用 systemd 管理的。安装并认证好了之后,相当于你服务器上就有一个长期运行的 Cloudflare connector 一直主动保持与 Cloudflare 的通信(由于是这个通信是主动出站,不需要你服务器防火墙开放任何入站规则)。

2. 然后,回到 Cloudflare 网页版的 Tunnel 设置页面,设置「 Public Hostname 」,基本上就是设置一个域名到 IP:端口的映射,例如你设置 a.yourdomain.com -> 127.0.0.1:80

那么大致效果就是(下面的用词可能不专业,领会下精神😂):

a. a.yourdomain.com 解析出来是 Cloudflare 的地址
b. 当有人访问 a.yourdomain.com 时,Cloudflare 发现这是一个 Tunnel 里面配置的 Hostname ,于是将请求导向对应的 connector 所在机器的 127.0.0.1:80 ,正好就是你服务器上 Nginx 监听的那个端口

====

以上就实现了你服务器防火墙不开放任何入站端口(自己用于 SSH 啥的除外),但能通过 Cloudflare Tunnel 正常对外开放网页服务。
jlak
2023-09-16 00:07:13 +08:00
@ruixue 谢谢我先设置防火墙白名单先看看,说到 ipv6 这里我突然想到好像买 vps 不用买 ipv4 了,反正 v4 要藏起来,用 cf 依然能让 ipv4 用户访问
jlak
2023-09-16 00:09:59 +08:00
@mschultz 感谢详细的解释,这么一听总算是懂了
真的是个神奇的功能,应该算是套了中间代理层吧
会不会影响性能
ruixue
2023-09-16 00:25:48 +08:00
@jlak 你的网络如果能用 ipv6 ,那么以你目前的使用场景 vps 确实可以不要 ipv4 ,至于没有 ipv4 导致 vps 无法访问部分网站的问题也可以用 cloudflare 的另一项服务 warp 解决

其他人说的 tunnel 是在对安全有极高需求的情况下考虑的,可以做到不开放任何端口,但也等于放弃了公网 ip 本身的优势,毕竟 tunnel 也相当于是一种内网穿透,服务器主动维持一个到 cloudflare 的连接,无需公网 ip 即可对外提供服务
jlak
2023-09-16 03:11:30 +08:00
@ruixue 这解决方案真好~又可以省几块钱
家里是 v4/v6 双栈所以没什么压力
JensenQian
2023-09-16 04:01:23 +08:00
cf tunnel 内网穿透呗,我家里没公网就这么玩
Tufutogo
2023-09-16 20:17:43 +08:00
cf tunnel 到内地机器,基本是绕美一圈回来。不在乎延迟的服务倒是没什么关系。
hanguofu
2023-09-17 00:50:17 +08:00
这个方法挺好 😊

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/974286

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX