基于PVE-9.1版本lxc直接部署OCI容器sing-box

在 PVE 宿主机上编辑 /etc/pve/lxc/容器ID.conf,添加 lxc.cgroup2.devices.allow: c 10:200 rwm lxc.mount.entry: /dev/net/tun dev/net/tun none bind,create=file 如果不开启,就会创建tun设备失败。 进入lxc执行ip转发设置 永久开启: echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf 实际情况,由于这个容器并没有启动标准的 Linux 初始化系统(没有运行 OpenRC 或 Systemd)。它开机后,内核直接把 PID 1 交给了 Entrypoint 里的命令。也就是说,它根本不会去读取 /etc/local.d 或者 /etc/init.d 里的任何自启动脚本。所以上面设置的开启转发并没有在启动的时候加载 为了加载转发设置,需要执行sysctl -p 在 PVE 网页端,双击Entrypoint那一行进行编辑 将原本的内容:sing-box 修改为(利用 shell 将两个命令串联):/bin/sh -c "sysctl -p; exec sing-box run -c /etc/sing-box/config.json" 补全缺失的config.json及my-direct.json和my-proxy.json lxcId对应的是lxc的Id,根据实际情况进行对应修改 挂载rootfs到PVE本地 pct mount lxcId 上传config.json mkdir -p /var/lib/lxc/lxcId/rootfs/etc/sing-box cp -a /config/path/config.json /var/lib/lxc/lxcId/rootfs/etc/sing-box/config.json cp -a /config/path/my-direct.json /var/lib/lxc/lxcId/rootfs/etc/sing-box/my-direct.json cp -a /config/path/my-proxy.json /var/lib/lxc/lxcId/rootfs/etc/sing-box/my-proxy.json 设置权限 权限处理参加 假设容器内是root,那在本地就是100000:100000 chown -R 100000:100000 /var/lib/lxc/lxcId/rootfs/etc/sing-box/ 卸载rootfs pct unmount lxcId 启动错误检查 前台运行调试 (推荐) 先确保容器是停止状态,然后在 PVE 宿主机上以前台模式启动这个容器,这样所有的报错都会直接打印在你的屏幕上: ...

2026年4月5日 · 8 分钟 · 冇文化

sing-box打造homelab之vless节点配置

添加TLS SNI、ACME 域名完全一致 均为你的 DDNS 域名,证书和域名强匹配,确保不会出现证书校验失败的问题。 版本控制在1.3 仅保留最新的 TLS 1.3 协议,和国内主流网站的 HTTPS 流量特征完全一致,安全性拉满,无老旧协议的异常特征。 「禁用 SNI」「允许不安全」全部关闭 杜绝了证书绕过的安全风险,TLS 握手完全符合标准规范。 证书可以使用本地或者acme自动申请 开启 ACME 自动签发证书,选用正规 CA 机构 Let’s Encrypt,实现证书自动续期,无需手动维护。 ECH 功能保持关闭 国内环境开启 ECH 反而会产生异常流量特征,无任何实用价值。 ALPN 配置需清空 / 改为「无」 ALPN 下拉框选择「无」,清空所有 ALPN 配置,纯 TCP 的 VLESS+TLS 无需额外 ALPN 声明,流量特征更干净 开启 ACME 后,s-ui 会自动管理证书的存储、续期,无需手动填写文件路径-证书 / 私钥路径。 utls也不开启 ACME证书设置注意事项: ACME 选项 » 数据目录,如果不设置数据目录,最终的证书地址是:/app/.local/share/certmagic/certificates/acme-v02.api.letsencrypt.org-directory/yourdomain/ yourdomain.crt:这是您的公钥证书文件(也叫完整证书链 fullchain)。客户端(如 V2rayN, Clash 等)连接时会验证这个文件。 yourdomain.key:这是您的私钥文件。这个文件非常重要且必须保密,它是用来解密数据的。 yourdomain.json:这是 certmagic 自动生成的配置文件,里面记录了这本证书的申请时间、到期时间等元数据,以便系统在临近过期(通常是 90 天到期前 30 天)时自动续期。 公钥 (Certificate File Path):/app/.local/share/certmagic/certificates/acme-v02.api.letsencrypt.org-directory/yourdomain/yourdomain.crt 私钥 (Key File Path):/app/.local/share/certmagic/certificates/acme-v02.api.letsencrypt.org-directory/yourdomain/yourdomain.key 证书申请过程中涉及到的地址: 对接的证书颁发机构 (CA) 的接口域名: ...

