客户机接入终极方案

type
status
date
slug
summary
tags
category
icon
password
最近开始在家办公了,家里桌子很小,如果还是两台电脑中间插根网线的话,桌子会非常乱。
而且上一个方案有很多小问题:
  1. Openwrt会经常让直通的USB网卡进入DOWN的状态
  1. USB网卡有时候直接断开连接,表现是在宿主机和虚拟机都找不到这个设备
  1. 宿主机Windows偶尔会被客户组策略强制重启
问题1可以通过写脚本自动检查来重启网络解决,问题2只能靠物理重新插拔,问题3则无解。

设计方案

首先解决问题3,因为所有问题2可以靠重启解决😂。所以需要一个KVM,廉价解决方案是PiKVM,垃圾佬解决方案是玩客云。
用到KVM之后,发现了Linux USB Gadget这个玩意儿,可以模拟网卡。便有了一个大胆的想法,在Bridge这个设备上,模拟出两个USB设备,一个是键鼠,给宿主机Windows使用。一个是USB网卡,直通给虚拟机。
notion image
然后在Bridge上,将这个USB网卡与Bridge接入的虚拟机网络桥接。然后在路由器上直接将客户网段的网关指向VM的IP。
这样问题2的方案也能快速解决,只需要在Bridge上重置USB Gadget,就能起到物理重新插拔的效果。

遇到的问题

  1. Linux USB Gadget模拟的是一个多功能设备,并不是多个物理设备,没办法只选择其中一个设备直通,只能全部直通或者不直通。
  1. Bridge是要桥接的是一个无线网卡,无线网卡桥接有很多限制,也很复杂(反正就是一通操作,没搞成

最终方案

notion image
改动如下:
  1. OpenWRT换成Linux,直接用iptables,更易于排查问题,而且驱动问题好解决
  1. 配上了一个USB Wi-Fi Adapter,直通给VM用来做backup
  1. 网关改成Bridge,由Bridge来决定是走USB Net(192.168.168.101)还是走Wi-Fi(192.168.2.101)
  1. 分成两个USB Gadget,日常模拟成网卡,需要维护的时候,切换成键鼠模式,使用不同的VID/PID,避免键鼠被直通,导致Windows只能看不能操作。

Bridge的网卡配置

VM的网卡配置

当Wi-Fi断开时,在Mac上
当USB断开时,
当两条链路都通时

维护模式

关闭USB网卡模拟,开启KVMD,在Windows进行维护。
终于,现在可以把客户机和Bridge(实际上是一台Rock 5C Lite),塞在家里任何一个角落,只要其他设备连上了家里局域网,就能正常访问内网无阻。

Update

后续改动是:
  1. 设备换成Rock 3A,原因是价格便宜。
  1. KVMD采用CH9329,而不是USB Gadget。因为OneKVM只需要模拟键盘和鼠标就够了。
  1. 修改了Bridge的路由,不由netplan控制,而是交由脚本控制,每15秒ping一次VM。
    1. 如果USB线路是通的,就添加USB线路的路由。
    2. 如果无线网卡是通的,就添加无线网卡的路由。
    3. 如果都不通,就报警。
    4. 这样KVMD和USB网络就能共存,维护起来会更加方便。
  1. 在VM里面添加网络检测脚本, 每5秒检查一下WIFI,如果不通,就usbreset之后再重新netplan apply
Loading...

© XGFan 2012-2025