linux

斐讯 N1 盒子变身旁路由:翻墙 + 去广告 + 青龙全在软路由上,新手向保姆级教程

把一台吃灰的斐讯 N1 盒子刷成 Armbian 后,改造成家庭旁路由:给全家(尤其 Mac)提供透明代理翻墙、DNS 层广告过滤,还能顺便跑青龙面板定时签到。本文用大白话讲透旁路由原理、mihomo 透明网关配置、磁盘迁移到外置硬盘,每一步都有可复制的命令,并给出从"全部走代理"到"国内直连/国外代理"的标准分流方案

··updated August 23, 2026·4 min read

30 秒看懂:斐讯 N1 是一台不到 100 块钱、已经停产的电视盒子,但它的硬件(Amlogic S905d 四核 + 2G 内存)刷上 Armbian Linux 后就变成一台可以通宵开机的迷你小主机。我们把它接到家里的路由器下,让它扮演”旁路由”:家里的电脑(以 Mac 为例)只要把网关和 DNS 指到它,它就会自动帮你这台电脑做两件事——① 把需要”翻墙”的流量通过代理节点送出(国内流量直接走家里网络,不绕弯);② 在 DNS 这一层把广告域名直接拦掉。既不用每台设备装软件,也不用开代理开关,全自动、零配置。本教程还会顺带讲怎么接外置硬盘扩容、把容易占满系统的 Docker 存储搬过去,以及青龙面板定时任务该怎么和这套体系共存。

你有没有这样的苦恼:

  • 家里的 Mac/手机要”科学上网”,得每台都装一个代理客户端,换台设备就要重新设置;
  • 开了代理之后,打开百度、淘宝这些国内网站也变慢了,因为流量全送去绕了一圈;
  • 浏览器里去广告插件装了一堆,但 App 里的广告还是拦不住;
  • 一台 N1 盒子买回来吃灰,却不知道它能干什么。

如果你有以上任何一条,这篇把 N1 改造成旁路由的教程就是为你准备的。我们会从原理讲起(旁路由到底是啥、为什么改了网关就直接全自动),再到每一步怎么敲命令,最后带 FAQ 帮你排查常见坑。

一、原理:旁路由到底是什么?为什么”只改网关”就能全自动?

1. 先分清三种”路由器/网关”

主路由:就是你家光猫/京东、小米、华硕那种路由器,它负责所有设备的上网出口,一般 IP 是 192.168.1.1(或类似)。它管着 DNS 分配、WiFi、有线网络。

旁路由:它不是”替代”主路由,而是”插在”主路由旁边帮忙干活的另一台设备。旁路由自己不连宽带,它用网线或 WiFi 接到主路由的局域网里,取得一个固定的局域网 IP(比如 192.168.1.2)。它像主路由的一个”得力助手”,专门负责主路由干不好的活——比如翻墙、去广告。

透明网关:这是这次改造的核心。你平时用”代理软件”(Clash、Surge)是装在各电脑上,每台设置一个代理地址。而旁路由的玩法是”透明网关”——不需要在电脑上装任何软件,只要把电脑的网关和DNS都指向旁路由那个 IP,电脑的所有网络流量就会自动先经过旁路由,由旁路由来决定:哪个域名走代理、哪个直连、哪个广告域名直接丢掉。

2. 走一遍流量(30 秒看懂原理链)

[Mac] --(所有流量)--> [旁路由 192.168.1.2] --mihomo 规则---> 国外域名 → 代理节点 → 境外
                                        │
                                        ├-> 国内域名 → 直接走主路由(192.168.1.1)
                                        └-> 广告域名 → 丢弃(REJECT)
  • Mac 只要改一次”网关 + DNS”,以后全自动:不用装软件、不用开开关、临时不想要随时改回去。
  • 代理 + 去广告的规则库全在旁路由的 mihomo(开源代理内核)里统一管理,你只管浏览,不用管。
  • 因为规则是”国内直连、国外代理”,国内网站不绕弯不、不会变慢;国外网站自动走代理。

