惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

阮一峰的网络日志
阮一峰的网络日志
Scott Helme
Scott Helme
P
Proofpoint News Feed
T
Threat Research - Cisco Blogs
C
CERT Recently Published Vulnerability Notes
P
Privacy & Cybersecurity Law Blog
云风的 BLOG
云风的 BLOG
V
Visual Studio Blog
Martin Fowler
Martin Fowler
Cisco Talos Blog
Cisco Talos Blog
罗磊的独立博客
MyScale Blog
MyScale Blog
博客园 - 【当耐特】
L
LangChain Blog
AWS News Blog
AWS News Blog
Security Latest
Security Latest
C
CXSECURITY Database RSS Feed - CXSecurity.com
P
Proofpoint News Feed
T
True Tiger Recordings
aimingoo的专栏
aimingoo的专栏
宝玉的分享
宝玉的分享
月光博客
月光博客
The Hacker News
The Hacker News
L
Lohrmann on Cybersecurity
The GitHub Blog
The GitHub Blog
Stack Overflow Blog
Stack Overflow Blog
S
SegmentFault 最新的问题
Recorded Future
Recorded Future
S
Security Archives - TechRepublic
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
WordPress大学
WordPress大学
Y
Y Combinator Blog
Recent Commits to openclaw:main
Recent Commits to openclaw:main
大猫的无限游戏
大猫的无限游戏
Apple Machine Learning Research
Apple Machine Learning Research
小众软件
小众软件
博客园 - 聂微东
GbyAI
GbyAI
N
News and Events Feed by Topic
The Cloudflare Blog
Engineering at Meta
Engineering at Meta
Last Week in AI
Last Week in AI
博客园 - 三生石上(FineUI控件)
G
Google Developers Blog
A
About on SuperTechFans
K
Kaspersky official blog
NISL@THU
NISL@THU
S
Securelist
Microsoft Azure Blog
Microsoft Azure Blog
V
V2EX - 技术

V2EX

