折腾BE7000

目标:

  1. 启动be7000的ssh并软固化(不考虑升级问题)
  2. 精细化配置ipv6防火墙,对内网特定mac的ipv6访问

针对目标1实际测试使用xmir-patcher可以解锁它的ssh.https://github.com/openwrt-xiaomi/xmir-patcher

  • 运行run.sh
  • 先使用1修改目标ip命令
  • 然后使用2命令解开ssh
  • 然后使用6命令
  • 完成后就能够ssh连接小米
  • 账号密码均为root:root,立即修改密码

软固化

    mkdir /data/auto_ssh && cd /data/auto_ssh
    curl -O https://cdn.jsdelivr.net/gh/lemoeo/AX6S@main/auto_ssh.sh
    chmod +x auto_ssh.sh
    ./auto_ssh.sh install

此部分参考https://www.right.com.cn/forum/forum.php?mod=viewthread&tid=8283638&extra=page%3D1&page=1

精细化配置ipv6防火墙,对内网特定mac的ipv6访问

默认使用cui来进行防火墙配置直接编辑文件/etc/config/firewall

以外网特定ping内网ip为例在文件中追加

config rule                 
        option name 'Allow_WAN_to_Specific_MAC_ICMPv6_Ping'
        option src 'wan'       
        option dest 'lan'
        option proto 'ipv6-icmp'
        option icmp_type 'echo-request'
        option target 'ACCEPT'
        option family 'ipv6' 
        option mac 'xx:xx:xx:xx:xx:xx'
  
/etc/init.d/firewall restart

实际测试外网ping没有问题

进行特定端口及mac地址的开放,使用Ip6tables方案

  • 网上及ai生成的方法均有问题常见问题如下
  • -m mac方案没有--mac-destination选项,而ai幻觉有
  • 使用-m u32方案,筛选数据包的字节,但给出方案都不生效,但抓包进行数据分析估计可以解决
  • 使用-d方案,用具体mac转换为ip地址后64bit,大概率是固定的,但这里给出方案有问题-d::xxxx:xxxx:xxxx:xxxx/128,这里我想匹配后64,但这里的掩码数据含义为从左侧算有多少个1所以匹配有问题,参考官方文件可以改为-d::xxxx:xxxx:xxxx:xxxx/::FFFF:FFFF:FFFF:FFFF可以满足要求

ip6tables -I FORWARD 8 \
  -i pppoe-wan -o br-lan \
  -p tcp --dport 433 \
  -m conntrack --ctstate NEW \
  -d ::xxxx:xxxx:xxxx:xxxx/0000:0000:0000:0000:ffff:ffff:ffff:ffff \
  -j ACCEPT

查看规则是否生效

ip6tables -L FORWARD -n -v --line-numbers

持久化

持久化遇到了比较多的问题,路由器下很多文件无法写入。

参考auto_ssh.sh脚本的方式,在data下新建ip6tables文件夹,建立firewall_tv.sh文件

#!/bin/sh
install() {
        # Add script to system autostart docker
        uci set firewall.startup_script=include
        uci set firewall.startup_script.type='script'
        uci set firewall.startup_script.path="/data/ip6tables/firewall_tv.sh"
        uci set firewall.startup_script.enabled='1'
        uci commit firewall
        echo -e "\033[32m  startup_script complete. \033[0m"
}
uninstall() {
    # Remove scripts from system autostart
    uci delete firewall.firewall_tv.sh
    uci commit firewall
    echo -e "\033[33m startup_script has been removed. \033[0m"
}

startup_script() {
        # Put your custom script here.
        echo "Starting custom scripts..."
        sleep 20
        ip6tables -I FORWARD 8 -i pppoe-wan -o br-lan -p tcp --dport 433 -m conntrack --ctstate NEW -d ::xxxx:xxxx:xxxx:xxxx/0000:0000:0000:0000:ffff:ffff:ffff:ffff  -j ACCEPT 2>/dev/null
}

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


main "$@"
chmod +x firewall_tv.sh
./firewall_tv.sh install

实际测试可以完成功能

目前打开了设备防火墙实际仍然禁止访问,但可以穿过路由器

后续考虑使用api将ipv6与阿里域名进行绑定,单开帖说明