大白话:主路由是”大门保安”,负责放行所有人进出;旁路由是”门口额外加的分拣台”,检查每一件”包裹”(网络请求)该走哪个通道,该寄境外的送代理,本地直接直连、广告直接扔掉。你只需要把”寄件地址(网关)“写成旁路由即可。

二、前置准备

项目说明花不花钱
斐讯 N1 盒子Amlogic S905d 四核 / 2G 内存 / 带网口和 HDMI二手约 60~90 元
外置硬盘USB 移动硬盘 / 大容量 U 盘(建议 ≥32G),给它扩容系统盘有就省,几个~几十元
Armbian 系统已给 N1 刷好的 Armbian Linux 系统免费
一个能”科学上网”的节点/订阅自建 VPS 或机场订阅(clash 订阅 URL)自有 VPS 或订阅费
SSH 工具Mac 自带终端 / Windows Xshell / MobaXterm免费
一台 Mac苹果电脑(本教程以 macOS 为例)——

前置知识:会 SSH 登录一台 Linux(ssh root@192.168.1.2),会基本的 vi/nano/cat 看配置。完全没碰过 Linux 也能跟着做,因为命令我都给你。


三、动手第一步:N1 刷 Armbian + 接上外置硬盘(约 30 分钟)

如果已经刷好 Armbian 并 SSH 能登录,请跳过本节,直接看【第四步 装 mihomo 旁路由】。

1. 给 N1 刷 Armbian

  1. 先去 ophub 整理的 Armbian 镜像库下载适合 Amlogic-S905d 的 Armbian 镜像(带 S905* 字样,务必是 LAN 独立透传版本)。
  2. 用工具(如 balenaEtcher 或 dd)把镜像烧录到一张 SD 卡或 U 盘。
  3. 把卡插入 N1 的 SD 卡槽,N1 通电(插网线到主路由 LAN 口)会自动从卡启动。
  4. 首次启动会进入终端,可以看屏幕提示设个 root 密码(或一路回车用默认)。登录后用 armbian-config 或 nmtui 配置为静态 IP,比如 192.168.1.2/24,网关填主路由 192.168.1.1。
# 假设已能以 root 登录 N1,确认 IP 和路由
ip addr              # 看 eth0 的 IP 是否 192.168.1.2
ip route              # 应有一行 default via 192.168.1.1
cat /proc/sys/net/ipv4/ip_forward   # 应输出 1(允许转发,旁路由必需)

小知识:旁路由要能转发其他设备的流量,内核的 ip_forward 必须等于 1。多数 Armbian 默认已开,若输出 0,敲 sysctl -w net.ipv4.ip_forward=1 临时开启,并写入 /etc/sysctl.conf 永久生效。

2. 接外置硬盘并挂载(给系统盘扩容)

N1 的板载存储(eMMC / SD 卡)通常只有 6~8G,跑 Docker + 青龙 + mihomo 很容易装满。接一块外置硬盘(USB),把它格式化成 ext4 并挂载到一个目录(我们约定挂到 /data / /storage),以后所有 Docker 数据、镜像、青龙都放这里。

# 看外置盘是不是被识别(选别是 sda/sdb 的分区)
lsblk
# 如果没分区就新建一个 ext4 分区(把 /dev/sda1 换成你的盘)
sudo mkfs.ext4 /dev/sda1
# 创建挂载点并挂载
sudo mkdir -p /data /storage
sudo mount /dev/sda1 /data
# 让开机自动挂载(把下面这段写进 /etc/fstab)
echo '/dev/sda1 /data ext4 defaults 0 2' | sudo tee -a /etc/fstab

如果你之前只用系统盘跑 Docker,会发现空间被 secretly 吃光——原因见【第六节】“为什么明明接了外置盘,系统盘还是被占满”。


四、装 mihomo 做旁路由(核心环节,约 20 分钟)

我们把旁路由的”大脑”就交给了 mihomo(Clash.Meta 的开源内核,很多桌面代理软件 ClashX / FlClash 底层就是它)。这样N1 和你在电脑上用的代理,分流规则可以完全一致。

