引言:在 2026 年的今天,折腾 OpenWrt 的目的,无外乎魔法上网以及其他。无论是为了追求极致的“魔法上网”体验,还是为了构建家庭私有云、异地组网或是运行各类自动化脚本,OpenWrt 依然是目前最强大且灵活的开源方案。
一、 固件下载与定制安装
对于 x86 架构的软路由,直接使用官方或社区编译好的成品固件虽然省事,但往往内置了过多冗余插件。我更推荐使用 ImmortalWrt 的在线构建工具。
1.1 获取固件
访问 ImmortalWrt Firmware Selector,设备选择 Generic x86/64。版本号建议选择最新的 25.12.0-rc2,虽然 rc 为非稳定的候选版本,但是还是强烈建议大家新装 OpenWrt 使用 25.12 版。
1.2 自定义软件包
点击【自定义预安装软件包】,在输入框中添加以下常用核心组件:
luci-i18n-firewall-zh-cn luci-i18n-filebrowser-zh-cn luci-app-argon-config luci-i18n-argon-config-zh-cn luci-i18n-package-manager-zh-cn luci-i18n-ttyd-zh-cn luci-i18n-homeproxy-zh-cn luci-proto-wireguard luci-i18n-tailscale-community-zh-cn luci-i18n-vlmcsd-zh-cn
提示:虽然笔者的主力插件是 Nikki,但这里编译
homeproxy的目的是为了在系统初始化后能快速建立基础魔法环境,从而流畅地从各类源拉取后续所需的 Nikki 核心和依赖文件。你也可以根据需要,换成luci-i18n-passwall-zh-cn或者luci-app-openclash。
1.3 初始化脚本配置
点击【首次启动时运行的脚本(uci-defaults)】右下角的设置齿轮。为了避免与光猫默认 IP 冲突,强烈建议修改 LAN 口地址。在脚本中找到或添加:
lan_ip_address="192.168.2.1/24"
最后选择下载 COMBINED-EFI (EXT4) 镜像进行安装。
二、 OpenWrt 基础网络设置
2.1 接口与上网设置
- 拨号选择:如果是光猫拨号,修改 LAN 口 IP 即可;若由 OpenWrt 拨号,将 WAN 口协议改为 PPPoE,并删除 WAN6 接口(拨号成功后会自动生成虚拟的
wan_6动态 IPv6 接口)。 - 通过添加新接口直接访问光猫后台:新建一个“静态地址”协议的接口,设备选真实的 WAN 口(如
eth1),IP 填192.168.1.2,网关填192.168.1.1。并在防火墙设置中将其划入 wan 区域。 - 桥接网口:若有多个物理网口,在“设备”选项卡下的
br-lan中勾选其他空闲网口。
2.2 WireGuard 远程接入
为了安全且高速地“回家”,WireGuard 是首选:
- 添加 WG 接口,勾选开机自动连接,生成私钥与公钥,监听端口设为
51820。 - IP 地址填非冲突网段 IP(如
10.0.0.1/24),防火墙选 lan 区域。 - 添加对端(Peer),填写客户端公钥,可以生成一个预共享密钥,允许的 IP 填
10.0.0.0/24并勾选“为允许的 IP 创建路由”。 - 别忘了在防火墙通信规则中开放
51820的 UDP 端口。进入网络-防火墙-通信规则,这里可以打开特定端口或者进行转发,开放端口:协议选UDP,源区域选wan,目标区域选设备(输入),目标端口填你希望打开的端口,操作改为接受。TCP 协议同理。
2.3 DHCP、DNS 与防火墙调优
- 固定 IP:可以给 NAS 固定 IPV4 地址,在 DHCP 静态租约中,根据 NAS 的 MAC 地址绑定固定 IP,并将租约时间设为“无限”。
- DNS 优化:取消勾选“DNS 重定向”,避免干扰后续代理插件的 DNS 接管。
- 性能提升:在防火墙常规设置中,将 路由/NAT 卸载 选为“无”(在高性能软路由上,软件分载有时会影响特定插件特别是魔法上网分流的稳定性)。
- IPv6 端口转发:协议选
tcp&udp,目标区域选lan,目标地址填形如::42:c0ff:fea8:202/::ffff:ffff:ffff:ffff,后面/::ffff:ffff:ffff:ffff的内容固定,前面::42:c0ff:fea8:202改为转发目的地的完整 ipv6 地址的后 4 位 fdf6:c37d:b85a:0:42:c0ff:fea8:202、2401:7a60:2c7f:dab0:42:c0ff:fea8:202,注意多一个:,这样即便前缀变了,转发依然有效。
三、 Nikki 的安装与进阶配置
Nikki(基于 Mihomo 内核)是 2026 年最推荐的代理方案。
3.1 自动化安装
首先使用 Homeproxy 建立基础连接,然后通过 SSH 执行以下命令添加软件源:
# 添加 Nikki 官方源
wget -O - https://github.com/nikkinikki-org/OpenWrt-nikki/raw/refs/heads/main/feed.sh | ash
# 安装核心组件
# for opkg
opkg install nikki
opkg install luci-app-nikki
opkg install luci-i18n-nikki-zh-cn
# for apk
apk add nikki
apk add luci-app-nikki
apk add luci-i18n-nikki-zh-cn
3.2 运行模式推荐
在 Nikki 插件界面,建议选择默认的 Redirect + TUN 混合模式:
- 按需勾选 绕过中国大陆 IP/IPv6。
- 为防止 qbittorrent 流量走代理,需更改【要代理的 TCP/UDP 目标端口】为 常用端口。
- 配置文件:示例如下,按需更改,推荐将自建节点也整合成一个订阅,然后将其改为 base64 编码,挂在 cloudflare workers 下,
rule-providers可以访问 需要代理的 geoip/geosite 名称 查找。
# 机场订阅
proxy-providers:
fanfan:
url: "https://fanfan"
type: http
path: ./providers/fanfan.yaml
interval: 86400
health-check:
enable: true
url: https://www.gstatic.com/generate_204
interval: 300
proxy: 默认代理
linkcube:
url: "https://linkcube"
type: http
path: ./providers/linkcube.yaml
interval: 86400
health-check:
enable: true
url: https://www.gstatic.com/generate_204
interval: 300
proxy: 直连
魂魂:
url: "https://seele"
type: http
path: ./providers/hunhun.yaml
interval: 86400
health-check:
enable: true
url: https://www.gstatic.com/generate_204
interval: 300
proxy: 直连
# 节点信息
proxies:
- name: "直连"
type: direct
udp: true
# 全局配置
mixed-port: 7890
allow-lan: true
bind-address: "*"
ipv6: true
unified-delay: true
tcp-concurrent: true
log-level: warning
find-process-mode: 'off'
global-client-fingerprint: chrome
keep-alive-idle: 600
keep-alive-interval: 15
profile:
store-selected: true
store-fake-ip: true
# 控制面板
#external-controller: 0.0.0.0:9090
#secret: "428517"
#external-ui: "/etc/mihomo/ui"
#external-ui-name: zashboard
#external-ui-url: "https://github.com/Zephyruso/zashboard/archive/refs/heads/gh-pages.zip"
# 嗅探
sniffer:
enable: true
sniff:
HTTP:
ports: [80, 8080-8880]
override-destination: true
TLS:
ports: [443, 8443]
QUIC:
ports: [443, 8443]
skip-domain:
- "Mijia Cloud"
- "+.push.apple.com"
# 入站
tun:
enable: true
# system/gvisor/mixed
stack: mixed
dns-hijack: ["any:53", "tcp://any:53"]
exclude-interface:
- Tailscale
route-exclude-address:
- 100.64.0.0/10
- fd7a:115c:a1e0::/48
#使用nikki,混入全部不修改的情况,开启接口指定为nikki
#device: nikki
#使用仅内核自行修改下面三项为true
auto-route: false
auto-redirect: false
auto-detect-interface: false
# DNS模块
dns:
enable: true
cache-algorithm: arc
listen: 0.0.0.0:1053
ipv6: true
respect-rules: true
enhanced-mode: fake-ip
fake-ip-range: 198.18.0.1/16
fake-ip-filter-mode: blacklist
fake-ip-filter:
- "rule-set:fakeipfilter_domain"
default-nameserver:
- https://223.5.5.5/dns-query
proxy-server-nameserver:
- https://dns.alidns.com/dns-query
- https://doh.pub/dns-query
nameserver:
- https://dns.alidns.com/dns-query
- https://doh.pub/dns-query
proxy-groups:
- {name: 手动选择, type: select, include-all: true}
- {name: 自动选择, type: url-test, include-all: true, tolerance: 20, interval: 300, filter: "^((?!(直连)).)*$"}
- {name: 默认代理, type: select, proxies: [自动选择, 手动选择, 饭饭, 香港故转, 日本故转, 台湾故转, 狮城故转, 美国故转, 羁绊之魂, 直连]}
- {name: Google, type: select, proxies: [默认代理, 自动选择, 手动选择, 饭饭, 香港故转, 日本故转, 台湾故转, 狮城故转, 美国故转, 羁绊之魂, 直连]}
- {name: YouTube, type: select, proxies: [默认代理, 自动选择, 手动选择, 饭饭, 香港故转, 日本故转, 台湾故转, 狮城故转, 美国故转, 羁绊之魂, 直连]}
- {name: 饭饭, type: fallback, tolerance: 20, interval: 300, include-all: false, use: [fanfan]}
- {name: 香港故转, type: fallback, include-all: true, tolerance: 20, interval: 300, filter: "(?=.*(港|HK|(?i)Hong))^((?!(台|日|韩|新|深|美)).)*$"}
- {name: 日本故转, type: fallback, include-all: true, tolerance: 20, interval: 300, filter: "(?=.*(日|JP|(?i)Japan))^((?!(港|台|韩|新|美)).)*$"}
- {name: 台湾故转, type: fallback, include-all: true, interval: 300, filter: "(?=.*(台|湾|TW|(?i)Taiwan))^((?!(港|日|韩|新|美)).)*$"}
- {name: 狮城故转, type: fallback, include-all: true, tolerance: 20, interval: 300, filter: "(?=.*(新加坡|坡|狮城|SG|Singapore))^((?!(台|日|韩|深|美)).)*$"}
- {name: 美国故转, type: fallback, include-all: true, tolerance: 20, interval: 300, filter: "(?=.*(美|US|(?i)States|America))^((?!(港|台|日|韩|新)).)*$"}
- {name: 羁绊之魂, type: fallback, tolerance: 20, interval: 300, include-all: false, use: [魂魂]}
- {name: 漏网之鱼, type: select, proxies: [直连, 默认代理]}
# 规则匹配
rules:
- RULE-SET,AWAvenue-Ads,REJECT
- PROCESS-NAME,tailscale.exe,直连
- PROCESS-NAME,tailscaled.exe,直连
- RULE-SET,private_ip,直连,no-resolve
- RULE-SET,private_domain,直连
- RULE-SET,fanfan-direct,直连
- RULE-SET,synology_domain,直连
- RULE-SET,win-update_domain,直连
- DOMAIN-SUFFIX,hanime1.me,狮城故转
- DOMAIN-SUFFIX,bbs.acgrip.com,狮城故转
- DOMAIN-SUFFIX,e-hentai.org,美国故转
- DOMAIN-SUFFIX,exhentai.org,美国故转
- RULE-SET,fanfan-proxy,默认代理
- RULE-SET,telegram_domain,默认代理
- RULE-SET,telegram_ip,默认代理
- RULE-SET,github_domain,默认代理
- RULE-SET,youtube_domain,YouTube
- RULE-SET,ai,Google
- RULE-SET,google_domain,Google
- RULE-SET,google_ip,Google
- RULE-SET,onedrive_domain,默认代理
- RULE-SET,steam@cn_domain,直连
- RULE-SET,steam_domain,默认代理
- RULE-SET,gfw_domain,默认代理
- RULE-SET,geolocation-!cn,默认代理
- RULE-SET,cn_domain,直连
- RULE-SET,cn_ip,直连
- MATCH,漏网之鱼,默认代理
# 规则集
## type:可选http/file/inline behavior:可选domain/ipcidr/classical format:可选yaml/text/mrs
rule-anchor:
ip: &ip {type: http, interval: 86400, behavior: ipcidr, format: mrs}
domain: &domain {type: http, interval: 86400, behavior: domain, format: mrs}
class: &class {type: http, interval: 86400, behavior: classical, format: text}
yaml: &yaml {type: http, interval: 86400, behavior: classical, format: yaml}
rule-providers:
fakeipfilter_domain: {<<: *domain, url: "https://raw.githubusercontent.com/wwqgtxx/clash-rules/release/fakeip-filter.mrs"}
AWAvenue-Ads: { <<: *domain, url: "https://raw.githubusercontent.com/TG-Twilight/AWAvenue-Ads-Rule/main/Filters/AWAvenue-Ads-Rule-Clash.mrs"}
fanfan-direct: { <<: *yaml, url: "https://raw.githubusercontent.com/sirongzi/elftime/main/direct.yaml"}
fanfan-proxy: { <<: *yaml, url: "https://raw.githubusercontent.com/sirongzi/elftime/main/proxy.yaml"}
private_domain: { <<: *domain, url: "https://raw.githubusercontent.com/MetaCubeX/meta-rules-dat/meta/geo/geosite/private.mrs"}
private_ip: {<<: *ip, url: "https://raw.githubusercontent.com/MetaCubeX/meta-rules-dat/meta/geo/geoip/private.mrs"}
synology_domain: { <<: *domain, url: "https://raw.githubusercontent.com/MetaCubeX/meta-rules-dat/meta/geo/geosite/synology.mrs"}
win-update_domain: { <<: *domain, url: "https://raw.githubusercontent.com/MetaCubeX/meta-rules-dat/meta/geo/geosite/win-update.mrs"}
geolocation-!cn: { <<: *domain, url: "https://raw.githubusercontent.com/MetaCubeX/meta-rules-dat/meta/geo/geosite/geolocation-!cn.mrs"}
cn_domain: { <<: *domain, url: "https://raw.githubusercontent.com/MetaCubeX/meta-rules-dat/meta/geo/geosite/cn.mrs"}
cn_ip: { <<: *ip, url: "https://raw.githubusercontent.com/MetaCubeX/meta-rules-dat/meta/geo/geoip/cn.mrs"}
telegram_domain: { <<: *domain, url: "https://raw.githubusercontent.com/MetaCubeX/meta-rules-dat/meta/geo/geosite/telegram.mrs"}
telegram_ip: { <<: *ip, url: "https://raw.githubusercontent.com/MetaCubeX/meta-rules-dat/meta/geo/geoip/telegram.mrs"}
github_domain: { <<: *domain, url: "https://raw.githubusercontent.com/MetaCubeX/meta-rules-dat/meta/geo/geosite/github.mrs"}
youtube_domain: { <<: *domain, url: "https://raw.githubusercontent.com/MetaCubeX/meta-rules-dat/meta/geo/geosite/youtube.mrs"}
google_domain: { <<: *domain, url: "https://raw.githubusercontent.com/MetaCubeX/meta-rules-dat/meta/geo/geosite/google.mrs"}
google_ip: { <<: *ip, url: "https://raw.githubusercontent.com/MetaCubeX/meta-rules-dat/meta/geo/geoip/google.mrs"}
ai: { <<: *domain, url: "https://raw.githubusercontent.com/MetaCubeX/meta-rules-dat/meta/geo/geosite/category-ai-!cn.mrs" }
gfw_domain: { <<: *domain, url: "https://raw.githubusercontent.com/MetaCubeX/meta-rules-dat/meta/geo/geosite/gfw.mrs" }
onedrive_domain: { <<: *domain, url: "https://raw.githubusercontent.com/MetaCubeX/meta-rules-dat/meta/geo/geosite/onedrive.mrs"}
steam_domain: { <<: *domain, url: "https://raw.githubusercontent.com/MetaCubeX/meta-rules-dat/meta/geo/geosite/steam.mrs"}
steam@cn_domain: { <<: *domain, url: "https://raw.githubusercontent.com/MetaCubeX/meta-rules-dat/meta/geo/geosite/steam@cn.mrs"}
四、 使用 Lucky 实现动态域名、反向代理与 SSL 自动化
对于有公网 IP 的用户,Lucky 是管理外部访问的最佳工具。
从 Lucky 项目地址 下载对应的 .apk 包,如 lucky-2.27.2-r1_x86_64.apk、luci-app-lucky-2.2.2-r1_x86_64.apk、luci-i18n-lucky-zh-cn-25.051.13443.e78d498_x86_64.apk。执行安装命令时,务必带上允许不受信任源的参数:
apk add --allow-untrusted *.apk
五、 Tailscale:无公网环境的终极救星
对于没有公网 IP 或光猫防火墙无法打开的情况,Tailscale 是最稳健的补救方案。
- 登录账号:在 OpenWrt 的 Tailscale 插件页登录并授权。
- 基础设置:
- 勾选 接受路由 (接受远程设备访问)。
- 在 通告路由 中选择本设备的局域网段(让远程设备能访问你,如
192.168.2.0/24)。 - 点击 自动配置防火墙 (打通防火墙转发)。
- 云端授权:登录 Tailscale Admin Console,在设备设置中点击
Edit route settings,手动开启子网路由(Subnet routes)。 - 注意点:如果同时使用了 Nikki,务必在 Tailscale 设置中勾选 “禁用 MagicDNS”,否则会导致内网解析冲突,出现网页无法打开的情况。
结语
完成上述配置后,你可以进入“网络-网络诊断”测试三项连通性。如果一切正常,你的 OpenWrt 战机就已经准备就绪。下一步,你可以尝试重启后将系统日志发给 AI 助手(如 Gemini)进行深度诊断,确保没有任何潜在的溢出或报错。
PS:等我研究研究,后面有空再出个 homeproxy 的进阶配置技巧吧~
喜欢的话,留下你的评论吧~