V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
jlak
V2EX  ›  问与答

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

  •  
  •   jlak · 230 天前 via iPhone · 2595 次点击
    这是一个创建于 230 天前的主题,其中的信息可能已经有所发展或是发生改变。
    搞了个家用小破服务器,绑定了域名又不想暴露 ip 怕被攻击
    听说 cloudflare 可以用来隐藏 ip ,我域名已经给 cf 代理虽然 ping 时是 cf 的 ip 但是一些网站比如 https://tool.lu/ip/
    输入域名还是能查到原始 ip
    请问是怎么回事,需要什么特殊操作吗
    16 条回复    2023-09-17 00:50:17 +08:00
    totoro625
        1
    totoro625  
       230 天前   ❤️ 1
    DNS 延迟,域名从添加的时候就要点开小云朵
    jlak
        2
    jlak  
    OP
       230 天前 via iPhone
    @totoro625 现在一查 ip 已经变成 cf 的 ip 了,是不是可以放心用了?我暴露了 80 和 443 端口
    ruixue
        3
    ruixue  
       230 天前   ❤️ 5
    你如果需要 cloudflare 隐藏 ip ,从一开始就不要解析 dns 到真实的 ip 上,有专门做 dns 历史查询的,发邮件也不要直接用服务器发,避免 smtp 泄露真实 ip

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

    更进一步就是用防火墙屏蔽除了 cloudflare 以外的 ip 的访问,避免精确的带 sni 全网扫描的攻击
    bigbbhh
        4
    bigbbhh  
       230 天前   ❤️ 1
    建议源站防火墙屏蔽 443 80 端口进入,外加 cloudflare tunnel ,丝滑~
    eDeeraiD0thei6Oh
        5
    eDeeraiD0thei6Oh  
       230 天前
    别人想知道你的真实 IP 很简单,发个 DMCA 的邮件给 Cloudflare 你的 IP 就被别人知道了。
    jlak
        6
    jlak  
    OP
       230 天前 via iPhone
    @ruixue 学习到了谢谢,希望没被记录,我域名是买后转 cf 的 ns 直接开代理,一开始直接暴露 ip ,但现在不会了


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

    还有一个方法是只用 ipv6 回源,设置一个复杂点的 ipv6 后缀,几乎不可能被扫到
    mschultz
        9
    mschultz  
       230 天前   ❤️ 3
    @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
        10
    jlak  
    OP
       230 天前 via iPhone
    @ruixue 谢谢我先设置防火墙白名单先看看,说到 ipv6 这里我突然想到好像买 vps 不用买 ipv4 了,反正 v4 要藏起来,用 cf 依然能让 ipv4 用户访问
    jlak
        11
    jlak  
    OP
       230 天前 via iPhone
    @mschultz 感谢详细的解释,这么一听总算是懂了
    真的是个神奇的功能,应该算是套了中间代理层吧
    会不会影响性能
    ruixue
        12
    ruixue  
       230 天前   ❤️ 1
    @jlak 你的网络如果能用 ipv6 ,那么以你目前的使用场景 vps 确实可以不要 ipv4 ,至于没有 ipv4 导致 vps 无法访问部分网站的问题也可以用 cloudflare 的另一项服务 warp 解决

    其他人说的 tunnel 是在对安全有极高需求的情况下考虑的,可以做到不开放任何端口,但也等于放弃了公网 ip 本身的优势,毕竟 tunnel 也相当于是一种内网穿透,服务器主动维持一个到 cloudflare 的连接,无需公网 ip 即可对外提供服务
    jlak
        13
    jlak  
    OP
       230 天前
    @ruixue 这解决方案真好~又可以省几块钱
    家里是 v4/v6 双栈所以没什么压力
    JensenQian
        14
    JensenQian  
       230 天前 via Android
    cf tunnel 内网穿透呗,我家里没公网就这么玩
    Tufutogo
        15
    Tufutogo  
       229 天前 via Android
    cf tunnel 到内地机器,基本是绕美一圈回来。不在乎延迟的服务倒是没什么关系。
    hanguofu
        16
    hanguofu  
       229 天前 via Android
    这个方法挺好 😊
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2189 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 05:36 · PVG 13:36 · LAX 22:36 · JFK 01:36
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.