[AI Agent 智能体] 为什么我觉得 AI 真正的机会在“数字员工” 我自己感觉 codex 极大的扩展了个人的能力者不用说,但是用多了似乎也会有更多精神问题 把 10.8GB vLLM 镜像的 Pod Ready 从 4m35s 降到 14s: Hermes + SOCI lazy loading 实测 [程序员] 免费共享自己的 token 给大家一起用 极豹代理注册送 500M 动态住宅流量 静态住宅 3 刀起 [Codex] 好像没有人说 ChatGPT 账户登录的 Codex,不支持 GPT-5.3 Codex、GPT-5.4 等模型了 有没有一种工作能每天稳定收入 10-50 元 [分享创造] 谁还记得 K-MeleonCCF 网页浏览器 [分享发现] 从 0 开始 vibe coding,产品上线一个月 1500+用户,我对用户增长的一些思考 [Windows] 卡巴斯基安全软件和卡巴斯基标准版选择哪个? [程序员] 做了一个本地音频处理 + 伪知识库应用,强依赖本地 ASR 模型,这种项目开源有意义吗? [Linux] 国产 Touchpad 在 arch 下偶发无法用手势 [问与答] 有老哥用 Portainer 吗? webhook 调用成功但是没有重新部署,哪位有经验? [问与答] 现在比较可靠的国外手机卡选哪家? [路由器] MikroTik RB5009 在 2026 是否还值得入手 [硬件] 外置硬盘有什么散热的好方案,太热了 OpenCode 的压缩算法有建议的兄弟们吗?主要是写 LaTeX 论文。 今年 618 是凉了吗 现在各类所谓戒网瘾机构真的太吓人了. 芒果 TV 好像在送免费的 glm 5.1 和 ds v4? 有大佬知道开了 ChatGPT plus 年费的情况下,可以再升级成 pro 吗?想只升级一个月用用 [分享创造] [分享创造] 做了一个纯本地的加密日记本,已上架 Google Play android 大佬们,有什么隐藏开发者 usb 调试的方案吗? [Visual Studio Code] VSCode 1.122.0 可以离线使用 BYOK 分析下“女生拒绝你,却还和你保持联系”这种现象 [宽带症候群] 部分机场拦截 SSL 连接,导致很多非浏览器软件的代理链路残废 [推广] [DDShub.cc]呆呆兽 Claude/CodeX 中转站,内含免费测试金 [程序员] 个人 side project 的设计工具用什么 今天 CPA 升级到 7.1.25 Codex free 只有 4 个模型了, gpt-5.5 还在,大家是不是这样? mimo 昨天重置之后为什么现在这么慢,是我的错觉吗 AI 编程是否是一种无效内卷? 做了个 Chrome 插件 DemoAlias,录 demo 时一键替换敏感数据 [Pixel] 想要入手个带一个 Sim 卡的 pixel10 在那块买更好 觉得现在入手合适吗 Mac pro M1 磁盘扩容问题 小米 mimo 模式是不是挂了,现在无应答了 Gemini 最近是降智了吗? 3.5 快是快但是回答的质量变差了 [程序员] 祝贺我司,月收入突破万刀~ [分享发现] [翻译] 为什么我要用 C# 构建数据库引擎 [分享创造] 使用 Skills 结合 NotebookLM 一人运营十个视频号 用 AI 如何做出好看的前端页面? 记一次令我非常无语的面试 [分享创造] GEO Wiki: 一个面向生成式引擎优化的百科全书 [分享发现] 哪位友友有滴滴 V8 [问与答] 有没有听力不太好,用苹果 air pod 的 [分享创造] Obsidian-Extensions-Activity 0.2 - 更好用的三方插件管理工具 《HelloGitHub》第 122 期 有没有阿里云的大佬,来说说这是真的,还是销售吹的? [Android] 看到 k80 可以解锁了 原来大型活动和人流量较多的地方有警察执勤并不是中国特色 [开源实时数字人] 商业级部署演示! 同时我们消费级卡的部署链路已经通啦,欢迎提意见~ [问与答] AI 搜索互联网资讯有啥好用的接口没? [副业] 跟风开了一个自助洗车店 [macOS] Mac 盖上盖子使用之后,每次开屏屏幕会花,这个是硬件问题还是驱动问题呢? 闪电藤即将下线,虾传正式上线 [DeepSeek] 今天 deepseek 崩了吗 codex 土区的 plus,能改成美区的 pro 吗,会触发手机验证吗 大家用过 Qwen3.7-Max 吗,说是比 GLM5.1, KIMI2.6 还强,真的假的? anthropic 既然如此抵触 cn,但是多国语言又提供简体中文? [程序员] 英语学了几十年,还是听不懂说不出,大家都是怎么练听说的? [问与答] 感觉有点 ai 阳痿了,话说你们都用 ai 做了啥 分享一个我做的 Apple Watch 独立游戏——30 秒打地鼠 [OpenAI] 有时候感觉言出法随比使用 superpowers 更方便快捷 [问与答] 有没有云南的?昆明彩礼一般多少啊? [生活] 我的无奈,我很想她,但是这不再可能 朋友用美国身份注册了 claude 账号,在国内使用会被封吗 [职场话题] 北京裁员赔偿上限是多少啊 [推广] 做了一个 AI 中转站 Lumi,新用户可免费订阅,每周送 2 元额度 17PM 7999 PDD、淘宝百亿补贴 [问与答] 我的 codex app 为什么这样? [分享创造] 无聊开发了一个蚊子白噪音助眠小程序,适合烦朋友 [程序员] Cursor 滞销了, 60 刀套餐回归玩家首月给 70% off [Wunder] edge.v2ex.com/chat 20260527 功能更新 [问与答] 寻找 image2,香蕉, seedance2 的 api; 取精室是怎么个流程?取不出来怎么办? opencode go 里的 mimov2.5 系列额度涨了 [酷工作] Crypto CEX 诚聘 AI 测试工程师 薪水 20K-30K RMB 纯远程办公 [生活] 你有给自己买什么商业保险吗,或者说有必要买商业保险吗 claude 发的这句话啥意思,说我问的多了吗 Quantumult X 又更新了 配置优化更新了一下 [问与答] 不知道是不是错觉, typeless 在 Macbook 上的耗电感觉有点快 老婆送了我个 iPhone17 Pro Max 1T,但我更舍不得我的 iPhone13 巨魔 福利: 4 个住宅 IP 兑换码,新用户专享 mac 笔记本 500G,开发用,现在没有储存空间了怎么办 是否存在港卡以外的其他选择?比如东南亚各国? DigVPS 测评 - 100TB 新增美国 Los Angeles - Global Tier1 产品:这应该是 Y 系第一个美国产品?限量九折优惠中。 [程序员] OpenCode x MiMo V2.5 - 限时免费 现在的你有哪些骄傲和无奈呢 香港金管局:就内地投资者投资账户新增三项监管措施 开户核查倒查至 2023 年 1 月 做了个 macOS 网站与应用拦截器, 保持专注. [小米] 有没有安卓玩机高手请教点问题 我发现 it 类工作者是最严重的性压抑群体 包括我自己 it 类的工作者 [开源] 高阶魔方一键求解器 Cursor 还能买吗, 20 刀和 60 刀的大概能用多久? ai studio 被疯狂封 api 怎么回事 Zerolang 好像还没人讨论? [问与答] token 用量究竟是怎么算的? 香港众安银行开户返 300HKD+50USD 英伟达股票兑换券 活动时间 5.28 日至 7.1 日截止。 vibe coding 了个辅助颈腰椎病康复的体态相机小工具 有在用免费 VPS 的吗?可以当梯子用吗? 这个 sechub 网站搬运了很多 V 站的内容,站方能管到它吗
最终使用 Linux 自己搭建 NAS 系统
lucheng0127 · 2025-05-16 · via V2EX

