Logo
“使用Cloudflare Warp隐藏Misskey的IP地址”的封面

使用Cloudflare Warp隐藏Misskey的IP地址

Avatar

Skyone

科技爱好者

我一直使用 Cloudflare tunnel 来隐藏 Misskey 的 IP 地址,但是昨天晚上忽然想到,由于 misskey 是基于 ActivityPub 协议的,在服务器与其他服务器之间的通信中,IP 地址是公开的,如果攻击者构造了一个恶意的 ActivityPub 实现,马上就能拿到 Misskey 源站的 IP 地址。

想要避免这种情况,只能为 Misskey 的源站添加代理,而 Cloudflare Warp 就是一个不错的选择。本文根据大佬们的经验完成了 Misskey 的 Cloudflare Warp 配置。

Cloudflare Warp 简介

Cloudflare Warp 是 Cloudflare 提供的一个 VPN 服务,旨在提供更快、更安全的互联网连接。它通过 Cloudflare 的全球网络来加密和优化用户的网络流量,从而提高访问速度并保护用户隐私1

Warp 是限速的,为了获取不限量的 Warp+(速度更快),我们需要绑定 Cloudflare Zero Trust 的账号2

准备工作

如果你决定不使用 Warp+,可以跳过这一步。

注册 Cloudflare 账号,如果你还没有 Cloudflare 账号,注册一个。

在 Cloudflare Zero Trust 中创建一个团队,登录 Cloudflare 后,访问 Cloudflare Zero Trust 并创建一个新团队。

在 Cloudflare Zero Trust 配置 Warp 为 Proxy 模式

找到 设置 -> WARP 客户端 -> 配置文件设置,如图所示

Cloudflare Zero Trust 配置 Warp

将服务模式改为“代理模式”,然后点击“保存更改”。

Cloudflare Zero Trust 配置 Warp

在 网络 -> Tunnels 中,点击“添加隧道”,创建一个 Warp 隧道,拿到 Warp 令牌(warp-cli connector new 后面的那一串字符串)。

构建 Warp 容器

确保你的服务器上安装了 Docker 和 Docker Compose。

下面是我的 docker-compose.yml 文件内容3

services:
  cloudlare-warp:
    container_name: cloudflare-warp
    image: luotianyi/cloudflare-warp:latest
    restart: unless-stopped
    build:
      context: build
    volumes:
      - "./data:/app"
    environment:
      WARP_TOKEN: ChangeMe
    networks:
      - proxy

networks:
  proxy:
    external: true

WARP_TOKEN 替换为你在 Cloudflare Zero Trust 中获取的 Warp 令牌。

下面的 Dockerfile 放到 build 目录下:

FROM debian:bookworm-slim

WORKDIR /app
RUN apt-get update && \
    apt-get install -y --no-install-recommends \
        ca-certificates \
        curl \
        gnupg \
        lsb-release && \
    rm -rf /var/lib/apt/lists/*
RUN curl https://pkg.cloudflareclient.com/pubkey.gpg | gpg --yes --dearmor --output /usr/share/keyrings/cloudflare-warp-archive-keyring.gpg && \
    echo "deb [arch=amd64 signed-by=/usr/share/keyrings/cloudflare-warp-archive-keyring.gpg] https://pkg.cloudflareclient.com/ $(lsb_release -cs) main" | tee /etc/apt/sources.list.d/cloudflare-client.list && \
    apt-get update && \
    apt-get install cloudflare-warp -y --no-install-recommends && \
    rm -rf /var/lib/apt/lists/* && \
    curl -L https://github.com/go-gost/gost/releases/download/v3.2.3/gost_3.2.3_linux_amd64.tar.gz -o gost.tar.gz && \
    tar -xzf gost.tar.gz -C /usr/local/bin/ && \
    rm gost.tar.gz /usr/local/bin/LICENSE /usr/local/bin/README.md /usr/local/bin/README_en.md
COPY entrypoint.sh /entrypoint.sh
RUN chmod +x /entrypoint.sh

CMD ["/entrypoint.sh"]
VOLUME ["/app"]
EXPOSE 1080/tcp

下面是 entrypoint.sh 4,同样放在 build 目录下:

#!/usr/bin/env sh

nohup /usr/bin/warp-svc > /app/warp.log &

sleep 3

if [ -n "$WARP_TOKEN" ]; then
    echo "Using WARP token from environment variable"
    warp-cli --accept-tos connector new "$WARP_TOKEN"
    warp-cli --accept-tos connect
else
    echo "No WARP token provided, using default connector"
    warp-cli --accept-tos registration new
    warp-cli --accept-tos mode proxy
    warp-cli --accept-tos connect
fi

gost -L=http://:1080 -F=socks5://127.0.0.1:40000

解释一下这个容器的功能,它会后台启动 Cloudflare Warp 服务,然后使用 warp-cli 命令连接到 Cloudflare 的 Warp 网络。由于 Warp 只支持 socks5 协议,所以我们使用 gost 将其转换为 HTTP 代理,监听在 1080 端口。

实际上这个容器并不完善,因为使用了 nohup 命令来后台运行 warp-svc,在关闭容器时必然要等到超时强制 kill。不是很优雅的做法,但凑合用吧,不想折腾 s6-overlay 了。

启动容器 docker-compose up -d,然后让我们测试一下:

curl -x http://<warp-container-ip>:1080 https://ipinfo.io

应该会告诉你你的 IP 属于 Cloudflare Warp。

配置 Misskey 使用 Warp 代理

这一步非常简单,只需要在 Misskey 的配置文件中添加以下内容:

proxy: http://cloudflare-warp:1080

如果你修改了容器名,这里自行同步修改。

然后重启 Misskey 容器即可 docker restart misskey。打开浏览器,看看你的 Misskey 能不能获取其他服务器的信息吧。

Footnotes

  1. 使用 Cloudflare WARP 保护 Sharkey / Misskey 源站

  2. Linux vps上 使用 Cloudflare ZeroTrust WARP

  3. GitHub (TunMax/canal)

  4. GitHub (cmj2002/warp-docker)

使用Cloudflare Warp隐藏Misskey的IP地址

https://blog.skyone.dev/2025/misskey-cloudflare-warp/

本文作者

Skyone

发布于

2025年8月10日

许可协议

CC BY-NC-SA 4.0

转载或引用本文时请遵守许可协议,注明出处、不得用于商业用途!


隐私政策

Copyright © Skyone 2025