1. 安装 mihomo

去 mihomo 的 GitHub release 页,下载 mihomo-linux-arm64 版(N1 是 ARM 架构)。放到 /usr/local/bin/mihomo 并加执行权限:

# 伪造名写进去,换成本地上传也行
sudo wget -O /usr/local/bin/mihomo <下载到的mihomo-linux-arm64的URL>
sudo chmod +x /usr/local/bin/mihomo
mihomo -v   # 看版本,能输出就是安装成功

2. 准备一份 Clash / mihomo 配置文件

你有两种来源:

  • A. 你自己的完整代理订阅(机场/自建给的 config.yaml):直接用它当主配置最好,因为它的 rules(分流规则)通常已经很完善(国内直连 + 广告 reject + GFW 走代理)。
  • B. 手写一份最小配置:填你自己一个节点的 proxies,加上下面的 rules。

我们把它放到 /data/mihomo/config.yaml(放外置盘,避免占系统盘):

# /data/mihomo/config.yaml(示例,把 <节点> 换成你的)
mixed-port: 7890          # 局域网访问用的混合端口(HTTP+SOCKS)
redir-port: 7891          # 透明代理端口(下面的 iptables 要用它,别改)
bind-address: '*'
allow-lan: true           # 允许局域网连接
mode: rule
log-level: info
external-controller: 0.0.0.0:9090   # 可视化/API 端口

dns:
  enable: true
  listen: '192.168.1.2:53'      # 你 N1 的静态 IP!这个端口给局域网设备做 DNS(去广告)
  enhanced-mode: fake-ip
  fake-ip-range: 198.18.0.1/16
  nameserver:
    - 114.114.114.114
    - 8.8.8.8
  nameserver-policy:
    "geosite:cn,private":
      - https://223.5.5.5/dns-query
      - https://120.53.53.53/dns-query
    "geosite:geolocation-!cn":
      - https://dns.cloudflare.com/dns-query

proxies:
  - {你的一个节点, 例如 vless/vmess/shadowsocks...}

proxy-groups:
  - name: PROXY
    type: select
    proxies: [你节点]

rules:
  - RULE-SET,reject,REJECT
  - GEOSITE,cn,DIRECT        # 国内域名直连
  - GEOIP,CN,DIRECT          # 国内 IP 直连(兜底)
  - MATCH,PROXY              # 其余统统走代理

上面 dns.listen 特意写成 192.168.1.2:53 而不是默认的 :53,是为了避开系统自带的 systemd-resolved 抢占 53 端口——把 DNS 绑定到你自己网卡 IP,既能服务局域网设备又不会和系统抢。

3. 让 mihomo 开机自启(systemd)

sudo tee /etc/systemd/system/mihomo.service >/dev/null <<'EOF'
[Unit]
Description=mihomo proxy for N1
After=network.target
[Service]
ExecStart=/usr/local/bin/mihomo -d /data/mihomo -f /data/mihomo/config.yaml
Restart=on-failure
[Install]
WantedBy=multi-user.target
EOF
sudo systemctl daemon-reload && sudo systemctl enable --now mihomo
sudo systemctl status mihomo   # 应显示 active,监听 7890

3.5 打开透明转发(关键!让”只改网关”生效)

现在 mihomo 还只是个”代理服务器”。要让 Mac 只改网关就能全自动,需要两个追加:

  1. 加一套 iptables 透明转发规则——把从局域网 Mac 进来的 HTTP/HTTPS 转发给 mihomo 的 7891(redir) 端口:
sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80  -j REDIRECT --to-port 7891
sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 443 -j REDIRECT --to-port 7891
sudo sysctl -w net.ipv4.ip_forward=1   # 确保转发已开
  1. 让这些规则开机自动带上(挂到 mihomo 服务每次启动后执行):
