50 lines
1.7 KiB
Bash
50 lines
1.7 KiB
Bash
#!/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
|
|
}
|