迈威路由器配置

  • ~4.41K 字
  1. 1、账号密码
  2. 2、OpenVPN配置
    1. 2.1、拆分配置文件 client.ovpn
    2. 2.2、网页配置
    3. 2.3、终端修改
      1. 2.3.1、修改openvpn配置文件
      2. 2.3.2、修改/etc/config/network
      3. 2.3.3、修改/etc/init.d/network文件
    4. 2.4 、自动检测并添加路由脚本
    5. 2.5 、自动重启恢复脚本

1、账号密码

| 用户名 | welin |
| 密码 | M@!we1!n0S |

M@!we1!n0S

2、OpenVPN配置

2.1、拆分配置文件 client.ovpn

2.2、网页配置

2.3、终端修改

2.3.1、修改openvpn配置文件

vi /etc/config/openvpn

删除 option comp_lzo ‘no’ 并添加 option reneg_sec ‘0’

option reneg_sec '0'

2.3.2、修改/etc/config/network

vi /etc/config/network

找到 config interface ‘jk’
option proto ‘tun’
这两行,并在后面加上

option ifname 'tun-jk'

2.3.3、修改/etc/init.d/network文件

vi /etc/init.d/network

将 #[ -x “/etc/init.d/ipsec” ] && /etc/init.d/ipsec restart

修改为(注意删去前面的#号)

[ -x "/etc/init.d/openvpn" ] && /etc/init.d/openvpn restart

2.4 、自动检测并添加路由脚本

创建addroute.sh文件

vi addroute.sh
脚本:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
#!/bin/bash



# 目标 IP 和设备

TARGET_IP="120.55.44.29"

DEVICE="wwan0"



# 检查路由是否存在

if ip route show | grep -q "^$TARGET_IP dev $DEVICE\>"; then

echo "路由已存在:$TARGET_IP dev $DEVICE,无需操作。"

else

echo "路由不存在,正在添加..."

ip route add $TARGET_IP dev $DEVICE

echo "路由添加完成。"

fi



TARGET_IP2="202.120.2.101"

DEVICE="wwan0"

if ip route show | grep -q "^$TARGET_IP2 dev $DEVICE\>"; then

echo "路由已存在:$TARGET_IP2 dev $DEVICE,无需操作。"

else

echo "路由不存在,正在添加..."

ip route add $TARGET_IP2 dev $DEVICE

echo "路由添加完成。"

fi





TARGET_IP3="223.5.5.5"

DEVICE="wwan0"



if ip route show | grep -q "^$TARGET_IP3 dev $DEVICE\>"; then

echo "路由已存在:$TARGET_IP3 dev $DEVICE,无需操作。"

else

echo "路由不存在,正在添加..."

ip route add $TARGET_IP3 dev $DEVICE

echo "路由添加完成。"

fi

2.5 、自动重启恢复脚本

创建network_monitor.sh文件

vi network_monitor.sh
脚本:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
#!/bin/sh

export PATH=/bin:/sbin:/usr/bin:/usr/sbin

LOG_FILE="/root/pinglog.log"
PING_COUNT=3
PING_TIMEOUT=2
REBOOT_FLAG="/tmp/reboot_scheduled"

# 重启的最小 uptime 阈值(秒),例如 300 秒 = 5 分钟
MIN_UPTIME_FOR_REBOOT=300

log_msg() {
echo "$(date '+%Y-%m-%d %H:%M:%S') - $1" >> "$LOG_FILE"
}

get_uptime() {
cat /proc/uptime | awk '{print int($1)}'
}

check_log_size() {
if [ ! -f "$LOG_FILE" ]; then
touch "$LOG_FILE"
return
fi
size=$(wc -c < "$LOG_FILE" 2>/dev/null)
if [ -n "$size" ] && [ "$size" -gt 2097152 ]; then
tail -n 1000 "$LOG_FILE" > "${LOG_FILE}.tmp"
mv "${LOG_FILE}.tmp" "$LOG_FILE"
log_msg "日志文件超过 2MB,已清理(保留最后 1000 行)。"
fi
}

handle_reboot() {
# 关键:防止刚开机网络未就绪时误重启
uptime_sec=$(get_uptime)
if [ "$uptime_sec" -lt "$MIN_UPTIME_FOR_REBOOT" ]; then
log_msg "223.5.5.5 不可达,但系统已运行时间 ${uptime_sec} 秒 < ${MIN_UPTIME_FOR_REBOOT} 秒,认为是网络尚未恢复,跳过重启。"
return 1 # 返回非0,表示不进行重启
fi

# 原有的防重复调度逻辑
if [ -f "$REBOOT_FLAG" ]; then
now=$(date +%s)
file_time=$(stat -c %Y "$REBOOT_FLAG" 2>/dev/null)
if [ -n "$file_time" ] && [ $((now - file_time)) -lt 300 ]; then
log_msg "已有重启计划(5 分钟内),退出脚本。"
exit 0
else
rm -f "$REBOOT_FLAG"
fi
fi

touch "$REBOOT_FLAG"
log_msg "223.5.5.5 不可达,将在 5 分钟后重启系统。"
(sleep 300; rm -f "$REBOOT_FLAG"; reboot) &
exit 0
}

main() {
if ping -c $PING_COUNT -W $PING_TIMEOUT 223.5.5.5 >/dev/null 2>&1; then
log_msg "223.5.5.5 可达。"

if ping -c $PING_COUNT -W $PING_TIMEOUT 10.201.11.108 >/dev/null 2>&1; then
log_msg "10.201.11.108 可达。"
else
log_msg "10.201.11.108 不通,将重启 openvpn。"
/etc/init.d/openvpn restart >> "$LOG_FILE" 2>&1
log_msg "openvpn 重启执行完成。"
fi

check_log_size
else
log_msg "223.5.5.5 不可达,准备处理重启(检查 uptime)。"
handle_reboot
# 如果 handle_reboot 因为 uptime 不足而返回,则脚本正常结束,不会重启
fi
}

main