在 OpenWrt 上使用 Caddy 搭建反向代理实现 IPv4 到 IPv6 的访问

本文介绍如何在 OpenWrt 环境下使用 Caddy 设置反向代理,实现从仅具有公网 IPv6 地址的家庭网络中访问设备,特别强调通过 Cloudflare CDN 实现 IPv4 到 IPv6 的转换,以及通过单端口复用访问多个服务。

目标

  • 通过 Cloudflare CDN 实现 IPv4 到 IPv6 的转换
  • 使用单端口复用来访问多个内网服务
  • 环境:OpenWrt 操作系统,具有公网 IPv6 地址
  • 工具:Caddy 服务器,用于搭建反向代理

网络拓扑

  • 光猫:IP 地址 192.168.1.1,桥接模式
  • 主路由器:IP 地址 192.168.50.1,运行 OpenWrt
  • NAS:IP 地址 192.168.50.2,运行 Caddy 和其他服务

步骤 1:配置域名解析

  1. DDNS 设置:在 NAS 上设置 DDNS,确保域名可以解析到您的公网 IPv6 地址。
  2. Cloudflare 配置:
    • 使用 Cloudflare 管理域名解析。
    • 重点:为域名启用 CDN 加速,以实现 IPv4 到 IPv6 的转换。

步骤 2:安装和配置 Caddy

  1. 下载并部署 Caddy:从 Caddy 官网 下载适用于 OpenWrt 的 Caddy 二进制文件,并放置在 /usr/bin/ 目录下。
  2. 创建配置文件:在 /etc/caddy/Caddyfile 中创建配置文件。示例配置:
    {
        auto_https off
    }
    
    http://your-domain.com:8880 {
        reverse_proxy http://192.168.50.2:8080
    }
    
    http://another-domain.com:8880 {
        reverse_proxy http://192.168.50.2:5244
    }
    
    替换 your-domain.comanother-domain.com 为您自己的域名。

    重点:

    • auto_https off 禁用了自动 HTTPS,因为目的是通过 HTTP 访问。
    • 反向代理通过单个端口(例如 8880)访问多个内网服务。

步骤 3:设置 Caddy 自启动

  1. 创建 Procd 启动脚本:在 /etc/init.d/ 下创建名为 caddy 的启动脚本,内容如下:
    #!/bin/sh /etc/rc.common
    START=99
    USE_PROCD=1
    
    start_service() {
        procd_open_instance
        procd_set_param command /usr/bin/caddy run --config /etc/caddy/Caddyfile
        procd_set_param stdout 1
        procd_set_param stderr 1
        procd_close_instance
    }
    
  2. 使脚本可执行:chmod +x /etc/init.d/caddy
  3. 启动和启用服务:/etc/init.d/caddy start/etc/init.d/caddy enable

结论

遵循以上步骤,您可以在 OpenWrt 上成功配置 Caddy 以作为反向代理服务器,实现通过 Cloudflare CDN 的 IPv4 到 IPv6 转换,从而从 IPv4 外网访问家庭网络中的设备。通过单端口复用的方式,您可以访问多个内网服务,简化了网络配置。

编辑:ChatGPT

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注