找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
广告投放联系QQ68610888广告投放联系QQ68610888
广告投放联系QQ68610888广告投放联系QQ68610888
查看: 6684|回复: 12

[小米7000] 小米BE7000 官方固件安装 tailscale 透明代理本地网络设备无感访问

[复制链接]
发表于 2025-1-23 00:52 | 显示全部楼层 |阅读模式
本帖最后由 bigold2 于 2025-3-11 23:32 编辑

背景:

软件研发背景,全干打杂工程师,多少有点专业背景

由于使用帐号限制,基于阿里云 99 ecs 自建 Headscale。

两个局域网,目前均为移动家宽 1Gbps 下行,上行 100 Mbps 左右吧。

局域网1 (Xiaomi BE 6500 Pro, CIDR:192.168.31.0/24): HPE Microserver gen10+ v2 搭建的 ESXI 中黑群晖有基于 MP + Jellyfin 的影音库。
局域网2 (Xiaomi BE 7000,CIDR:192.168.1.0/24): 一堆终端设备如下:
1. 我跟媳妇自用的苹果全家桶的 Infuse
2. Sony 电视上的Jellyfin 客户端,专门给爸妈看剧的 Nvidia Shield TV (刷机Google TV) Jellyfin 客户端
3. 爸妈小米手机上的 Synology Photos
4. 闲置 Mac mini,运行有 HA

由于各个设备都需要单独安装 Tailscale 终端,随着设备休眠重启,后台进程,连接状况并不是很稳定,尤其是老年人操作成本太高。所以想在路由器上直接运行 tailscale ,使得本地网络中的终端设备可以无感访问黑群中的服务。

局域网2中原本路由器为 AX6000,但由于本人折腾的东西过多,且之前在官方固件基础上搭建过一些上方服务,导致路由器稳定性受影响较大,不太乐意折腾软路由。。。(ax6000的固件缺少 kmod-tun,去年折腾挺久未果)

申请预算后采购了BE7000,琢磨着用 docker 来运行(当然由于docker自身的特性,还是需要 tun 模块的,不过BE 6500pro 与 7000 当前最新官方固件已经自带)

操作步骤:

1. 设备就绪
准备U盘或者移动硬盘,安装docker,参考路由器管理界面操作指南即可,安装完毕启动 Docker

固件版本:1.1.16
Docker 版本: 20.10.17

2. ssh 破解
需要破解ssh,直接在shell中通过命令行启动容器; (simpledocker 的UI界面只给了简单的参数配置,而我们需要绑定 tun 设备等等)

由于大部分 ssh 破解操作都需要降级路由器固件版本,而官方提供的工具只有windows版本。直接使用了下面这位大佬的开源脚本 xmir-patcher,还是需要一点开发基础的,毕竟大蟒蛇(python)的版本和依赖管理真的是深恶痛绝。

禁用官方docker 的安全插件; 参考 https://blog.dollcode.cn/xiaomibe7000-dockerup 进行操作


  1. # 查看文件
  2. cat /etc/config/mi_docker

  3. # 编辑文件
  4. vi /etc/config/mi_docker
  5. # 把文件中这一行 list authorization_plugins ‘opa-docker-authz’
  6. # 将引号中的内容删掉,只保留引号就可以了
  7. list authorization_plugins ''
复制代码



注意:修改后通过路由器后台跳转 simpledocker 管理界面的按钮会被禁用,所以自行记下其访问端口 http://192.168.1.1:9001

3.启动容器

1. 拉镜像比较伤感,我是本地docker 配有代理,拉取镜像后 docker save -o tailscale.tar tailscale/tailscale 保存,再从simpledocker 镜像中上传
2. 使用官方服务的,下面命令中登录相关自行修改

  1. # 1. docker 相关可执行文件在 /mnt/usb-xxxx/mi_docker/docker-binaries 目录下,嫌麻烦每次登录后可以执行一下 , 我不需要固化
  2. export PATH="/mnt/usb-3d99946d/mi_docker/docker-binaries:$PATH"

  3. # 2. 创建持久化volume
  4. docker volume create tailscale

  5. # 3. 启动容器
  6. docker run -d \
  7.   --name tailscale \
  8.   --hostname router-be7000 \
  9.   --cap-add NET_ADMIN \
  10.   --device /dev/net/tun:/dev/net/tun \
  11.   --network host \
  12.   -e TS_AUTHKEY=xxx \
  13.   -e TS_USERSPACE=false \
  14.   -e TS_AUTH_ONCE=true \
  15.   -e TS_STATE_DIR=/var/lib/tailscale \
  16.   -e TS_EXTRA_ARGS="--login-server=https://hs.xxx.cc --accept-routes" \
  17.   -v tailscale:/var/lib/tailscale \
  18.   --restart unless-stopped \
  19.   tailscale/tailscale:latest
