赛博堡垒的高速直达高铁:基于 OPNsense Caddy 的 IPv6 直连穿透
This content is not available in your language yet.
🚄 为什么要造“直达高铁”?CF 隧道的妥协与破局
Section titled “🚄 为什么要造“直达高铁”?CF 隧道的妥协与破局”在上一篇《隐形跨海大桥:Cloudflare Tunnel 内网穿透实战》中,我们成功利用“隧道兵”实现了无视公网 IP 的优雅穿透。但随着赛博堡垒的不断扩建,我们撞上了一堵无形的墙:Cloudflare 免费版 SSL 证书的“四级域名封锁”。
为了白嫖 CF 的安全盾牌,我们曾不得不做出妥协,放弃了原本严谨的 *.k3s.besthomelab.tech 命名空间(四级域名),降维使用三级域名。这对于追求极致规范的架构师来说,犹如喉咙里卡了一根刺。
那么,有没有一种方法,既能一毛钱不花,又能完美保住我们的硬核命名规范?
答案就是:退掉 CDN 的隐身披风,建造一条基于 IPv6 + OPNsense Caddy 的“直达高铁”!
相比于绕道边缘节点的 CF 隧道,这条赛博直达高铁拥有降维打击般的优势:
- 🎫 绕过层级封锁 (Let’s Encrypt 破局):Cloudflare 免费版拒绝签发的四级域名证书,Let’s Encrypt 给!只要通过 DNS-01 挑战证明域名所有权,Caddy 就能全自动为你申请并续期
*.k3s.besthomelab.tech的泛域名证书,完全无视层级歧视。 - ⚡ 物理级零延迟 (Zero Latency):流量不再需要去外部 CDN 节点绕一圈进行解密再加密。数据包顺着 IPv6 公网,从你的手机直达家里的 OPNsense 路由器,速度彻底跑满你家庭宽带的物理上限!
- 🚪 全端口自由 (Full Port Support):不再受限于 CF Tunnel 仅支持的少数几个 Web 端口。高铁轨道一旦铺设,任何协议、任何端口都可以通过 Caddy 灵活调度。
- 🧩 捍卫架构规范 (Naming Convention):完美复活
seerr.k3s.besthomelab.tech这种层级分明的内部域名体系。你集群内部的 Traefik 路由规则一字不改,内网与外网再次达到大一统的完美衔接!
如果你家已经具备了 IPv6 公网条件,且你不甘心被云厂商的免费规则所束缚,那么请穿上防护服,我们现在就开始铺设这条属于你自己的极速轨道!
🎬 施工演示录像 (Video Walk-through)
Section titled “🎬 施工演示录像 (Video Walk-through)”🌐 第一步:唤醒 OPNsense 的 IPv6 引擎与城门测试
Section titled “🌐 第一步:唤醒 OPNsense 的 IPv6 引擎与城门测试”要建造这条直连高铁,我们的赛博堡垒必须先具备物理级别的“公网车票”。绝大多数宽带运营商(电信/联通/移动)如今都已经原生下发了 IPv6。我们需要让 OPNsense 主动去获取它,并精准破开防火墙验证这条路是否真的通畅。
1. 唤醒 IPv6 引擎
Section titled “1. 唤醒 IPv6 引擎”- 登录 OPNsense 控制台,导航至 Interfaces (接口) -> [WAN]。
- 找到 IPv6 Configuration Type (IPv6 配置类型),将其从
None更改为DHCPv6(部分地区运营商可能需要选择SLAAC)。 - 勾选下方的 Request only an IPv6 prefix (仅请求 IPv6 前缀)(视你家光猫桥接/路由模式而定,通常桥接模式下取消勾选以获取完整地址)。
- 保存并应用更改 (Apply Changes)。
👉 工程师核验点:前往 Interfaces -> Overview (概况) 查看 WAN 口状态。如果你看到了一串以 240、2408、2409 等开头的长 IP 地址(绝不能是以 fe80: 开头的本地链路地址),恭喜你,拿到了公网 IPv6 车票!
2. 破开赛博城墙 (配置防火墙放行规则)
Section titled “2. 破开赛博城墙 (配置防火墙放行规则)”拿到 IP 还不算完,OPNsense 默认会像铁桶一样拦截所有外部探测和访问。为了验证外网连通性,并为后续的 Caddy 网关铺路,我们需要在城墙上精准地开出三条通道。
导航至 Firewall (防火墙) -> Rules (规则) -> WAN,点击右上角的 + 依次添加以下三条新规则:
通道 A:连通性测速缝隙 (ICMPv6)
- Action (操作):
Pass(放行) - TCP/IP Version:
IPv6 - Protocol (协议):
ICMPv6 - ICMP type:
Echo Request(只放行 Ping 请求,确保安全) - Destination (目标):
This Firewall(这台防火墙自身) - Description:
Allow IPv6 Ping from WAN
通道 B:HTTPS 主大门 (443 端口,开启 HTTP/3 极速模式)
- Action (操作):
Pass(放行) - TCP/IP Version:
IPv6 - Protocol (协议):
TCP/UDP(🚨 必须包含 UDP,这是开启 QUIC/HTTP3 下一代协议的关键!) - Source (源):
any(允许外网任意访问) - Destination (目标):
This Firewall(Caddy 运行的所在地) - Destination port range (目标端口范围):
HTTPStoHTTPS - Description:
Allow IPv6 HTTPS/QUIC to Caddy
通道 C:HTTP 跳转偏门 (80 端口)
- Action (操作):
Pass(放行) - TCP/IP Version:
IPv6 - Protocol (协议):
TCP(80 端口只需要 TCP 即可) - Source (源):
any - Destination (目标):
This Firewall - Destination port range (目标端口范围):
HTTPtoHTTP - 💡 首席架构师笔记:放行 80 端口是为了让 Caddy 极其优雅地处理用户输入
http://时的自动跳转 (301 Redirect to HTTPS)。
全部添加完毕后,点击页面右上角的 Apply Changes (应用更改),让城门正式敞开!
🚨 赛博安全红线警告: 仔细检查你的规则!目标(Destination)必须是
This Firewall。绝对不要选成any或者WAN net,否则你就会把整个家庭局域网的 IPv6 设备毫无遮掩地全部暴露给公网黑客!
3. 外网火力侦察 (连通性验证)
Section titled “3. 外网火力侦察 (连通性验证)”城门已开,我们需要站在赛博堡垒之外,向刚才获取的 IPv6 地址开一枪,看看底盘是否彻底打通。你有两种方式可以验证:
-
🕵️ 极客验证法 (使用带 IPv6 的外部 VPS): SSH 登录到你云端的一台 VPS 服务器,直接在终端执行:
Terminal window ping6 2408:xxxx:xxxx:xxxx:xxxx:xxxx # 替换为你 OPNsense WAN 口的真实 IPv6 地址如果终端稳定输出
64 bytes from ... time=xx ms,说明外网直连完全打通! -
📱 游侠验证法 (使用手机 5G 流量): 如果没有 VPS,你可以关闭手机的 Wi-Fi,只使用 5G 蜂窝网络。在手机浏览器中打开在线 Ping 工具网站(如 itdog或者keycdn,输入你的路由器 IPv6 地址发起测试。如果全绿通过,说明运营商没有在中间拦截!
🧭 第二步:架设自动寻路系统 (DDNS 与云端解析)
Section titled “🧭 第二步:架设自动寻路系统 (DDNS 与云端解析)”由于家庭宽带的 IPv6 地址通常会变动,我们需要一个“导航员”来实时向 Cloudflare 汇报最新的车轨位置。我们将使用 OPNsense 官方的 os-ddclient 插件。
1. 前置准备:获取云端 API 令牌 (Token)
Section titled “1. 前置准备:获取云端 API 令牌 (Token)”- 登录 Cloudflare 控制台,点击右上角头像,依次进入 My Profile (我的个人资料) -> API Tokens (API 令牌)。
- 点击 Create Token,选择 Create Custom Token。
- 权限配置:
- Permissions (权限):选择
Zone-DNS-Edit。 - Zone Resources (区域资源):选择
Include-Specific zone-你的主域名。
- Permissions (权限):选择
- 检查无误后创建令牌。
- 🚨 高危警告:立刻复制生成的令牌秘钥,妥善保存到密码管理器中!
2. 云端打底:创建泛域名占位符 (防报错必备)
Section titled “2. 云端打底:创建泛域名占位符 (防报错必备)”💡 首席架构师防坑指南: OPNsense 的 DDNS 插件在处理带
*号的泛域名时,只会“更新”已有记录,不会“凭空创建”。如果云端没有这条记录,日志里会疯狂报错error locating hostname。因此,我们必须先手动打个空壳底座。
- 去 Cloudflare 控制台:进入你的主域名(如
besthomelab.tech)的 DNS 设置页面。 - 手动添加一条记录:
- Type (类型):
AAAA - Name (名称):
*.k3s - IPv6 address: 随便填一个合法的本地 IPv6,比如
::1(这就是个占位符,稍后会被 DDNS 自动覆盖)。 - Proxy status: 🚨 点灰小云朵 (DNS Only)!(必须变灰,让流量直连 IPv6,不受 CF 代理限制)。
- Type (类型):
- 保存记录。
3. 安装与全局配置 DDNS 插件
Section titled “3. 安装与全局配置 DDNS 插件”前往 OPNsense 的 System ‣ Firmware ‣ Plugins 安装 os-ddclient。
导航至 Services ‣ Dynamic DNS ‣ Settings:
- Enable: 勾选
- Allow IPv6: 勾选 (🚨 极其重要)
- Backend: 强烈建议选择
native
4. 配置 Cloudflare 动态解析账号
Section titled “4. 配置 Cloudflare 动态解析账号”在服务: 动态DNS: 设置 Accounts (账户) 选项卡点击 + 号:
- Service:
Cloudflare - Username: 填入小写的
token - Password: 填入刚申请的 API Token
- Zone: 你的主域名(如
besthomelab.tech) - Hostname(s): 你的目标泛域名(如
*.k3s.besthomelab.tech) - Check ip method:
Interface - Interface to monitor:
WAN保存并 Apply。
4. 🚨 致命操作:褪去云端隐身披风 (点灰小云朵)
Section titled “4. 🚨 致命操作:褪去云端隐身披风 (点灰小云朵)”- 回到 Cloudflare 控制台,进入域名 DNS 记录页面。
- 找到 DDNS 刚刚创建的那条
*.k3s的 AAAA 记录。 - 检查 Proxy status (代理状态):确保橘色小云朵是灰色的 “DNS Only”!
首席架构师笔记:点灰之后,Cloudflare 只做 DNS 解析,流量不再受 CF 免费证书策略审查,直接顺着 IPv6 冲向 OPNsense。
🛠️ 第三步:Caddy 引擎安装与“赛博让位”
Section titled “🛠️ 第三步:Caddy 引擎安装与“赛博让位””OPNsense 的管理面板默认占用 443 端口,而 Caddy 必须接管 80 和 443 才能成为唯一的“赛博海关”。
1. 安装 Caddy 插件
Section titled “1. 安装 Caddy 插件”前往 System ‣ Firmware ‣ Plugins,搜索并安装 os-caddy。
2. OPNsense 管理端口让位
Section titled “2. OPNsense 管理端口让位”- 导航至 System ‣ Settings ‣ Administration。
- TCP Port: 修改为
8443或10443。 - HTTP Redirect: 勾选 Disable web GUI redirect rule。
- Listen Interfaces: 建议勾选
LAN。 - 保存并应用。(以后访问路由器面板需加上端口号了)。
- 我们前期k3s域名访问opnsense也改成了8443端口,见配置文件
📜 第四步:获取“四级泛域名”通关文牒 (DNS-01 挑战)
Section titled “📜 第四步:获取“四级泛域名”通关文牒 (DNS-01 挑战)”1. 全局配置 Caddy 引擎
Section titled “1. 全局配置 Caddy 引擎”导航至 Services ‣ Caddy ‣ General Settings(服务: Caddy: 常规设置):
- Enabled: 勾选。
- Acme Email: 填入你的常用邮箱。
- Auto HTTPS: 保持默认的开启
On。
导航至*DNS供应商
- DNS Provider: 选择
Cloudflare。 - API Key: 填入之前申请的 Cloudflare API Token。
- Resolvers: 填入
1.1.1.1(官方推荐,加速 DNS 验证)。 - 保存并 Apply。
2. 定义四级泛域名 (Wildcard Domain)
Section titled “2. 定义四级泛域名 (Wildcard Domain)”导航至 Services ‣ Caddy Web Server ‣ Reverse Proxy ‣ Domains(服务: Caddy: 反向代理: 域),点击 + 号:
- Domain: 填入
*.k3s.besthomelab.tech(替换你实际域名)。 - DNS-01 Challenge: 必须勾选。
- Dynamic DNS: 不要勾选!(已由 os-ddclient 接管,避免冲突)。
- 保存并 Apply。
3. 验证证书是否申请成功
Section titled “3. 验证证书是否申请成功”- 导航至 System ‣ Trust ‣ Certificates(系统: 证书: 证书),寻找名为
Caddy_Let_s_Encrypt...或Caddy_ZeroSSL...且包含你泛域名的记录。这代表 3 个月有效期的自动续签证书已经到手!
🔀 第五步:铺设内部轨道 (通配全量 vs 精准放行)
Section titled “🔀 第五步:铺设内部轨道 (通配全量 vs 精准放行)”既然证书和域名都已经就位,最后一步是告诉 Caddy 如何处理流量。由于我们 K3s 内部已经有 Traefik 这个极度聪明的网关在做七层路由,我们在 OPNsense 这一层就面临着两种截然不同的架构流派。
作为首席架构师,你可以根据自己的需求,在“一劳永逸”和“绝对安全”之间任选其一:
方案 A:一劳永逸的“全链路 HTTPS 通配流” (极客推荐)
Section titled “方案 A:一劳永逸的“全链路 HTTPS 通配流” (极客推荐)”核心理念:让 Caddy 充当一个“赛博分拣员”。它只负责利用 Let’s Encrypt 泛域名证书扒掉第一层 HTTPS 的外衣,然后立刻穿上内网 HTTPS 的新衣服,把所有 *.k3s.besthomelab.tech 的流量“原封不动”地抛给内网 Traefik。
最大优势:真·全自动化。未来你在 K3s 里通过 GitOps 部署任何新服务,只要在 Ingress 里定义好域名,外网立刻秒通,路由器后台你这辈子都不用再进第二次。
第一步:准备“接头暗号” (配置 Header)
Section titled “第一步:准备“接头暗号” (配置 Header)”由于 Traefik 是根据域名(Host)来分拣流量的,但 Caddy 默认在转发时可能会因 SNI 握手问题导致 Host 丢失。我们需要手动建立一个强制转发规则。
- 导航至 Services ‣ Caddy Web Server ‣ Reverse Proxy ‣ Headers,点击
+新建:- Header Type: 选择
header_up(请求标头)。 - Header Name: 输入
Host。 - Header Value: 输入
{host}(这是 Caddy 的魔法变量,代表原始访问域名)。 - Description:
Pass original Host header to Traefik
- Header Type: 选择
- 点击 Save。
第二步:配置全局捕获器 (配置 Handler)
Section titled “第二步:配置全局捕获器 (配置 Handler)”现在,我们要建一条“通天大道”,把所有子域名请求全部导向 K3s。
- 导航至 Services ‣ Caddy Web Server ‣ Reverse Proxy ‣ Handlers,点击
+号新建:- Domain: 下拉选择你的泛域名
*.k3s.besthomelab.tech(选择你自己的域名)。 - Subdomain (子域名): 🚨 保持完全留空!(这是实现 Catch-all 通配的关键)。
- Upstream Protocol: 选择
https://(开启全链路加密)。 - Upstream Domain: 填入 Traefik 的 LoadBalancer IP(如
10.0.10.100)。 - Upstream Port:
443。 - TLS Insecure Skip Verify: 勾选 - > 总工笔记:为什么要勾选?因为 Traefik 内部虽然有证书,但 Caddy 是通过内网 IP 连接它的。由于“人证(IP 与 域名)”不符,Caddy 默认会拒绝连接。勾选此项可以让 Caddy 信任内网链路,强制通行。
- HTTP Headers: 在下拉列表里勾选你刚才创建的那个
Host标头。 - Description:
Global catch-all for K3s infrastructure
- Domain: 下拉选择你的泛域名
- 点击 Save & Apply。
🏆 首席架构师点评
Section titled “🏆 首席架构师点评”至此,你已经打通了一条赛博穿透专线。
当一个请求(如 seerr.k3s.besthomelab.tech)到达时:
- Caddy 识别出它属于
*.k3s...的范畴,并套用泛域名证书完成解密。 - Caddy 看到 Subdomain 留空,触发“全局转发”模式。
- Caddy 带着原始域名标头,通过加密的 443 端口 敲开 Traefik 的大门。
- Traefik 识别出 Host 头是
seerr,精准地将其派发给对应的 Pod。
这种架构不仅实现了本架构实现了企业级的全链路端到端加密 全链路加密 (E2EE),而且极大地解耦了网络层与应用层。你只需要关心 GitOps 里的 YAML 声明,剩下的,交给这套自动化链路就好。
方案 B:白名单验证的“精准放行流” (安全优先)
Section titled “方案 B:白名单验证的“精准放行流” (安全优先)”核心理念:假设你有 10 个内部服务,但你只希望把看剧的 seerr 暴露到公网,坚决不让 longhorn 存储面板或 argocd 管理界面在公网上有一丝一毫的露脸机会。那么就在 Caddy 这一层开启严苛的“白名单”审查,只有登记在册的子域名才能拿到通往内网的门票。
最大优势:极度安全。任何未在 OPNsense 显式登记的子域名(如 hacker.k3s...),Caddy 会在最外层直接拦截,流量根本没机会触碰到 K3s 集群。
第一步:登记“通行证” (Subdomains)
Section titled “第一步:登记“通行证” (Subdomains)”在开启精准放行前,我们先要在 Caddy 里给特定的应用“上户口”。
- 导航至 Services ‣ Caddy Web Server ‣ Reverse Proxy ‣ Subdomains,点击
+:- Domain: 选择你的泛域名
*.k3s.besthomelab.tech。 - Subdomain: 明确填入你想暴露的应用前缀,例如
seerr.k3s.besthomelab.tech。
- Domain: 选择你的泛域名
- 点击 Save。
第二步:铺设“全链路加密”轨道 (Handlers)
Section titled “第二步:铺设“全链路加密”轨道 (Handlers)”现在,我们要为 seerr 铺设一条专属的 HTTPS 轨道。由于方案 B 是针对特定域名的,我们可以直接在配置中写死 SNI 暗号,完美规避面板变量 Bug。
- 导航至 Services ‣ Caddy Web Server ‣ Reverse Proxy ‣ Handlers,点击
+:- Domain: 选择
*.k3s.besthomelab.tech。 - Subdomain: 下拉选择刚才登记的
seerr.k3s.besthomelab.tech。 - HTTP Headers: 在下拉列表里勾选你刚才创建的那个
Host标头。 - Upstream Protocol: 选择
https://(开启全链路加密)。 - Upstream Domain: 填入 Traefik 的内网 IP(如
10.0.10.100)。 - Upstream Port:
443。 - TLS Insecure Skip Verify: 勾选 ✅。
- 🚨 TLS Server Name: 明确填入
seerr.k3s.besthomelab.tech。-
总工笔记:这是最关键的一步!因为 Traefik 认域名不认 IP,手动填入域名作为 SNI 暗号,能彻底解决
404 page not found或 SSL 协议握手失败的问题。
-
- Description:
E2E HTTPS Forwarding for Seerr
- Domain: 选择
- 点击 Save & Apply。
🏆 首席架构师笔记:两种方案如何选?
Section titled “🏆 首席架构师笔记:两种方案如何选?”| 特性 | 方案 A:全局通配流 | 方案 B:精准放行流 |
|---|---|---|
| 操作成本 | 一次配置,终身受益 | 增加一个服务就得配一次 |
| 安全等级 | 较低(全靠内网网关拦截) | 极高(边缘防火墙拦截) |
| 维护难度 | 极简 | 略繁琐 |
| 适合场景 | 开发测试、单人 Homelab | 多用户环境、核心敏感服务 |
总结:如果你是个像我一样的“懒人”极客,追求 GitOps 的极致自动化,选 方案 A;如果你对安全有近乎偏执的追求,或者有些服务(如数据库面板)坚决不能见光,选 方案 B。
这种“双层 HTTPS 加密网关”的设计,既保住了外网访问的 SSL 合法性,又实现了内网链路的绝对安全。这,就是赛博总工的艺术!
🛡️ 第六步:部署赛博红线防御 (访问控制)
Section titled “🛡️ 第六步:部署赛博红线防御 (访问控制)”防线 A:IP 白名单封锁 (Access Lists)
Section titled “防线 A:IP 白名单封锁 (Access Lists)”如果你只想让公司 IP 或者连入虚拟局域网(如 WireGuard)的设备访问某个特定域名,这是最稳健的选择。
- 创建列表:导航至 Services ‣ Caddy ‣ Reverse Proxy ‣ HTTP Access ‣ Access Lists,新建一个列表。
- 配置网段:Client IP Addresses 填入允许的网段(如
192.168.1.0/24 10.0.10.0/24)。 - 绑定应用:在 Subdomains 选项卡中编辑对应子域名,在 Access 菜单下选择该 Access List。
防线 B:基础账号密码认证 (Basic Auth)
Section titled “防线 B:基础账号密码认证 (Basic Auth)”核心逻辑:防火墙规则通常是针对端口的“AOE 伤害”,而 Basic Auth 则是一个精准的“赛博保安”。它守在特定域名的门口,任何匿名连接在触碰到后端服务之前,必须先经过身份验证。
1. 锻造“通行钥匙” (创建用户)
Section titled “1. 锻造“通行钥匙” (创建用户)”- 导航至 Services ‣ Caddy ‣ Reverse Proxy ‣ HTTP Access ‣ Basic Auth。
- 点击 + 号创建一个新用户:
- User: 输入用户名(例如
cyberbuilder)。 - Password: 输入一个高强度的密码。
- User: 输入用户名(例如
- 点击 Save。
2. 在“全局通配”中精准锁定特定服务 (点杀鉴权)
Section titled “2. 在“全局通配”中精准锁定特定服务 (点杀鉴权)”如果你使用了“全局通配流”(即 Subdomain 留空的 Handler),但想单独给 longhorn 加锁,请按照以下“优先级覆盖”逻辑配置:
- 登记身份:在 Subdomains 选项卡里,先为 Longhorn 建立条目:
- Domain:
*.k3s.besthomelab.tech - Subdomain:
longhorn.k3s.besthomelab.tech
- Domain:
- 铺设专属安检轨道:新建一个 Handler(处理程序):
- Subdomain: 下拉选择刚才登记的
longhorn。 - HTTP Headers: 在下拉列表里勾选你刚才创建的那个
Host标头。 - Upstream Protocol/Port:
https:///443。 - TLS Server Name: 明确写死
longhorn.k3s.besthomelab.tech。 - Access (关键): 在 Basic Auth 下拉框中勾选你创建的保安账号。
- Subdomain: 下拉选择刚才登记的
- 保存并应用。
💡 首席架构师笔记:优先级逻辑 在 Caddy 中,具体规则优先于通配规则。
- 访问
seerr:匹配不到精准规则 -> 进入“留空”的全局 Handler -> 直接通车。- 访问
longhorn:匹配到精准域名规则 -> 进入“加锁”的专属 Handler -> 弹出鉴权。
🚦 终极验收测试
Section titled “🚦 终极验收测试”确保手机使用 5G 网络,在浏览器输入:https://seerr.k3s.besthomelab.tech。
页面瞬间秒开,点击浏览器地址栏的小锁头,你会惊喜地发现:这是一张由 Let’s Encrypt 签发的完美四级泛域名证书!
至此,赛博堡垒的高速直达高铁正式全线通车!
🎁 彩蛋:通过 Caddy 安全反代 OPNsense WebGUI
Section titled “🎁 彩蛋:通过 Caddy 安全反代 OPNsense WebGUI”既然 Caddy 成了总网关,我们完全可以给 OPNsense 面板分配一个优雅的域名(如 opn.k3s.besthomelab.tech),彻底告别输入 IP 和端口号的日子!
第一步:登记“通行证” (Subdomains)
Section titled “第一步:登记“通行证” (Subdomains)”在开启精准放行前,我们先要在 Caddy 里给特定的应用“上户口”。
- 导航至 Services ‣ Caddy Web Server ‣ Reverse Proxy ‣ Subdomains,点击
+:- Domain: 选择你的泛域名
*.k3s.besthomelab.tech。 - Subdomain: 明确填入你想暴露的opn域名地址,例如
opn.k3s.besthomelab.tech。
- Domain: 选择你的泛域名
- 点击 Save。
第二步:铺设“全链路加密”轨道 (Handlers)
Section titled “第二步:铺设“全链路加密”轨道 (Handlers)”现在,我们要为 OPNsense 铺设一条专属的 HTTPS 轨道。
- 导航至 Services ‣ Caddy Web Server ‣ Reverse Proxy ‣ Handlers,点击
+:- Domain: 选择
*.k3s.besthomelab.tech。 - Subdomain: 下拉选择刚才登记的
opn.k3s.besthomelab.tech。 - Upstream Protocol: 选择
https://(开启全链路加密)。 - Upstream Domain: 填入 opnsense 的内网 IP
127.0.0.1。 - Upstream Port:
8443(实际的端口)。 - TLS Insecure Skip Verify: 勾选 ✅。
- 🚨 TLS Server Name: 明确填入
opn.k3s.besthomelab.tech。(不填也行) - HTTP Headers: 在下拉列表里勾选你刚才创建的那个
Host标头。
- Domain: 选择
- 点击 Save & Apply。
保存应用,外网安全访问 OPNsense 面板达成!