本文介绍如何在 OpenWrt 环境下使用 Caddy 设置反向代理,实现从仅具有公网 IPv6 地址的家庭网络中访问设备,特别强调通过 Cloudflare CDN 实现 IPv4 到 IPv6 的转换,以及通过单端口复用访问多个服务。
目标
- 通过 Cloudflare CDN 实现 IPv4 到 IPv6 的转换
- 使用单端口复用来访问多个内网服务
- 环境:OpenWrt 操作系统,具有公网 IPv6 地址
- 工具:Caddy 服务器,用于搭建反向代理
网络拓扑
- 光猫:IP 地址
192.168.1.1
,桥接模式 - 主路由器:IP 地址
192.168.50.1
- NAS(OpenWrt系统):IP 地址
192.168.50.2
,运行 Caddy 和其他服务
步骤 1:配置域名解析
- DDNS 设置:在 NAS 上设置 DDNS,确保域名可以解析到您的公网 IPv6 地址。
- Cloudflare 配置:
- 使用 Cloudflare 管理域名解析。
- 重点:为域名启用 CDN 加速,以实现 IPv4 到 IPv6 的转换。
步骤 2:安装和配置 Caddy
- 下载并部署 Caddy:从 Caddy 官网 下载适用于 OpenWrt 的 Caddy 二进制文件,并放置在
/usr/bin/
目录下。 - 创建配置文件:在
/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.com
和another-domain.com
为您自己的域名。重点:
auto_https off
禁用了自动 HTTPS,因为目的是通过 HTTP 访问。- 反向代理通过单个端口(例如 8880)访问多个内网服务。
步骤 3:设置 Caddy 自启动
- 创建 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 }
- 使脚本可执行:
chmod +x /etc/init.d/caddy
。 - 启动和启用服务:
/etc/init.d/caddy start
和/etc/init.d/caddy enable
。
结论
遵循以上步骤,您可以在 OpenWrt 上成功配置 Caddy 以作为反向代理服务器,实现通过 Cloudflare CDN 的 IPv4 到 IPv6 转换,从而从 IPv4 外网访问家庭网络中的设备。通过单端口复用的方式,您可以访问多个内网服务,简化了网络配置。
编辑:ChatGPT
没看明白,请教一下,到底是在openwrt中运行caddy还是在nas里面运行
文中的nas指的是OpenWrt
好的,在您的文章中有
“`
光猫:IP 地址 192.168.1.1,桥接模式
主路由器:IP 地址 192.168.50.1,运行 OpenWrt
NAS:IP 地址 192.168.50.2,运行 Caddy 和其他服务
“`
的说明,因此建议您改善一下内容。
非常感谢您的分享
好的 感谢指出问题 我去修改下
博主你好, caddy可以配置类似*.local或者*.lan这种域名进行反向代理吗?
这个得试试啦 按理会支持的吧 毕竟都是域名