PVE下HA访问不同网段的二级路由器小米BE6500 Pro下的只能设备设置

PVE下HA访问不同网段的二级路由器小米BE6500 Pro下的只能设备设置
软路由为PVE下的爱快,我的爱快地址是192.168.50.253,小米路由器静态IP是192.168.50.16,局域网网段为192.168.31.X,网关为192.168.31.1

  1. 在主路由(爱快)添加静态路由

    • 目标网络:192.168.31.0/24
    • 下一跳:192.168.50.16(小米路由器的WAN口IP)
    • 这样主网络(50网段)的设备可以主动访问31网段。

2、小米路由器没有防火墙设置功能所以需要开启小米路由器的SSH,使用命令让防火墙放行是50网段和31网段互通

在小米网段的电脑上访问Github的地址:https://github.com/openwrt-xiaomi/xmir-patcher

下载项目:

下载完成后解压,并进入cmd,输入命令run.bat并回车

选择2自动打补丁,会要求输入密码,密码就是你路由器密码

破解完成后就可以使用finashell进入小米路由器的shell了(用户名:root  密码:root)

PS:重启路由器后SSH会失效,需再次破解才能使用SSH。

如果你是最新的版本固件,那么就要降级到降到1.0.46版本后固化SSH后才能升级固件了

降级的方法:

一、软件准备

  1. 所需设备:一台电脑;一台小米AX3000T路由器/小米6500PRO路由器/小米BE3600路由器。
  2. 所需软件:MobaXterm、FinaShell或其他终端软件。
  3. 初始密码计算:https://miwifi.dev/ssh
  4. 路由器的stok:打开路由器的web端管理界面,输入管理员密码,从上方地址栏即可获得stok。

注:每次路由器重启,stok值都会改变。

获取ssh权限

打开cmd,在cmd中输入指令:

注意替换成你的stok

curl -X POST http://192.168.31.1/cgi-bin/luci/;stok=你的stok/api/misystem/arn_switch -d "open=1&model=1&level=%0Anvram%20set%20ssh_en%3D1%0A"
curl -X POST http://192.168.31.1/cgi-bin/luci/;stok=你的stok/api/misystem/arn_switch -d "open=1&model=1&level=%0Anvram%20commit%0A"
curl -X POST http://192.168.31.1/cgi-bin/luci/;stok=你的stok/api/misystem/arn_switch -d "open=1&model=1&level=%0Ased%20-i%20's%2Fchannel%3D.*%2Fchannel%3D%22debug%22%2Fg'%20%2Fetc%2Finit.d%2Fdropbear%0A"
curl -X POST http://192.168.31.1/cgi-bin/luci/;stok=你的stok/api/misystem/arn_switch -d "open=1&model=1&level=%0A%2Fetc%2Finit.d%2Fdropbear%20start%0A"

现在你就可以通过终端访问你的SSH了,用户名是root,密码通过https://miwifi.dev/ssh计算

访问https://miwifi.dev/ssh计算密码:

 

路由器的SN号

计算好以后登陆SSH,用户名:root 密码:你计算的密码

修改密码:

修改后的密码为:admin

nvram set ssh_en=1
nvram set telnet_en=1
nvram set uart_en=1
nvram set boot_wait=on
nvram commit
sed -i 's/channel=.*/channel="debug"/g' /etc/init.d/dropbear
/etc/init.d/dropbear restart
echo -e 'admin\nadmin' | passwd root

如果你要修改为别的密码就要修改这条命令(注册那个n别少了):

echo -e '你的密码\n你的密码' | passwd root

重启后ssh会失效,增加一个自动运行脚本来让路由器启动后就运行

#创建文件夹并进入
mkdir /data/auto_ssh && cd /data/auto_ssh
创建auto_ssh.sh文件
vi auto_ssh.sh

在auto_ssh.sh里面输入以下内容,然后按esc,然后:wq保存

#!/bin/sh

auto_ssh_dir="/data/auto_ssh"
host_key="/etc/dropbear/dropbear_rsa_host_key"
host_key_bk="${auto_ssh_dir}/dropbear_rsa_host_key"