2026年4月4日 · 2 分钟 · 冇文化

境内家宽公网IP + PVE + sing-box 合规部署方案

协议取舍分析 核心前提先明确 运营商误判PCDN/CDN的核心从来不是隧道协议本身,而是你的「上行流量特征+网络行为」完全匹配了PCDN的判定模型。 家庭宽带PCDN判定的核心逻辑,是打击「利用家庭上下行不对等的宽带,对外提供经营性内容分发、带宽转租服务」的行为,只要你的流量行为完全符合个人自用、点对点远程接入的家庭正常用户特征,哪怕用最常见的协议,也不会触发误判;反之,只要踩中PCDN的核心判定红线,哪怕用再隐蔽的协议,也会被告警封号。 一、先搞懂:运营商判定PCDN/CDN的核心红线(按权重从高到低) 这是所有规避方案的底层逻辑,踩中任意一条高权重红线,都会直接触发告警: 第一红线(90%误判的根源):持续、高占比的上行带宽占用 家庭宽带均为上下行不对等(比如1000M下行通常仅配50-100M上行),PCDN的核心特征就是7×24小时持续占用80%以上的上行带宽,这是运营商告警的第一触发因子。 正常家庭用户的上行带宽,95%以上时间占比都在10%以内,仅偶尔传文件、视频通话时短时冲高,不会长期高位运行。 第二红线:大量异地、陌生IP的并发入站请求 PCDN的本质是给全国陌生用户提供内容分发,必然伴随大量不同省份、不同运营商的陌生IP,持续发起入站下载请求,并发连接数动辄数百上千。 正常家庭个人远程接入,仅会有极少数固定的、本人使用的异地IP(自己的手机、办公电脑),并发连接数长期维持在个位数。 第三红线:流量特征匹配CDN分发业务 短连接、高频次大文件分片传输、P2P/WebRTC大规模并发、无加密的HTTP/HTTPS文件分发,以及常见PCDN平台的协议指纹,都会被直接纳入检测范围。 第四红线:对公网开放公共/经营性服务 80/443端口对外提供无访问控制的网站、流媒体、下载服务,直接触发ICP备案核查,同时被判定为违规带宽使用,家庭宽带用户协议明确禁止此类行为。 第五红线:多设备、多账号长期高带宽复用 同一个宽带账号下,有数十个陌生终端、异地IP同时接入,持续占用带宽,完全不符合家庭用户的正常使用场景。 二、针对PVE+sing-box+公网IP场景,全维度误判规避方案 所有方案均严格贴合合规自用场景,从根源上消除PCDN判定因子,按优先级落地: 第一优先级:流量管控,彻底掐断PCDN核心判定根源 这是最核心、最有效的环节,比协议选型重要10倍。 硬限制上行带宽,绝对禁止持续满速上行 核心操作:在sing-box中对入站节点做全局上行带宽硬限速,上限不超过你家宽带上行总带宽的30%。比如上行100M,限速到30M以内,峰值绝对不超过50%上行总带宽。 双重保险:对单客户端单独限速,比如每个接入设备上行不超过10M、下行不超过100M;同时在PVE层面对sing-box所在的虚拟机/LXC容器,直接做网卡带宽限速,哪怕sing-box配置出错,也不会跑满上行。 分流优化:sing-box配置严格的分流规则,仅访问家庭内网的流量走隧道,公网互联网流量直接走异地设备的本地运营商出口,不要把家庭宽带当成异地上网的全局出口,从根源上减少不必要的上行流量。 绝对禁止“对外分发”类流量 核心原则:隧道仅用于你本人的设备,从异地主动拉取家庭内网资源,绝对不能让家庭宽带成为对外提供内容分发的节点。 红线禁令:严禁把隧道分享给他人、严禁搭建公网可访问的网盘/下载站/流媒体站给陌生人提供服务,哪怕免费,也完全匹配PCDN的流量特征。 第二优先级:接入管控,消除多陌生IP并发的判定特征 严格白名单准入,只允许本人设备接入 基础操作:sing-box开启强身份认证(UUID+强密码+双向TLS认证),禁用弱口令、公开认证信息。 进阶操作:在PVE防火墙/软路由防火墙上,配置IP白名单,仅允许你常用的异地IP段(公司出口IP、手机常用运营商IP段)接入,禁止全国任意IP访问你的公网端口。 终极保险:开启端口敲门(Port Knocking)机制,公网端口默认全关闭,仅你的设备发送正确敲门包后,才临时给对应IP开放端口,超时自动关闭,运营商端口扫描完全无法发现你的服务,彻底杜绝陌生IP接入。 严格限制并发与接入规模 sing-box配置全局最大并发连接数≤50,单客户端最大并发连接数≤20,完全贴合个人用户正常使用场景(PCDN并发通常数百上千)。 接入设备总数严格控制在5台以内,仅分配给你本人的手机、笔记本、办公电脑,绝对不对外分享。 第三优先级:协议与端口优化,避开CDN/PCDN特征指纹 针对PCDN误判风险,做优先级排序: 协议方案 PCDN误判风险 核心适配与避坑操作 WireGuard ★ 极低,几乎零风险 【首选方案】纯点对点加密隧道,流量特征和PCDN/CDN分发完全不沾边,和企业远程办公VPN流量一致,运营商PCDN检测模型根本不会纳入筛查。 避坑:不用默认51820端口,改用10000-60000之间的随机高端口,避开P2P/CDN常用端口 Hysteria2(随机高端口) ★★ 极低风险 【次选方案】基于QUIC的点对点加密隧道,用随机高端口(不用443),完全避开CDN常用的HTTP/3标准端口,流量特征为个人客户端-服务端点对点通信,无分发属性。 避坑:绝对不用443端口,不搭建公网中继/分发服务 VLESS/Trojan + TLS(TCP) ★★★★ 高误判风险 【不推荐】基于HTTPS的流量特征,和CDN分发流量高度相似,哪怕做了伪装,只要有持续入站请求,极易被运营商检测系统混淆为CDN分发流量,触发误判 VLESS + Reality ★★★★★ 极高风险 【绝对禁用】除了之前提到的合规风险,其借用大站证书的异常流量特征,极易被判定为CDN回源/分发行为,同时该协议被违规节点大规模滥用,运营商检测优先级极高 端口选择核心规则 绝对禁用80/443/8080/1935/6881等CDN/PCDN/P2P常用端口,优先选择10000-60000之间的随机高端口,从源头避开运营商重点检测的端口范围。 绝对不开放80端口对公网提供无加密HTTP服务,直接触发ICP核查与违规判定。 第四优先级:PVE环境隔离,避免违规流量溢出 sing-box独立隔离部署,不做全局旁路由 sing-box部署在PVE的独立虚拟机/LXC容器中,仅承担个人远程接入的隧道功能,绝对不要配置成家庭内网全局旁路由,避免内网IoT设备、下载机的P2P流量全部通过公网IP上行,触发PCDN判定。 同时在PVE防火墙中,对sing-box所在虚拟机做严格的出入站规则限制,仅放行隧道相关端口与协议,禁止其他所有流量。 绝对禁止部署任何PCDN/CDN相关程序 哪怕是测试,也不要在PVE中安装PCDN/CDN相关的容器、程序,运营商可识别其协议指纹与流量特征,直接触发告警。 开启流量审计与日志监控 开启sing-box的访问日志、流量统计,PVE层开启网卡流量监控,定期核查上行带宽占用、接入IP、并发连接数,发现异常立刻处置,避免持续触发运营商告警阈值。 三、终极避坑总结(按优先级执行) 【核心中的核心】严格限制上行带宽,分流规则仅让家庭内网访问走隧道,从根源上消除PCDN的核心判定因子。 【第二核心】严格白名单准入,仅本人固定设备/IP接入,接入设备≤5台,彻底消除多陌生IP并发的特征。 【协议选型】优先选WireGuard,搭配随机高端口,完全避开CDN流量特征。 【合规底线】绝对不对外提供任何公网服务,不分享隧道,不做经营性行为,完全符合家庭宽带用户协议。 最终落地方案(100%合法合规+降低PCDN误判封号+适配PVE+公网IP) 核心前提(所有方案的不可动摇基础) 本方案严格限定于中国大陆境内、个人家庭宽带公网IP环境,核心用途唯一且合规:个人私有内网远程安全接入(HomeLab回家网络),全程无任何跨境流量、无翻墙行为、无对外经营性/非经营性网络服务,完全符合《中华人民共和国网络安全法》等法律法规与家庭宽带用户协议。 ...

