This commit is contained in:
zhongluofeng
2026-08-21 18:28:33 +08:00
commit 9e478f1591
76 changed files with 27707 additions and 0 deletions
@@ -0,0 +1 @@
pcie_mhi mhi_mbim_enabled=1
@@ -0,0 +1,57 @@
# 多 WAN 配置说明(eth1 走 5G / eth0 走宽带,双出口)
> 日期:2026-08-19
> 目标:istoreos 上,eth0 走宽带(管理+SSH),eth1+5G 专门给主路由当 wan2 备份上游
## 架构
```
主路由 (wan1=宽带优先, wan2=5G备份)
├── LAN口 → istoreos eth0 = 192.168.110.200/24 (静态) 走宽带, 管理+SSH
└── wan2口 = 192.168.200.2/24, 网关 192.168.200.1
└── istoreos eth1 → br-lan = 192.168.200.1/24 (5G NAT出口)
└── 5G rmnet_mhi0.1 (MBIM拨号, 动态IP) → 主路由wan2备份
```
- **istoreos 自身流量**(从 eth0 发出)→ 走宽带(默认路由 110.1)
- **来自 eth1/192.168.200.x 网段**(即主路由 wan2 侧)→ 走 5G(策略路由表 200)
## 关键配置文件(本目录)
| 文件 | 部署到 istoreos | 作用 |
|---|---|---|
| `network.txt` | `/etc/config/network` | eth0 静态 110.200、eth1/br-lan 200.1 |
| `init.d_wan5g-route` | `/etc/init.d/wan5g-route`(enable) | 策略路由表200 + NAT,开机执行 S96 |
| `init.d_modem5g` | `/etc/init.d/modem5g`(enable) | MBIM 拨号自启 S95 |
| `90-pcie_mhi.txt` | `/etc/modules.d/90-pcie_mhi` | 驱动 MBIM 模式 mhi_mbim_enabled=1 |
| `rc.local` | `/etc/rc.local` | mhi_q 绑定修复(重启失联兜底) |
## 重启后自启顺序
1. `S95modem5g`:等待 /dev/mhi_MBIM → quectel-CM 拨号 wonet
2. `rc.local`MHI 绑定修复(兜底)
3. `S96wan5g-route`:等待 rmnet_mhi0.1 有 IP → 加策略路由 + NAT
### wan5g-route 核心命令(可手动执行)
```bash
grep -q "wan5g" /etc/iproute2/rt_tables || echo "200 wan5g" >> /etc/iproute2/rt_tables
sysctl -w net.ipv4.ip_forward=1
# 等待 rmnet 有 IP 后:
ip rule del from 192.168.200.0/24 lookup wan5g 2>/dev/null
ip rule add from 192.168.200.0/24 lookup wan5g pref 100
ip route replace default dev rmnet_mhi0.1 table 200
iptables -t nat -C POSTROUTING -s 192.168.200.0/24 -o rmnet_mhi0.1 -j MASQUERADE 2>/dev/null || \
iptables -t nat -A POSTROUTING -s 192.168.200.0/24 -o rmnet_mhi0.1 -j MASQUERADE
```
## 验证
```bash
# 模拟主路由 wan2 侧流量走 5G(源 200.x 网段)
ip addr add 192.168.200.2/24 dev br-lan
ping -c 3 -W 3 -I 192.168.200.2 223.5.5.5 # 应通, 延迟高(走5G)
ip addr del 192.168.200.2/24 dev br-lan
# 对比管理流量走宽带
ping -c 2 -W 2 -I 192.168.110.200 223.5.5.5 # 应通, 延迟低(走宽带)
```
## 备注
- **mwan3 已安装**(2.11.16) + luci-app-mwan3,但**未启用**。当前用手写策略路由(更贴合 5G 动态 IP)。如需 wan1/wan2 真负载均衡可后续启用 mwan3。
- 5G 每次拨号 IP 动态,istoreos 默认路由始终走宽带,5G 只服务 eth1(200 网段)。
- istoreos 软件源:mirrors.cernet.edu.cnkmods 源 curl 22 失败,但不影响纯脚本包安装)。
- 备份:原 `/etc/config/network`eth0 曾 DHCP 拿 110.135)可回滚。
@@ -0,0 +1,29 @@
#!/bin/sh /etc/rc.common
# RM520N-GL PCIe MBIM 拨号自启 (2026-08-19)
# 依赖: /etc/rc.local 的 mhi_q 绑定修复先跑, /dev/mhi_MBIM 出现后拨号
START=95
STOP=15
start() {
echo "modem5g: 等待 /dev/mhi_MBIM ..."
local i=0
while [ $i -lt 30 ]; do
[ -c /dev/mhi_MBIM ] && break
sleep 2
i=$((i+1))
done
if [ ! -c /dev/mhi_MBIM ]; then
echo "modem5g: /dev/mhi_MBIM 未出现, 放弃拨号"
return 1
fi
echo "modem5g: 开始 MBIM 拨号 (wonet)"
start-stop-daemon -S -b -m -p /var/run/quectel_cm.pid \
-x /usr/bin/quectel-CM -- -s wonet -f /tmp/quectel_cm.log
echo "modem5g: 已启动 quectel-CM"
}
stop() {
echo "modem5g: 停止拨号"
start-stop-daemon -K -p /var/run/quectel_cm.pid 2>/dev/null
return 0
}
@@ -0,0 +1,49 @@
#!/bin/sh /etc/rc.common
# 5G(rmnet_mhi0.1) 作为 eth1/192.168.200.x 的出口 (2026-08-19)
# 让主路由 wan2 的流量经 eth1 -> 5G 上网; eth0 管理流量走宽带
# 依赖: S95modem5g 先拨号, rmnet_mhi0.1 有 IP
START=96
STOP=14
setup() {
# 确保路由表定义
grep -q "wan5g" /etc/iproute2/rt_tables 2>/dev/null || echo "200 wan5g" >> /etc/iproute2/rt_tables
# 确保 ip_forward
sysctl -w net.ipv4.ip_forward=1 >/dev/null 2>&1
# 等待 rmnet_mhi0.1 有 IP (拨号需完成)
local i=0
local rmnet_ip=""
while [ $i -lt 60 ]; do
rmnet_ip=$(ip -4 addr show rmnet_mhi0.1 2>/dev/null | sed -n "s/.*inet \([0-9.]*\)\/.*/\1/p" | head -1)
[ -n "$rmnet_ip" ] && break
sleep 2
i=$((i+1))
done
[ -z "$rmnet_ip" ] && { echo "wan5g-route: rmnet_mhi0.1 无IP, 5G未拨号"; return 1; }
echo "wan5g-route: rmnet_mhi0.1 = $rmnet_ip"
# 策略规则 (幂等)
ip rule del from 192.168.200.0/24 lookup wan5g 2>/dev/null
ip rule add from 192.168.200.0/24 lookup wan5g pref 100 2>/dev/null
# 5G 默认路由填入表200
ip route replace default dev rmnet_mhi0.1 table 200 2>/dev/null
# NAT: 200网段 -> 5G出口
iptables -t nat -C POSTROUTING -s 192.168.200.0/24 -o rmnet_mhi0.1 -j MASQUERADE 2>/dev/null || \
iptables -t nat -A POSTROUTING -s 192.168.200.0/24 -o rmnet_mhi0.1 -j MASQUERADE
echo "wan5g-route: 策略路由+NAT 就绪"
}
start() { setup; }
reload() { setup; }
restart() { setup; }
stop() {
ip rule del from 192.168.200.0/24 lookup wan5g 2>/dev/null
ip route del default table 200 2>/dev/null
iptables -t nat -D POSTROUTING -s 192.168.200.0/24 -o rmnet_mhi0.1 -j MASQUERADE 2>/dev/null
return 0
}
+34
View File
@@ -0,0 +1,34 @@
config interface 'loopback'
option device 'lo'
option proto 'static'
option ipaddr '127.0.0.1'
option netmask '255.0.0.0'
config globals 'globals'
option ula_prefix 'fdcf:8956:3e66::/48'
config interface 'wan'
option device 'eth0'
option proto 'static'
option ipaddr '192.168.110.200'
option netmask '255.255.255.0'
option gateway '192.168.110.1'
option dns '223.5.5.5'
config interface 'wan6'
option device 'eth0'
option proto 'dhcpv6'
config device
option name 'br-lan'
option type 'bridge'
list ports 'eth1'
config interface 'lan'
option device 'br-lan'
option proto 'static'
option ipaddr '192.168.200.1'
option netmask '255.255.255.0'
option ip6assign '60'
+12
View File
@@ -0,0 +1,12 @@
# Put your custom commands here that should be executed once
# the system init finished. By default this file does nothing.
# ===== RM520N-GL 说明 (2026-08-20 更新) =====
# pcie_mhi 驱动由 /etc/modules.d/90-pcie_mhi 开机自动加载(mhi_mbim_enabled=1)。
# 原生流程即可自启拨号(S95modem5g 等待 /dev/mhi_MBIM 后起 quectel-CM)。
# 无需在此手动 bind mhi_q —— 手动强绑会抢设备导致 pcie_mhi 失联(SYS_ERR)。
# 自启链路: 90-pcie_mhi -> S95modem5g(拨号) -> S96wan5g-route(策略路由+NAT)
# 诊断: dmesg | grep -iE "mhi|pcie_mhi"; ls /dev/mhi_*
# 故障处理: 模块失联无 /dev/mhi_DUN 时, 先断电重启飞牛; 仍无效再:
# echo 0000:00:0a.0 > /sys/bus/pci/drivers/mhi_q/bind # 临时唤醒
exit 0