OpenWrt 公网端口转发 + Nginx 子域名反向代理完整实践与故障排查记录

一、背景与目标 在家庭网络环境中,已获得 公网 IPv4,并希望实现以下目标: 这是一个典型、标准、可长期维护的公网自建服务架构。 二、目标架构设计 最终期望的网络拓扑如下: 设计原则: 三、初始异常现象 在配置完成后,出现以下问题: 四、问题一:OpenWrt 抢占 80 / 443 1. 关键证据 使用 curl -vk 访问子域名,发现: 这说明: 2. 根因定位 检查 OpenWrt 的 uhttpd 配置: 含义: 3. 修复方式(关键一步) 将 OpenWrt 的 Web 管理界面 限制为仅监听 LAN IP: 或直接将管理端口改为 8443。 重启服务: 验证监听状态: 确认 不再存在 0.0.0.0:80/443。 五、问题二:DNAT 规则缺失 在释放 …

家庭网络架构选择:固定 IP 还是 VPS + FRP?

在家庭宽带环境中,如果希望实现远程访问、自建服务或长期运行的后台系统,通常会面临一个关键选择: 使用家庭宽带固定公网 IP,还是使用 VPS + FRP 的反向穿透架构? 这并不是一个“哪个更高级”的问题,而是一个工程取舍问题。本文从安全性、可控性、稳定性和长期维护角度,对两种方案进行系统对比。 一、家庭宽带使用固定 IP 的核心价值 固定公网 IP(静态 IP)最大的优势,在于地址稳定、访问路径直观。 固定 IP 的主要优势 从功能角度看,固定 IP 的确“简单直接”。 二、固定 IP 在家庭场景下的现实问题 在真实环境中,家庭固定 IP 往往伴随一些结构性问题: 1️⃣ 家庭网络被永久暴露 即便配置防火墙,暴露本身就是风险源。 2️⃣ ISP 合规与稳定性不确定 3️⃣ 故障与迁移成本高 三、VPS + FRP:反向穿透的工程逻辑 相比之下,VPS + FRP 并不是“权宜之计”,而是一种明确的工程设计选择。 FRP 的本质 FRP 并非传统意义上的“穿透工具”,而是: 由内向外建立的长期反向连接隧道 家庭网络主动连接 VPS,不接受任何外部入站请求。 四、VPS + …

一次典型的 Postfix 邮件堆积事故:从 DNS 错误到 SMTPUTF8 协议不匹配

摘要 某台运行 Postfix 的 Linux 服务器在连续多天内无法向自建 Mailcow 邮件服务器发送系统告警邮件,邮件队列持续增长。表面错误为 DNS 解析失败(4.4.3 Host not found),在 DNS 修复后仍存在投递异常。最终发现是 SMTPUTF8 协议能力不匹配导致部分邮件被永久拒绝(5.6.7)。 本文完整记录该事故的诊断路径与修复策略。 1. 事故现象 Postfix 日志中持续出现: 邮件队列中积压多封系统邮件(root → admin),时间跨度超过 5 天。 2. 第一层问题:DNS 故障导致长期队列堆积 检查发现系统的 /etc/resolv.conf 曾指向错误的网关地址(例如 192.168.0.1 而不是实际使用的 192.168.1.1),导致 Postfix 在那段时间无法解析 mail.example.net。 DNS 修复后: 均返回正确 IPv4 地址,说明系统 DNS 已恢复。 但邮件仍不断失败,是因为 Postfix 会对 4.x.x …

Certbot 在阿里云环境中出现 “Server: Beaver / 403” 报错的排查与解决

适用范围:阿里云 ECS 主机已备案,域名解析正常,但 Certbot 在执行 HTTP-01 验证时仍返回 403 Forbidden。目标:在保持现有架构不变的前提下,成功签发一张同时覆盖多个子域名的 Let’s Encrypt 证书。说明:文中域名均为示例(如 example.com、sub1.example.com 等),与真实业务无关。 一、问题现象 执行命令: 输出提示: 人工测试: 结果: 二、原因分析 1. “Server: Beaver” 的含义 2. 与备案无直接关系 三、验证思路 四、解决方案(按稳定性排序) 方案 是否改动架构 是否依赖 80 端口 难度 特点 A. DNS-01 手动 TXT ❌ 否 ❌ 否 ★☆☆ 最安全稳妥,适用于所有环境 B. DNS-01 自动化(AliDNS API) ❌ …