sudo tee /usr/local/bin/n1-fwd.sh >/dev/null <<'EOF'
#!/bin/bash
iptables -t nat -C PREROUTING -i eth0 -p tcp --dport 80  -j REDIRECT --to-port 7891 2>/dev/null || iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80  -j REDIRECT --to-port 7891
iptables -t nat -C PREROUTING -i eth0 -p tcp --dport 443 -j REDIRECT --to-port 7891 2>/dev/null || iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 443 -j REDIRECT --to-port 7891
sysctl -w net.ipv4.ip_forward=1 >/dev/null
EOF
sudo chmod +x /usr/local/bin/n1-fwd.sh
# 用 drop-in 让它随 mihomo 启动执行
sudo mkdir -p /etc/systemd/system/mihomo.service.d
printf '[Service]\nExecStartPost=/usr/local/bin/n1-fwd.sh\n' | sudo tee /etc/systemd/system/mihomo.service.d/fwd.conf
sudo systemctl daemon-reload

重要:这套透明转发只针对”从局域网进来”的流量(-i eth0),不会影响 N1 自己走代理——所以青龙、N1 上其它服务照常直连,不会被牵连、也不会把自己搞断网。


五、Mac 端设置(只需这么一次)

在 Mac:系统设置 → 网络 → 选你连的 WiFi/以太网 → 详细信息 → TCP/IP:

  • 手动配置 IPv4(或 DHCP 绑定也行),给你的 Mac 个固定 IP,比如 192.168.1.50;
  • **路由器(网关)**填 192.168.1.2(旁路由);
  • DNS 填 192.168.1.2(旁路由,做 DNS 去广告);
  • 关掉之前可能有的”高级 → 代理”里任何 HTTP/SOCKS 代理勾选(否则会和透明网关叠加出问题)。

然后直接刷新浏览器、打开 App,就完成了。你可以访问 myip 网站看代理出口 IP,或观察前 → FAQ 验证方法。

验证透明代理已生效

在 Mac 上正常上网,然后回到 N1 终端看 mihomo 当前在帮谁转发:

curl -s http://127.0.0.1:9090/connections | python3 -c "import sys,json; d=json.load(sys.stdin); [print(c['metadata'].get('host') or c['metadata'].get('destinationIP')) for c in d.get('connections',[])]" | sort | uniq -c | sort -rn | head -20

如果你刚才用 Mac 开了 Google / X / YouTube,这些域名会出现在列表——证明 Mac 的流量确实无感知地经过旁路由分流了,而且没开代理开关。gstatic 是测速地址,Google/X 走 PROXY,京东/淘宝走 DIRECT,都正常。


六、为什么”接了外置硬盘,系统盘还是满”?(重要、超常见)

这是一个让很多人疑惑的坑:明明外置硬盘好几百 G,为什么 6G 的系统盘还是被占满、用着用着就没空间?真相:Docker 用的是 containerd 存储,而 Docker 有一条”数据根目录”。绝大多数人只把 Docker 的 data-root 指到外置盘,却漏掉了 containerd 自己的数据目录还在系统盘。

具体表现:

/var/lib/containerd    →  3~4G(系统盘/内存卡上!) ← 镜像层都在这
/data/docker           →  几十 MB(外置盘,几乎没用上)

根因:containerd(Docker 底层的镜像存储引擎)有自己的 data-root,默认在 /var/lib/containerd(系统盘)。你只有把 containerd 的 data-root 也迁到外置盘,镜像才会真正写到外置盘。很多人只改了 docker daemon 的 data-root,漏了 containerd,等于白改。

一键迁移(软链方式,最稳、可回滚)

sudo systemctl stop docker
sudo mkdir -p /data/containerd
sudo mv /var/lib/containerd /data/containerd   # 把镜像层搬到外置盘
sudo ln -s /data/containerd /var/lib/containerd   # 软链,让 containerd 还按原路径找
sudo systemctl start docker
# 验证
df -h /            # 系统盘使用率应明显下降(例如 90% → 34%)
docker ps          # 原有容器自动恢复(镜像没丢、不用重新拉)
docker info | grep -i containerd

用软链而不是改配置:containerd 仍按 /var/lib/containerd 找,但实际落到外置盘。回滚只要 rm 软链 && mv 挪回去即可,风险低。