需求说明

  • 提供路由服务,并透明代理
  • 提供 VPN 服务
  • 提供影视库功能
  • 提供照片备份功能
  • 迅雷下载电影

心路历程

最开始纠结是 PVE 还是直接跑 Linux ,但是想了一下都 all in one 了干脆直接 Linux 省的套娃。

最后整体思路:

  • 创建 gateway 的 netns 作为软路由,里面跑 dnmasq 提供 dhcp 。配合 iptables 和 ipset 实现全局流量走 clash 透明代理。源码
  • 使用自己实现的 wg 工具来配置 wireguard 提供 VPN 服务。源码
  • 影音库 Jellyfin 运行在 lxc 容器中,透传核显提供 GPU 解码。
  • immich 提供照片备份功能,通过 nerdctl 跑 immich 的 docker compose 服务。
  • 按照迅雷网盘版提供磁力下载功能。源码
  • nginx 提供 https 反向代理。
  • 服务管理,基本通过 systemd

硬件说明

小黄鱼淘了一台 4 网口的 AMD 主板,16G 内存,CPU 型号忘了,看了一下是 es 的,无所谓了

root@shawn-aio:~# grep name /proc/cpuinfo | cut -f2 -d: | uniq -c
      4  AMD Eng Sample
root@shawn-aio:~# free -h
               total        used        free      shared  buff/cache   available
Mem:            14Gi       1.9Gi       9.8Gi       200Mi       3.4Gi        12Gi
Swap:          4.0Gi          0B       4.0Gi

网络结构

eno1 做 wan 口,通过 iptables nat 表做 masquerade 给内部提供外网访问能力。wan 口只开放 vpn 端口。

iptables -t nat -A POSTROUTING -o eno1 -j MASQUERADE

root@shawn-aio:~# iptables -S INPUT
-P INPUT DROP
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -i br-mgmt -j ACCEPT
-A INPUT -i eno1 -p udp -m udp --dport 51820 -j ACCEPT
-A INPUT -i wg0 -j ACCEPT
-A INPUT -i lxcbr0 -j ACCEPT
-A INPUT -i br-0ad574e582c7 -j ACCEPT
-A INPUT -i nerdctl0 -j ACCEPT

创建 br-mgmt ,接入 enp3s0 ,enp4s0 ,enp5s0 做 lan 口,同时通过 veth 将 netns gateway 接到 br-mgmt ,并在 netns 中提供 dhcp ,下发默认路由和 dns 地址。