unlock() {
    # Restore the host key.
    [ -f $host_key_bk ] && ln -sf $host_key_bk $host_key

    # Enable telnet, ssh, uart and boot_wait.
    [ "$(nvram get telnet_en)" = 0 ] && nvram set telnet_en=1 && nvram commit
    [ "$(nvram get ssh_en)" = 0 ] && nvram set ssh_en=1 && nvram commit
    [ "$(nvram get uart_en)" = 0 ] && nvram set uart_en=1 && nvram commit
    [ "$(nvram get boot_wait)" = "off" ]  && nvram set boot_wait=on && nvram commit

    [ "`uci -c /usr/share/xiaoqiang get xiaoqiang_version.version.CHANNEL`" != 'stable' ] && {
        uci -c /usr/share/xiaoqiang set xiaoqiang_version.version.CHANNEL='stable' 
        uci -c /usr/share/xiaoqiang commit xiaoqiang_version.version 2>/dev/null
    }

    channel=`/sbin/uci get /usr/share/xiaoqiang/xiaoqiang_version.version.CHANNEL`
    if [ "$channel" = "release" ]; then
        sed -i 's/channel=.*/channel="debug"/g' /etc/init.d/dropbear
    fi

    if [ -z "$(pidof dropbear)" -o -z "$(netstat -ntul | grep :22)" ]; then
        /etc/init.d/dropbear restart 2>/dev/null
        /etc/init.d/dropbear enable
    fi
}

install() {
    # unlock SSH.
    unlock

    # host key is empty, restart dropbear to generate the host key.
    [ -s $host_key ] || /etc/init.d/dropbear restart 2>/dev/null

    # Backup the host key.
    if [ ! -s $host_key_bk ]; then
        i=0
        while [ $i -le 30 ]
        do
            if [ -s $host_key ]; then
                cp -f $host_key $host_key_bk 2>/dev/null
                break
            fi
            let i++
            sleep 1s
        done
    fi

    # Add script to system autostart
    uci set firewall.auto_ssh=include
    uci set firewall.auto_ssh.type='script'
    uci set firewall.auto_ssh.path="${auto_ssh_dir}/auto_ssh.sh"
    uci set firewall.auto_ssh.enabled='1'
    uci commit firewall
    echo -e "\033[32m SSH unlock complete. \033[0m"
}

uninstall() {
    # Remove scripts from system autostart
    uci delete firewall.auto_ssh
    uci commit firewall
    echo -e "\033[33m SSH unlock has been removed. \033[0m"
}

main() {
    [ -z "$1" ] && unlock && return
    case "$1" in
    install)
        install
        ;;
    uninstall)
        uninstall
        ;;
    *)
        echo -e "\033[31m Unknown parameter: $1 \033[0m"
        return 1
        ;;
    esac
}

main "$@"

然后赋予权限并运行

chmod +x auto_ssh.sh
./auto_ssh.sh install

固化ssh

zz=$(dd if=/dev/zero bs=1 count=2 2>/dev/null) ; printf '\xA5\x5A%c%c' $zz $zz | mtd write - crash
reboot

运行完以后会自动重启,等重启完毕再连接SSH运行以下命令:

nvram set ssh_en=1
nvram set telnet_en=1
nvram set uart_en=1
nvram set boot_wait=on
nvram commit
bdata set ssh_en=1
bdata set telnet_en=1
bdata set uart_en=1
bdata set boot_wait=on
bdata commit
reboot

运行完以后还是会自动重启,等重启完毕再连接SSH运行以下命令:

mtd erase crash
reboot

等待路由器重启后,重新连接ssh,固化完成。

如果SSH不能登陆,那么就使用Telnet登陆后然后重新走一遍修改密码和运行自动开启ssh的步骤

备份防火墙配置文件(SSH中执行)如果配置错误随时恢复

# 备份到当前目录(文件名为firewall.bak,带时间戳更安全)

cp /etc/config/firewall /etc/config/firewall.bak

# 验证备份是否成功(查看文件大小是否一致)

ls -lh /etc/config/firewall*

返回有备份文件

-rw-r--r-- 1 root root 1.8K Oct 14 09:30 /etc/config/firewall

-rw-r--r-- 1 root root 1.8K Oct 14 09:30 /etc/config/firewall.bak

如果要恢复备份就用下面的命令

# 恢复原始配置

cp /etc/config/firewall.bak /etc/config/firewall

# 重启防火墙

/etc/init.d/firewall restart

SSH 登录小米路由器

# 终端执行(Windows用FinalShell/Xshell)
ssh root@192.168.50.16
# 默认账号:root  密码:admin

一键放行规则(立即生效・必做)

复制以下命令逐条执行,执行完直接双向互通:
# 1. 放行50网段 → 31网段 所有转发流量
iptables -I FORWARD -i eth1.4 -s 192.168.50.0/24 -d 192.168.31.0/24 -j ACCEPT

# 2. 放行31网段 → 50网段 回程流量(解决单向不通)
iptables -I FORWARD -o eth1.4 -s 192.168.31.0/24 -d 192.168.50.0/24 -j ACCEPT

# 3. 允许50网段ping小米LAN网关(192.168.31.1)
iptables -I INPUT -i eth1.4 -s 192.168.50.0/24 -d 192.168.31.1 -j ACCEPT

# 4. 重启防火墙,使规则生效
/etc/init.d/firewall restart

测试连通性

# 50网段设备执行
ping 192.168.31.1      # ping小米LAN网关
ping 192.168.31.xxx    # ping31网段任意设备
✅ 正常:双向 ping 通