迁移时千万别用一条 SSH 命令直接跑大 mv——3~4G 拷贝可能要一两分钟,SSH 断开就会中断。稳妥做法是把上面的命令写进一个脚本放到 N1 上用 nohup 后台跑,再轮询结果。

以后新装容器,数据都放外置盘(养成习惯)

# 不要在系统盘留容器数据——卷一律绑定到 /data/<项目>
docker run -v /data/qinglong:/ql/data ...   # 青龙示例
docker run -v /data/your-app:/data ...        # 其它服务同理

规则:镜像自动落 containerd(已迁外盘);数据卷一律 -v /data/xxx。这样系统盘只放系统本体(内核+基础包约 2G),永不爆。


七、把这个全灌到 Docker + 青龙(可选:定时签到/爬虫自动化)

Docker 在 N1 上跑起来后,除了翻墙去广告,你还能跑 青龙面板——一个可视化定时任务管理器,社区有大量现成脚本(签到、监控、爬虫等)。因为你的流量经过 mihomo,青龙要访问需要”翻墙”的接口时,也天然可以走代理(青龙里配好走 N1 的 7890 即可)。

# 青龙容器(装到外置盘 /data/ql,端口 5700 只绑内网)
docker run -d --name qinglong -it --restart=always \
  -p 127.0.0.1:5700:5700 \
  -v /data/ql:/ql/data \
  -e TZ=Asia/Shanghai \
  whyour/qinglong:latest

然后用 浏览器访问 http://<N1-IP>:5700 初始化青龙,导入脚本,设置定时 cron。

安全提示:青龙面板只监听本机(127.0.0.1),不要绑到 0.0.0.0 暴露到局域网/公网,除非你用防火墙控制了访问,否则有被扫描页面的风险。

FAQ(新手最常踩的坑)

Q1:设了透明网关后,家里所有设备都走代理了吗?会不会全断网? 不会。这套透明转发规则只 -i eth0 方向,且只有把网关指到 N1 的设备才走。其它设备(手机、电视)网关还是主路由,完全不受影响。即使 N1 挂了,你用网关 .1 的设备照常上网,只有被指到 .2 的那台受影响。

Q2:为什么我只改网关,但 x.com / Facebook 打不开? 大概率是你把”代理开关”开错了:透明网关要求电脑上不要开任何系统代理/SOCKS(否则双重叠加)。确认:Mac 系统设置 → 网络 → 高级 → 代理里的 HTTP/SOCKS 全部取消勾选,只保留”网关+DNS 指 192.168.1.2”。改完刷新浏览器重试。

Q3. 为什么国内的站无法上、我死也连不上? 先排除是不是走了代理:透明网关模式下,GEOSITE,cn,DIRECT 和 GEOIP,CN,DIRECT 应该让国内站直连。如果国内站也走了代理,多半是规则集没下载成功(cncidr/gfw 等 rule-provider 首次要从 GitHub 拉取,失败会 fallback)。打开 log-level: info,看 mihomo 日志里该域名命中哪条 rule;或 curl 试:

curl -s http://127.0.0.1:9090/proxies   # 看节点 aliveness

Q4. 开了透明模式后 N1 自己断网了(SSH 也连不上)? 这是误开 mihomo 的 tun.enable + auto-route 的典型症状:auto-route:true 会把 N1 自己的默认路由也接管进 TUN,把自己绕死。透明网关做 “转” 不要用 auto-route,用我们【第四步】的 iptables REDIRECT 方式(-i eth0 只管别人,不碰 N1 自己)。若已中招:SSH 到 N1(若还能进) 把 config 里 tun 段注释掉重启,或临时 systemctl stop mihomo 让路由恢复。

Q5. mihomo 启动报 listen :53: address already in use? 53 端口被系统的 systemd-resolved 占了。解法:把配置里 dns.listen 改成你网卡的具体 IP(如 '192.168.1.2:53')而不是 ':53',这样只在 N1 自己的 IP 上监听,不跟 127.0.0.53 冲突。Mac 的 DNS 填这个 IP 照样能用。