2026年4月4日 · 1 分钟 · 冇文化

sing-box的DNS与route(简化文字版本)

🧠 一、先建立“分层模型” 分成 3 层系统: 🟦 第1层:DNS 解析层(只负责“把域名变成IP”) dns.rules[] dns.servers[].detour dns.servers[].domain_resolver dns.final 🟩 第2层:连接决策层(决定“流量走哪条路”) route.rules[] route.final 🟥 第3层:拨号执行层(真正“连出去”) outbounds[].detour outbounds[].domain_resolver route.default_domain_resolver 👉 一句话理解: DNS层:查地址 Route层:选路径 Outbound层:怎么走 🔥 二、最核心一条链路(把所有东西串起来) 我们用一个完整例子👇 🎯 场景 访问: youtube.com 🧩 STEP 1️⃣:DNS 查询(进入 dns.rules) 请求:youtube.com 👉 匹配 dns.rules → server = remote_dns 🧩 STEP 2️⃣:处理 DNS server 自身 remote_dns = cloudflare-dns.com 👉 用 dns.servers[].domain_resolver 优先级: dns.servers[].domain_resolver > route.default_domain_resolver 👉 得到: cloudflare-dns.com → IP 🧩 STEP 3️⃣:DNS 查询如何发出去? 👉 用: ...