永久生效(重启不丢失・必做)

将规则写入开机自启脚本,路由器重启后自动加载:
# 追加规则到开机脚本
cat >> /etc/rc.local <<EOF
iptables -I FORWARD -i eth1.4 -s 192.168.50.0/24 -d 192.168.31.0/24 -j ACCEPT
iptables -I FORWARD -o eth1.4 -s 192.168.31.0/24 -d 192.168.50.0/24 -j ACCEPT
iptables -I INPUT -i eth1.4 -s 192.168.50.0/24 -d 192.168.31.1 -j ACCEPT
EOF

# 赋予执行权限(关键!不加权限开机不执行)
chmod +x /etc/rc.local

# 测试脚本执行(无报错即成功)
/etc/rc.local

规范配置:UCI 防火墙规则(可选)

# 添加uci规则(适配小米OpenWrt系统)
uci add firewall rule
uci set firewall.@rule[-1].name='Allow-50-to-31'
uci set firewall.@rule[-1].src='wan'
uci set firewall.@rule[-1].dest='lan'
uci set firewall.@rule[-1].src_ip='192.168.50.0/24'
uci set firewall.@rule[-1].target='ACCEPT'
uci commit firewall
/etc/init.d/firewall restart

验证标准

  1. 50 网段 ↔ 31 网段 双向 ping 通
  2. 可跨网段访问设备后台 / 共享服务
  3. 小米路由器重启后规则不丢失
  4. iptables -L FORWARD | grep 192.168.50 能看到放行规则

常见问题排查

1. 规则不生效

  • 检查 WAN 口接口:ifconfig | grep 192.168.50.16(确认是eth1.4

2. 依旧单向通

  • 核对主路由静态路由:下一跳必须是192.168.50.16

3. 重启后失效

  • 检查rc.local权限:ls -l /etc/rc.local(需有x执行权限)

4. ping 通但无法访问服务

  • 关闭终端设备本机防火墙
本教程完全适配小米 BE6500 Pro,解决二级路由跨网段单向不通问题,无需改网段、无需关 DHCP,规则永久生效,适合家庭 / 办公多网段互通场景。

计算小米初始密码的代码(保存为HTML然后打开就可以用了):

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <title>小米路由器SSH密码计算器</title>
    <style>
        body {
            font-family: "Microsoft Yahei", Arial, sans-serif;
            max-width: 600px;
            margin: 60px auto;
            padding: 0 20px;
        }
        h1 {
            text-align: center;
            color: #2c3e50;
            font-size: 28px;
            margin-bottom: 30px;
        }
        .input-group {
            display: flex;
            margin: 15px 0;
            gap: 12px;
            align-items: center;
        }
        input[type="text"] {
            flex: 1;
            padding: 10px 14px;
            font-size: 16px;
            border: 1px solid #dcdfe6;
            border-radius: 4px;
            outline: none;
        }
        button {
            padding: 10px 22px;
            font-size: 16px;
            background-color: #ff6700;
            color: white;
            border: none;
            border-radius: 20px;
            cursor: pointer;
        }
        button:hover {
            background-color: #e65c00;
        }
    </style>
</head>
<body>
    <h1>小米路由器SSH密码计算器</h1>

    <div class="input-group">
        <input type="text" id="snInput" placeholder="请输入">
        <button onclick="calculatePassword()">计算</button>
    </div>

    <div class="input-group">
        <input type="text" id="pwdOutput" placeholder="计算结果" readonly>
        <button onclick="copyPassword()">复制</button>
    </div>

    <!-- ✅ 使用稳定 MD5 -->
    <script src="https://cdn.jsdelivr.net/npm/blueimp-md5/js/md5.min.js"></script>

    <script>
        // ✅ 正确 salt
        function getSalt(sn) {
            if (sn.includes('/')) {
                return '6d2df50a-250f-4a30-a5e6-d44fb0960aa0';
            } else {
                return 'A2E371B0-B34B-48A5-8C40-A7133F3B5D88';
            }
        }

        function calculatePassword() {
            const sn = document.getElementById('snInput').value.trim();

            if (!sn) {
                alert('请输入内容!');
                return;
            }

            const salt = getSalt(sn);

            const hash = md5(sn + salt);

            const pwd = hash.substring(0, 8);

            document.getElementById('pwdOutput').value = pwd;
        }

        function copyPassword() {
            const output = document.getElementById('pwdOutput');

            if (!output.value) {
                alert('请先计算!');
                return;
            }

            output.select();
            document.execCommand('copy');
            alert('已复制');
        }
    </script>
</body>
</html>
上一篇 MoonTV 一个开箱即用的、跨平台的影视聚合播放器!
下一篇 关于homeassistant从hacs下载巴法云配置报错500的问题