root@shawn-aio:~# ip a show br-mgmt
6: br-mgmt: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether ea:a4:3d:6c:ce:d0 brd ff:ff:ff:ff:ff:ff
    inet 172.20.0.254/24 brd 172.20.0.255 scope global br-mgmt
       valid_lft forever preferred_lft forever
    inet6 fe80::e8a4:3dff:fe6c:ced0/64 scope link proto kernel_ll
       valid_lft forever preferred_lft forever
root@shawn-aio:~# ip netns exec gateway ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host proto kernel_lo
       valid_lft forever preferred_lft forever
12: gTb@if13: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether 52:ef:a4:d0:0c:e9 brd ff:ff:ff:ff:ff:ff link-netnsid 0
    inet 172.20.0.1/24 scope global gTb
       valid_lft forever preferred_lft forever
    inet6 fe80::50ef:a4ff:fed0:ce9/64 scope link proto kernel_ll
       valid_lft forever preferred_lft forever
root@shawn-aio:~# ip l show master br-mgmt
3: enp3s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel master br-mgmt state UP mode DEFAULT group default qlen 1000
    link/ether 20:76:93:5b:14:4f brd ff:ff:ff:ff:ff:ff
4: enp4s0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc fq_codel master br-mgmt state DOWN mode DEFAULT group default qlen 1000
    link/ether 20:76:93:5b:14:50 brd ff:ff:ff:ff:ff:ff
5: enp5s0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc fq_codel master br-mgmt state DOWN mode DEFAULT group default qlen 1000
    link/ether 20:76:93:5b:14:51 brd ff:ff:ff:ff:ff:ff
13: bTg@if12: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master br-mgmt state UP mode DEFAULT group default qlen 1000
    link/ether aa:36:50:e4:db:81 brd ff:ff:ff:ff:ff:ff link-netns gateway
15: veth18XBnR@if2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master br-mgmt state UP mode DEFAULT group default qlen 1000
    link/ether fe:e5:47:3f:90:3b brd ff:ff:ff:ff:ff:ff link-netnsid 1
16: vethdxnWc4@if2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master br-mgmt state UP mode DEFAULT group default qlen 1000
    link/ether fe:c1:4c:94:06:ba brd ff:ff:ff:ff:ff:ff link-netnsid 2

服务详情

nginx 反向代理

root@shawn-aio:~# systemctl status nginx
● nginx.service - A high performance web server and a reverse proxy server
     Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; preset: enabled)
     Active: active (running) since Fri 2025-05-09 08:38:57 CST; 1 week 0 days ago
 Invocation: a6039cd62e984eb0bd649511a52f5060
       Docs: man:nginx(8)
   Main PID: 6945 (nginx)
      Tasks: 5 (limit: 17733)
     Memory: 8.6M (peak: 13.6M)
        CPU: 1.111s
     CGroup: /system.slice/nginx.service
             ├─6945 "nginx: master process /usr/sbin/nginx -g daemon on; master_process on;"
             ├─6946 "nginx: worker process"
             ├─6947 "nginx: worker process"
             ├─6948 "nginx: worker process"
             └─6949 "nginx: worker process"

May 09 08:38:57 shawn-aio systemd[1]: Starting nginx.service - A high performance web server and a reverse proxy server...
May 09 08:38:57 shawn-aio systemd[1]: Started nginx.service - A high performance web server and a reverse proxy server.

软路由和透明代理

自己写了个脚本,创建了一个 netns 后,在 netns 中跑 dnsmasq 提供 dhcp 服务。里面跑 clash ,并设置 iptables 规则来实现透明代理。

root@shawn-aio:~# systemctl status gateway
● gateway.service - Gateway service enable tproxy
     Loaded: loaded (/etc/systemd/system/gateway.service; enabled; preset: enabled)
     Active: active (running) since Fri 2025-05-09 08:38:57 CST; 1 week 0 days ago
 Invocation: 76718511daa5473bad8931fedd4d54c9
   Main PID: 6873 (gateway.sh)
      Tasks: 3 (limit: 17733)
     Memory: 5.1M (peak: 6.8M)
        CPU: 1d 22h 47min 56.956s
     CGroup: /system.slice/gateway.service
             ├─6873 /usr/bin/bash /opt/gateway/gateway.sh start
             ├─6973 /usr/sbin/dnsmasq -C /opt/gateway/dnsmasq.conf
             └─6974 bash /opt/gateway/tproxy.sh start