2026年4月3日 · 2 分钟 · 冇文化

sing-box的DNS与route

sing-box 9大核心配置项全解析(100%匹配1.14.0+最新官方文档) 以下内容严格基于 sing-box 官方最新文档定义,先讲全链路执行总框架,再逐个拆解每个配置项的官方定义、生效边界、优先级与坑点,最后梳理它们的相互影响关系,并通过完整场景串联所有配置。 dns.servers[].domain_resolver outbounds[].domain_resolver route.default_domain_resolver dns.servers[].detour outbound.detour dns.rules[] route.rules[] dns.final route.final 一、全局执行总框架 sing-box 从启动到用户访问的完整生命周期,分为两大核心阶段,所有配置项都在这两个阶段里各司其职,顺序不可逆: 【第一阶段:sing-box 启动初始化】 ↓ 1. 解析所有域名形式的出站(代理节点):优先用 outbound 自己的 domain_resolver,兜底用 route.default_domain_resolver ↓ 2. 按 outbound.detour 建立链式代理隧道,完成代理网络初始化 ↓ 3. 初始化 DNS 模块,加载 dns.servers、dns.rules、dns.final 【第二阶段:用户访问运行时】 ↓ 1. 用户发起域名访问 → 进入 DNS 模块 ↓ 2. dns.rules 从上到下匹配,命中即停止,决定用哪个 dns.server 解析;全不命中走 dns.final ↓ 3. 选中的 dns.server 执行解析: a. 若DNS服务器是域名(如DoH),先用自己的 domain_resolver 解析自身域名,解决鸡生蛋死锁 b. 按 dns.server.detour 指定的出站,发送DNS查询请求,拿到目标域名的IP ↓ 4. 拿到IP后,进入路由模块 ↓ 5. route.rules 从上到下匹配,命中即停止,决定流量走哪个 outbound;全不命中走 route.final ↓ 6. 按 outbound.detour 完成链式代理转发,最终访问目标服务 graph TD A[启动初始化] –> B[解析代理节点域名] B –> C{outbound是否配置domain_resolver?} C –>|是| D[用outbound.domain_resolver解析] C –>|否| E[用route.default_domain_resolver解析] D & E –> F[建立链式代理隧道] F –> G[用户访问google.com] ...

2026年4月3日 · 5 分钟 · 冇文化