init
This commit is contained in:
@@ -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.cn(kmods 源 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
|
||||
}
|
||||
@@ -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'
|
||||
|
||||
@@ -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
|
||||
Reference in New Issue
Block a user