复制代码


启动成功后可以执行在路由器宿主机环境内验证访问 tailscale 的某个主机 ip 和 其公布的子网设备ip,日志中会有因为 iptables 版本较低的报错,不过不影响基本功能的使用。
  1. health(warnable=router): error: adding [-i tailscale0 -j MARK --set-mark 0x40000/0xff0000] in v4/filter/ts-forward: running [/sbin/iptables -t filter -A ts-forward -i tailscale0 -j MARK --set-mark 0x40000/0xff0000 --wait]: exit status 1: iptables: Invalid argument. Run `dmesg' for more information.
复制代码


4. 转发规则配置

  1. # 确认一下宿主机中网络相关的配置
  2. root@XiaoQiang:~# ip route
  3. default via 10.61.128.1 dev pppoe-wan proto static
  4. 10.61.128.1 dev pppoe-wan proto kernel scope link src 10.61.164.86
  5. 172.17.0.0/16 dev br-docker proto kernel scope link src 172.17.0.1
  6. 192.168.1.0/24 dev br-lan proto kernel scope link src 192.168.1.1
  7. 192.168.32.0/24 dev br-miot proto kernel scope link src 192.168.32.1
  8. root@XiaoQiang:~# ip route show table 52
  9. 100.64.0.1 dev tailscale0
  10. 100.100.100.100 dev tailscale0
  11. 192.168.31.0/24 dev tailscale0

  12. # 允许本地网络访问 Tailscale 网络
  13. iptables -I FORWARD -i br-lan -o tailscale0 -j ACCEPT

  14. # 启用 NAT,伪装本地网络到 Tailscale 的流量
  15. iptables -t nat -I POSTROUTING -o tailscale0 -j MASQUERADE
复制代码


大功告成。

补充:

重启后docker 并未自动启动,参考 这篇帖子
自定义启动脚本中添加

  1. #!/bin/sh
  2. install() {
  3.         # Add script to system autostart docker
  4.         uci set firewall.startup_script=include
  5.         uci set firewall.startup_script.type='script'
  6.         uci set firewall.startup_script.path="/data/startup_script.sh"
  7.         uci set firewall.startup_script.enabled='1'
  8.         uci commit firewall
  9.         echo -e "\033[32m  startup_script complete. \033[0m"
  10. }
  11. uninstall() {
  12.     # Remove scripts from system autostart
  13.     uci delete firewall.startup_script
  14.     uci commit firewall
  15.     echo -e "\033[33m startup_script  has been removed. \033[0m"
  16. }

  17. startup_script() {
  18.         # Put your custom script here.
  19.         echo "Starting custom scripts..."
  20.         sed -i '/valid_mountpath() {/a return 0' /etc/init.d/mi_docker
  21.         sleep 20
  22.         /etc/init.d/mi_docker start
  23.         iptables -I FORWARD -i br-lan -o tailscale0 -j ACCEPT
  24.         iptables -t nat -I POSTROUTING -o tailscale0 -j MASQUERADE
  25. }

  26. main() {
  27.     [ -z "$1" ] && startup_script && return
  28.     case "$1" in
  29.     install)
  30.         install
  31.         ;;
  32.     uninstall)
  33.         uninstall
  34.         ;;
  35.     *)
  36.         echo -e "\033[31m Unknown parameter: $1 \033[0m"
  37.         return 1
  38.         ;;
  39.     esac
  40. }


  41. main "$@"
复制代码




只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应、玻璃心。胡乱输入灌水等操作将会被封禁ID。
发表于 2025-3-21 21:37 | 显示全部楼层
本帖最后由 mikaelson 于 2025-3-21 22:02 编辑

这工具真是解燃眉之急啊,对于mac用户。。。
不过好像用不上降级啊
1.1.17一样ssh,docker一把梭

点评

没有降级啊,就是用的上面贴的 gayhub 兄弟的脚本,不用降级  详情 回复 发表于 2025-4-27 16:33
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应、玻璃心。胡乱输入灌水等操作将会被封禁ID。
回复

使用道具 举报

发表于 2025-3-21 21:38 | 显示全部楼层
本帖最后由 mikaelson 于 2025-3-21 22:01 编辑

牛逼,比起网上千篇一律复制的,这才是真材实料啊
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应、玻璃心。胡乱输入灌水等操作将会被封禁ID。
回复

使用道具 举报

发表于 2025-3-31 17:32 | 显示全部楼层
既然都解决ssh了,为何还需要docker呢,直接在系统里面安装不是更还么。

https://blog.csdn.net/dgj8300/ar ... 1001.2014.3001.5502
我看有直接安装的
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应、玻璃心。胡乱输入灌水等操作将会被封禁ID。
回复

使用道具 举报

 楼主| 发表于 2025-4-27 16:32 | 显示全部楼层
主要是兄弟我的主要目的不是折腾路由器os,之前折腾固件存储搞废过。。。

而且这个事情本身也只是我自己 homelab 里面的一小部分,方便一下家里人。

所以宁愿省点事,既然官方固件支持docker,那就期望基于docker不管是稳定性还是隔离性尽可能好一点,路由器嘛还是希望稳一点就好了,不指望干多少事情。家里也有得是吃灰的设备跑跑ha,adguardhome 之类的
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应、玻璃心。胡乱输入灌水等操作将会被封禁ID。
回复

使用道具 举报

 楼主| 发表于 2025-4-27 16:33 | 显示全部楼层
mikaelson 发表于 2025-3-21 21:37
这工具真是解燃眉之急啊,对于mac用户。。。
不过好像用不上降级啊
1.1.17一样ssh,docker一把梭

没有降级啊,就是用的上面贴的 gayhub 兄弟的脚本,不用降级
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应、玻璃心。胡乱输入灌水等操作将会被封禁ID。
回复

使用道具 举报

发表于 2025-4-29 16:17 | 显示全部楼层
收藏备用
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应、玻璃心。胡乱输入灌水等操作将会被封禁ID。
回复

使用道具 举报

发表于 2025-4-30 15:55 | 显示全部楼层
大佬删了怎么保存
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应、玻璃心。胡乱输入灌水等操作将会被封禁ID。
回复

使用道具 举报

发表于 2025-9-8 18:36 | 显示全部楼层
我的其他设备无法访问路由子网设备   可能是我路由不是桥接光猫?
有和我一样问题的可以试试下面防火墙规则
iptables -t nat -A POSTROUTING -o br-lan -j MASQUERADE
iptables -I FORWARD -i tailscale0 -j ACCEPT
iptables -I FORWARD -o tailscale0 -j ACCEPT
iptables -t nat -I POSTROUTING -o tailscale0 -j MASQUERADE

这是我原来R1D zerotier规则  用这里也挺好使的

有没大佬知道zerotier 怎么配置吗  
我运行zerotier 完全不通 双向不通
tailscale 一次成功

点评

tailscale0 默认安装就是这个名字么  详情 回复 发表于 2026-3-31 00:58
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应、玻璃心。胡乱输入灌水等操作将会被封禁ID。
回复

使用道具 举报

发表于 2025-10-23 22:09 | 显示全部楼层
真厉害啊
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应、玻璃心。胡乱输入灌水等操作将会被封禁ID。
回复

使用道具 举报

发表于 2026-3-31 00:58 | 显示全部楼层
zakkoree 发表于 2025-9-8 18:36
我的其他设备无法访问路由子网设备   可能是我路由不是桥接光猫?
有和我一样问题的可以试试下面防火墙规则 ...

tailscale0 默认安装就是这个名字么

点评

Tailscale 和 Zerotier 都是仅需要两条规则 就可以了 # # Tailscale firewall rules iptables -I FORWARD -i tailscale0 -o br-lan -j ACCEPT iptables -I FORWARD -i br-lan -o tailscale0 -j ACCEPT #  详情 回复 发表于 2026-7-25 20:55
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应、玻璃心。胡乱输入灌水等操作将会被封禁ID。
回复

使用道具 举报

发表于 2026-7-25 20:55 | 显示全部楼层
一闪而逝 发表于 2026-3-31 00:58
tailscale0 默认安装就是这个名字么

Tailscale 和 Zerotier  都是仅需要两条规则 就可以了

  # # Tailscale firewall rules
  iptables -I FORWARD -i tailscale0 -o br-lan -j ACCEPT
  iptables -I FORWARD -i br-lan -o tailscale0 -j ACCEPT

  # Zerotier firewall rules
  # ztly5wgnrp Change the actual network card name of ZeroTier
  iptables -I FORWARD -i ztly5wgnrp -o br-lan -j ACCEPT
  iptables -I FORWARD -i br-lan -o ztly5wgnrp -j ACCEPT
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应、玻璃心。胡乱输入灌水等操作将会被封禁ID。
回复

使用道具 举报

发表于 2026-8-3 08:40 | 显示全部楼层
路由器插USB总感觉有风险,刚才看到一篇AX6000的方案感觉还不错
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应、玻璃心。胡乱输入灌水等操作将会被封禁ID。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

欢迎大家光临恩山无线论坛上一条 /2 下一条

有疑问请添加管理员QQ86788181|手机版|小黑屋|Archiver|恩山无线论坛(常州市恩山计算机开发有限公司版权所有) ( 苏ICP备05084872号 )

GMT+8, 2026-8-24 00:29

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

| 江苏省互联网有害信息举报中心 举报信箱:js12377 | @jischina.com.cn 举报电话:025-88802724 本站不良内容举报信箱:68610888@qq.com 电话:13506125623

快速回复 返回顶部 返回列表