使用 FRP 与反向代理实现安全内网穿透与真实访客 IP 识别

在自建服务器或家庭网络场景中,常需要让局域网服务能够被公网安全访问。FRP(Fast Reverse Proxy)是一款流行的内网穿透工具,可以帮助实现这一目标。当系统采用 HTTPS 与反向代理架构时,正确获取真实访客 IP 需要额外配置。本文介绍一种基于 FRP + Nginx + Proxy Protocol v2 的通用解决方案。 一、系统结构概览 整个体系由三部分组成: 逻辑关系如下: 这种架构可同时实现多服务转发、端口复用与 TLS 加密通信。 二、FRPS 配置(公网端) FRPS 作为核心入口,建议启用加密、认证和端口白名单。 要点说明: 三、FRPC 配置(内网端) FRPC 运行在内网,负责建立安全连接并转发本地主机服务。 配置说明: 四、Nginx 反向代理配置(内网) 反向代理用于终止 TLS 并将请求转发到后端应用。要让其识别 Proxy Protocol 头部,需要显式启用相关指令。 ⚠️ 注意启用 proxy_protocol 后,若直接在本机访问该端口(未通过 FRP),连接会因缺少协议头而失败。若需调试,可额外开放一个仅本地使用的不带 proxy_protocol 的监听端口。 五、验证与测试 六、安全建议 七、总结 通过 …

一次 TLS 证书过期导致的服务故障排查记录

概要 某云服务器上的加密代理服务,在运行稳定数月后,于某日突然出现所有客户端无法连接的情况。网站访问正常,但加密代理完全失效。本文记录了从初步检测到最终定位问题的全过程。 一、问题现象 在问题出现前,所有客户端均能正常连接。某日夜间起,连接全部失败,日志中出现大量类似以下信息: 此错误表明 TLS 握手阶段证书验证失败,但当时并不清楚是客户端、服务端、还是中间环节的问题。 二、初步判断:排除外部因素 首先确认网络层和基础设施: 故障范围仅限于代理服务端口,指向服务自身配置问题。 三、证书与握手检测 通过 openssl s_client 对两个服务端口进行 TLS 测试。 网站端口(正常服务): 代理端口(故障服务): 对比结果表明: 即同一主机上存在两份不同的证书链,代理服务仍在使用旧版。 四、定位原因 进一步检查配置文件,代理服务的 TLS 设置如下: 路径正确,指向 live 目录的符号链接;但查看系统日志后发现,该进程已连续运行超过一周,而新证书的签发时间正是数天前。 说明该进程在新证书生成后从未重启过。由于此类服务不会自动重新加载证书文件,进程一直在使用内存中的旧证书。直到旧证书过期后,客户端才全部无法建立 TLS 握手。 五、解决与验证 重启服务后,再次检测: 握手恢复正常,客户端均可重新连接。 为防止同类问题再次发生,添加了自动重载机制。 六、预防措施 1. 在 Certbot 续期后自动重启相关服务 在 /etc/letsencrypt/renewal-hooks/deploy/ 下创建脚本: 每次证书续期成功后将自动重启代理服务。 2. 或使用 systemd.path 监控证书文件变化 当证书文件更新时自动触发 systemctl …

使用 systemd 管理 FRP 多实例与定期自动重启(兼容 Certbot 证书更新)