May 15 08:25:45 shawn-aio dnsmasq-dhcp[6973]: DHCPREQUEST(gTb) 172.20.0.165 c8:a3:62:57:df:69
May 15 08:25:45 shawn-aio dnsmasq-dhcp[6973]: DHCPACK(gTb) 172.20.0.165 c8:a3:62:57:df:69 luchengdeMBP
May 15 13:53:13 shawn-aio dnsmasq-dhcp[6973]: DHCPREQUEST(gTb) 172.20.0.165 c8:a3:62:57:df:69
May 15 13:53:13 shawn-aio dnsmasq-dhcp[6973]: DHCPACK(gTb) 172.20.0.165 c8:a3:62:57:df:69 luchengdeMBP
May 15 19:10:29 shawn-aio dnsmasq-dhcp[6973]: DHCPREQUEST(gTb) 172.20.0.165 c8:a3:62:57:df:69
May 15 19:10:29 shawn-aio dnsmasq-dhcp[6973]: DHCPACK(gTb) 172.20.0.165 c8:a3:62:57:df:69 luchengdeMBP
May 16 00:33:54 shawn-aio dnsmasq-dhcp[6973]: DHCPREQUEST(gTb) 172.20.0.165 c8:a3:62:57:df:69
May 16 00:33:54 shawn-aio dnsmasq-dhcp[6973]: DHCPACK(gTb) 172.20.0.165 c8:a3:62:57:df:69 luchengdeMBP
May 16 06:08:01 shawn-aio dnsmasq-dhcp[6973]: DHCPREQUEST(gTb) 172.20.0.165 c8:a3:62:57:df:69
May 16 06:08:01 shawn-aio dnsmasq-dhcp[6973]: DHCPACK(gTb) 172.20.0.165 c8:a3:62:57:df:69 luchengdeMBP
root@shawn-aio:~# ip netns
gateway (id: 0)

VPN 服务

使用场景很简单,感觉没必要用 tailscale 或者 netmaker 。同时自己不太喜欢界面,所以自己模仿 wg-easy 写了个 wg 服务来提供 VPN 服务。客户端直接鉴权是模仿 k8s apiserver 和 kubectl 通过 tls 证书鉴权。

root@shawn-aio:~# wgctl subnet list
UUID                                  Name     Address       Public Key
e4212eda-233f-11f0-8903-2076935b144e  default  10.67.0.1/24  <pub key>
root@shawn-aio:~# wgctl peer list -s e4212eda-233f-11f0-8903-2076935b144e
UUID                                  User     Address       Public Key                                    Enable
f9615f20-233f-11f0-8903-2076935b144e  lucheng  10.67.0.2/24  <pub key>  true
root@shawn-aio:~# wg
interface: wg0
  public key: <server pubkey>
  private key: (hidden)
  listening port: 51820

peer: <peer pubkey>
  endpoint: 10.28.66.18:36303
  allowed ips: 10.67.0.2/32
  latest handshake: 29 minutes, 23 seconds ago
  transfer: 5.14 MiB received, 35.12 MiB sent

影音功能

lxc 跑 ubuntu 在里面装 jellyfin

root@shawn-aio:~# lxc-ls -f
NAME     STATE   AUTOSTART GROUPS IPV4       IPV6 UNPRIVILEGED
jellyfin RUNNING 1         -      172.20.0.2 -    false
ubuntu   RUNNING 1         -      172.20.0.3 -    false

照片备份

root@shawn-aio:~# nerdctl ps
CONTAINER ID    IMAGE                                                COMMAND                   CREATED       STATUS    PORTS                     NAMES
05a100ce77d8    quay.io/shawnlu0127/immich/immich-server:v1.131.1    "tini -- /bin/bash s…"    6 days ago    Up        0.0.0.0:2283->2283/tcp    immich_server
414297ba5e5f    quay.io/shawnlu0127/immich/postgres:pg14-v0.2.0      "docker-entrypoint.s…"    6 days ago    Up                                  immich_postgres
6fa52ce3d9e1    quay.io/shawnlu0127/immich/redis:6.2-alpine          "docker-entrypoint.s…"    6 days ago    Up                                  immich_redis