Skip to content

Latest commit

 

History

History
151 lines (109 loc) · 4.13 KB

File metadata and controls

151 lines (109 loc) · 4.13 KB

信任网络模式 (Trusted Network Mode)

信任网络模式允许来自指定 IP 段的设备跳过登录认证,自动获得站长权限。此功能专为内网部署场景设计。

适用场景

  • 家庭内网部署,希望家里所有设备免登录访问
  • 公司/学校内网部署,内网用户无需登录
  • Docker 本地部署,宿主机直接访问
  • NAS/软路由部署,局域网设备免认证

安全警告

警告:切勿将公网 IP 加入信任列表!

信任网络中的设备将自动获得站长(owner)权限,无需密码即可访问所有功能,包括管理后台。

只应添加受信任的内网 IP 段,如 192.168.0.0/1610.0.0.0/8

配置方式

方式一:环境变量(推荐)

设置 TRUSTED_NETWORK_IPS 环境变量,多个 IP/CIDR 用逗号分隔:

# 信任整个 C 类私网(192.168.x.x)
TRUSTED_NETWORK_IPS=192.168.0.0/16

# 信任多个网段
TRUSTED_NETWORK_IPS=192.168.0.0/16,10.0.0.0/8,172.16.0.0/12

# 信任特定 IP + 网段
TRUSTED_NETWORK_IPS=192.168.1.100,10.0.0.0/8

Docker Compose 示例:

services:
  lunatv:
    image: ghcr.io/szemeng76/lunatv:latest
    environment:
      - PASSWORD=your_password
      - TRUSTED_NETWORK_IPS=192.168.0.0/16,172.17.0.0/16

Vercel 环境变量:

在 Vercel 项目设置中添加环境变量 TRUSTED_NETWORK_IPS

方式二:管理后台配置

  1. 登录管理后台(需要站长账号)
  2. 找到「信任网络配置」面板
  3. 启用开关
  4. 添加信任的 IP/CIDR
  5. 保存配置(立即生效)

注意:环境变量配置优先级高于数据库配置。

常用内网 IP 段

CIDR 范围 说明
10.0.0.0/8 10.0.0.0 - 10.255.255.255 A 类私网(大型企业)
172.16.0.0/12 172.16.0.0 - 172.31.255.255 B 类私网(中型企业)
192.168.0.0/16 192.168.0.0 - 192.168.255.255 C 类私网(家庭/小型办公)
127.0.0.1 127.0.0.1 本机回环地址
172.17.0.0/16 172.17.0.0 - 172.17.255.255 Docker 默认网桥
::1 ::1 IPv6 本机回环

支持的格式

  • 单个 IPv4 地址192.168.1.100
  • IPv4 CIDR192.168.0.0/1610.0.0.0/8
  • 单个 IPv6 地址2001:db8::1
  • IPv6 CIDR2001:db8::/32
  • 通配符*(信任所有 IP,极不推荐

工作原理

  1. 用户请求到达 → Middleware 获取客户端 IP
  2. 检查 IP 是否在信任列表中(支持 CIDR 匹配)
  3. 如果匹配 → 自动设置认证 Cookie,授予站长权限
  4. 如果不匹配 → 正常登录流程

常见问题

Q: 配置后不生效?

  1. 检查环境变量是否正确设置
  2. 数据库配置保存后立即生效(通过 cookie 版本号通知 middleware 刷新缓存)
  3. 检查 IP 格式是否正确
  4. 如果仍不生效,尝试刷新浏览器页面

Q: 如何确认我的内网 IP?

Windows:

ipconfig

Linux/macOS:

ip addr
#
ifconfig

Q: 我在 Cloudflare 后面,IP 识别不正确?

Middleware 会按以下顺序获取客户端 IP:

  1. x-forwarded-for 请求头(取第一个 IP)
  2. x-real-ip 请求头
  3. cf-connecting-ip 请求头(Cloudflare)

确保反向代理正确设置了这些请求头。

Q: 可以同时用环境变量和数据库配置吗?

可以,但环境变量配置优先级更高。如果设置了 TRUSTED_NETWORK_IPS 环境变量,将忽略数据库中的配置。

Q: IPv6 支持情况?

支持 IPv6 地址和 CIDR,但由于 IPv6 格式复杂,建议使用简单格式:

  • ::1(本机)
  • fe80::/10(链路本地)
  • 2001:db8::/32(文档示例地址)

推荐配置

家庭用户(路由器分配 192.168.x.x):

TRUSTED_NETWORK_IPS=192.168.0.0/16

Docker 部署(信任宿主机和 Docker 网络):

TRUSTED_NETWORK_IPS=127.0.0.1,172.17.0.0/16,192.168.0.0/16

NAS 部署(Synology/QNAP 等):

TRUSTED_NETWORK_IPS=192.168.0.0/16,10.0.0.0/8

纯内网部署(信任所有 RFC1918 私网地址):

TRUSTED_NETWORK_IPS=10.0.0.0/8,172.16.0.0/12,192.168.0.0/16