前言 在自建网络穿透体系中,FRP(Fast Reverse Proxy) 是一款非常高效、稳定的工具。搭建了一个小型但完整的结构: 由于使用 Certbot 为 FRPS 生成 HTTPS / TLS 证书,这些证书会在 90 天内自动续期。为了让 FRPS 与 FRPC 在证书替换后自动加载新证书、避免手动重启,设计了一个每两个月执行一次的自动重启计划。这既保证证书长期有效,也保持隧道连接的稳定性。 一、架构概览 角色 实例 主机类型 功能说明 FRPC frpc1、frpc2、(frpc3 预留) 局域网穿透节点 为内网设备提供公网访问 FRPS frps-main、frps-backup 公网 VPS 接收客户端连接,终止 TLS 二、服务文件结构 FRPC(客户端) /etc/systemd/system/frpc1.service: 第二个实例仅需复制并修改文件名与配置路径: FRPS(服务端) /etc/systemd/system/frps.service: 三、自动重启机制的设计思路 Certbot 证书默认有效期 90 天,但 FRPS / FRPC …

使用 RKHunter 保护 Ubuntu 系统:安装、配置与误报处理完整指南

在 Linux 系统中,Rootkit 是一种隐藏型恶意软件,它会潜伏在系统中,绕过普通检测手段,甚至获取 root 权限。为了确保系统安全,我们可以使用 RKHunter(Rootkit Hunter) 来扫描系统潜在威胁。本文将详细介绍 Ubuntu 系统上安装、配置 RKHunter,并解决常见误报的完整流程。 1️⃣ 安装 RKHunter 首先,使用 apt 安装 RKHunter 以及 curl(用于联网更新镜像): 安装完成后,可以检查版本: RKHunter 默认包含大量检测规则,包括系统文件完整性、隐藏文件、网络端口异常等。 2️⃣ 配置 RKHunter RKHunter 的配置主要涉及 定期扫描 和 网络更新。我们先修改默认参数: 2.1 /etc/default/rkhunter 编辑此文件以启用每日 cron 任务,并设置报告邮箱: 修改内容: 保存并退出。 2.2 /etc/rkhunter.conf 主要配置项如下: 保存并退出。 3️⃣ 更新系统文件属性基线 第一次安装 RKHunter 后,需要建立系统文件属性基线: 输出示例: 这里记录了关键系统文件的当前状态(大小、权限、校验和),方便后续扫描发现异常变更。 …

Termius 在 Linux 下键盘布局错位的解决方法

在 Linux 桌面环境中,系统已经设置了日语键盘布局,但部分应用(如 Termius)依然显示为英文键盘布局,导致输入符号错位。这个问题的根源在于 系统级键盘配置未正确传递到 X11,而 Electron 应用(Termius 属于此类)直接读取 XKB 配置,因未设置而退回到默认的美式键盘。 问题表现 临时解决方法 通过 setxkbmap 命令可以立即切换键盘布局: 执行后,Termius 中的键盘映射立即恢复正常。但该方法在重启或重新登录后会失效。 永久解决方法 使用 localectl 配置 localectl 是 systemd 提供的键盘与区域设置工具,可以直接写入 X11 的键盘配置文件。 常用命令如下: 若需要指定键盘模型(例如日本 106/109 键盘),可以使用: 配置完成后,重启桌面会话即可生效。再次检查: 应显示: 手动编辑 X11 配置文件 如果 localectl 不工作,也可以直接写入配置文件: 创建或修改 /etc/X11/xorg.conf.d/00-keyboard.conf: 保存后,重启桌面环境使其生效。 总结 当 Linux 桌面应用出现键盘布局与系统不一致的情况,首先应检查 localectl status 是否显示了正确的 …

路由器 ACLs(访问控制列表)配置详解

一、什么是 ACLs? 在软路由或智能路由的代理/分流插件中,常见 ACLs(Access Control Lists,访问控制列表) 功能。ACL 的核心作用是: 换句话说,ACLs 提供了一种 策略路由机制,允许管理员根据不同的设备、用户或服务来决定其上网方式。例如: 这种方式比单一的全局代理更灵活,更符合多场景网络需求。 二、界面选项解析 以下是典型 ACL 配置页面中的主要选项说明: 1. Enable 2. Remarks 3. Source Interface 4. Source 用于定义规则的匹配对象,可选格式: 5. TCP No Redir Ports / UDP No Redir Ports 6. Node 7. TCP Redir Ports / UDP Redir Ports 三、典型配置场景 场景 1:电脑走代理 场景 …