Skip to content

Latest commit

 

History

History
143 lines (103 loc) · 5.4 KB

README.zh_CN.md

File metadata and controls

143 lines (103 loc) · 5.4 KB

Warp Tproxy For Docker

中文文档 | English README

一个容器化的WARP客户端代理。(ubuntu:22.04 + warp-svc),用于在容器项目和k8s中使用零信任和私有网络, 与docker-transparent-proxy项目配合,实现给每个容器分配一个公网IP地址。

适用于freewarp+zero Trust网络。

功能

它可以在 Linux 平台上使用dockerpodmank8s一起运行。

环境变量

  • WARP_ORG_ID - WARP MDM 组织ID。(例如paperdragon
  • WARP_AUTH_CLIENT_ID - WARP MDM 客户端ID。(例如以 .access 结尾的[a-z0-9]{32}
  • WARP_AUTH_CLIENT_SECRET - WARP MDM 客户端密钥。(例如[a-z0-9]{64}
  • WARP_UNIQUE_CLIENT_ID - WARP MDM 唯一客户端ID。
  • WARP_LICENSE - WARP MDM 许可证密钥。

自动切换Registration

  • 如果未设置IDLICENSE,则free模式是默认模式。它将注册新帐户(免费网络)。
  • 当设置了WARP_ORG_ID WARP_AUTH_CLIENT_ID WARP_AUTH_CLIENT_SECRET时,将自动使用mdm模式(零信任网络)。
  • 当设置了WARP_LICENSE时,将自动使用warp+模式(warp+网络)。

基于某种原因,强烈建议您使用具有WARP_ORG_ID WARP_AUTH_CLIENT_ID WARP_AUTH_CLIENT_SECRET设置的mdm模式。

并设置一个来自Cloudflare Zero Trust仪表板的代理策略,或者使用WARP_LICENSE设置warp+模式。

如果您需要在mdm模式下添加其他组织,或者编写更多自定义设置,您可以修改此示例文件并添加一个<dict>部分。

Cloudflare MDM 文档 在此。Cloudflare MDM 参数文档 在此

但为了不破坏entrypoint.sh流程,请不要更改此部分:

xml
<array>
  # 不要修改此部分
  <dict>
    <key>organization</key>
    <string>ORGANIZATION</string>
    <key>display_name</key>
    <string>ORGANIZATION</string>
    <key>auth_client_id</key>
    <string>AUTH_CLIENT_ID</string>
    <key>auth_client_secret</key>
    <string>AUTH_CLIENT_SECRET</string>
    <key>unique_client_id</key>
    <string>UNIQUE_CLIENT_ID</string>
    <key>onboarding</key>
    <false />
  </dict>
  # 在这里添加您的自定义部分
</array>

在仪表板中设置MDM

  1. 进入Cloudflare Zero Trust仪表板。
  2. 在字母范围内创建您的组织团队:[a-zA-Z0-9-],并记住您的ORGANIZATION(将org名称设置为./secrets)。
  3. 创建一个Access -> Service Authentication -> Service Token,并从仪表板获取AUTH_CLIENT_IDAUTH_CLIENT_SECRET(设置为./secrets)。
  4. 转到Settings -> Warp Client -> Device settings并添加一个新策略(例如:命名为“mdmPolicy”)。
  5. 进入策略配置页面,在表达式中添加一个规则,让email - is - non_identity@[your_org_name].cloudflareaccess.com。 (或者按设备UUID过滤)
  6. 向下滚动,找到Service mode,设置为Gateway with WARP模式。 为什么必须在策略中设置Gateway with WARP模式?
  7. 根据需要修改其他设置。
  8. 然后保存。

本地构建镜像

docker build -t paperdragon/warp-tproxy .

示例

在 ubuntu 23.04 上使用 docker 进行测试运行:

# 或者从docker hub下载
# docker pull jockerdragon/warp-tproxy

# 检查镜像
root@user-VirtualBox:/home/user# docker images
REPOSITORY                 TAG       IMAGE ID       CREATED        SIZE
jockerdragon/warp-tproxy   latest    1cce82cba813   10 hours ago   570MB


# 仅供测试使用环境变量,您可以在./secrets中设置它
export WARP_ORG_ID=paperdragon
export WARP_AUTH_CLIENT_ID=xxxxxxxxxxxxxxxxxxxxxxxxxx.access
export WARP_AUTH_CLIENT_SECRET=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

docker run -d --name warp \
  -e WARP_ORG_ID=WARP_ORG_ID \
  -e WARP_AUTH_CLIENT_ID=WARP_AUTH_CLIENT_ID \
  -e WARP_AUTH_CLIENT_SECRET=WARP_AUTH_CLIENT_SECRET \
  --cap-add NET_ADMIN \
  -v /dev/net/tun:/dev/net/tun \
  jockerdragon/warp-tproxy
  
# 在 warp 容器中进行测试
docker exec -it warp curl http://cloudflare.com/cdn-cgi/trace

# 在容器外部的 gost 进行测试
curl http://ifconfig.icu

您可以看到类似以下的输出:

[+] Starting dbus...
[+] Bypassing warp's TOS...
[+] Starting warp-svc...

技巧

添加环境变量到命令行

  • DEBUG - 将 DEBUG=True 设置为 env 以显示更多细节。

致谢

  • 本项目是修改自Warpod项目,该项目实现了使用一个Warp容器,用于将HTTP代理暴露给外部使用。

许可证

MIT