Q6. 外置盘挂载了,为什么 docker info 还显示 containerd 在 /var/lib? 因为 Docker 的 containerd 和 docker daemon 分两套 data-root。只改 docker 那一套不完整。按【第六节】把 /var/lib/containerd 软链到外置盘的 /data/containerd,重启 docker 后 docker info | grep -i root 和 df / 应看到系统盘占用降下来。

Q7. 重启 N1 后,prox 规则/iptables 就没了吗? iptables 规则是内存的,重启会丢。所以一定要把透明转发规则写进 n1-fwd.sh 并作为 mihomo.service 的 ExecStartPost(第3.5步),这样 mihomo 一启动规则自动回来。配置文件和自启服务本身用 systemd 管理,重启不会丢。

Q8. N1 只有一个网口,怎么同时”接入”和”对外”? N1 的单网口通过主路由的交换机口接到局域网,所有人共用 192.168.1.0/24 这个网段,物理上它是挂在主路由的 LAN 口下,不是独立再分网段。所以”接入”和”出口”其实是同一个口——这正是旁路由的魅力,不需要两个网口。

进阶玩法(可选)

  1. 给青龙的签到脚本走代理:青龙容器里 HTTP_PROXY 设 http://<N1-IP>:7890,需要翻墙的脚本自动走。
  2. 可视化看板:配 external-ui 或接 Clash Dashboard,网页看分流命中、切节点。
  3. 多设备共享:只要把手机/平板网关+DNS 指到 N1,它们也能享受同样透明代理(如果主路由 DHCP 全局指定 DNS=192.168.1.2 则全屋自动)。
  4. 广告更强:在 rules 顶部加 RULE-SET,reject,REJECT(用 anti-AD / oisd 等大名单),能拦更多 App 内广告。

命令速查表

用途命令
看 mihomo 状态systemctl status mihomo
重载配置sudo systemctl restart mihomo
看实时分流命中curl -s http://127.0.0.1:9090/connections | python3 -c ...(上文)
看 Nat 转发已生效sudo iptables -t nat -S PREROUTING | grep 7891
看磁盘搬迁效果df -h /、docker info | grep -i containerd

免责声明

  • 本教程仅为技术学习与自娱自乐用途,请遵守你所在地区及目标服务商的相关法律法规;“翻墙""代理”相关操作在部分司法辖区可能受限,使用者需自行判断与承担风险。
  • 教程中所有 IP、域名、命令均为示例(你的实际 IP/订阅/端口请替换),不构成任何对特定商用服务或产品的建议。
  • 自行操作可能造成数据丢失或设备变砖,请在动手前备份重要数据,Nidyad、N、N 等主机属性参数以你自己机器为准。
  • 作者不对因操作本教程导致的任何损失负责。祝玩得开心,也记得保护好你的节点与账号安全。
Tags#linux
Share
Comments

Hook this up to your favourite commenting platform — Giscus, Disqus, or your own.

Continue reading

VPS·

Oracle 免费 VPS 优化手册:1G 小内存 VPS 从 426MB 可用到 630MB 完整实战

以一台 Oracle Cloud 免费 1核/1G 小内存 VPS(跑自用代理服务)为例,讲透小内存机器的完整优化方法论:内存审计、关闭无用服务、移除 snapd、journald 限容、swappiness 调优、重启验证,以及把易失服务转成 systemd 开机自启。每一步都有真实数据对比和可复制命令

· 5 min
ai·

免费畅享DeepSeek API推荐--基元律动

折腾 AI Agent 时发现基元律动这个多模型聚合平台:一个 API Key 就能调用 DeepSeek V4、GLM 5.2、Kimi 2.7 等 12 款国产模型,兼容 OpenAI 与 Anthropic 协议,改一行 base_url 即可接入。目前邀请制注册,双方各完成一次有效 OpenSquilla 调用即可获得 68 元 Token 额度,实测够个人开发者用一阵

· 1 min