V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
beyondstars
V2EX  ›  宽带症候群

一种把 5G 蜂窝数据网络接入家庭局域网的方式

  •  
  •   beyondstars · 2023-12-11 21:34:25 +08:00 · 3438 次点击
    这是一个创建于 382 天前的主题,其中的信息可能已经有所发展或是发生改变。

    以下是 5G 终端接入家庭局域网的示意图:

    img

    动机是一次手机测速过程中发现 5G 蜂窝网络约有 500Mbps 的速度,于是希望找到一种方式把蜂窝网络接入到家庭局域网,并且提供一种能够让家庭局域网的其它上网设备按需访问蜂窝网络的方式。

    以下是大致思路或步骤:

    在 Linux 上可以通过 usbmuxd 使操作系统访问到 iPhone 的 USB 个人热点,结合 kernel 的 ipheth 模块,iPhone 连接好之后系统会自动创建一个对应的虚拟网卡(可通过 ip link 命令查看,一般是 enx 开头的),可以通过 dhclient -v <网卡名称> 命令为其申请 IP 地址,之后 iPhone 应该会显示热点已处于被连接的状态。确保 iPhone 的个人热点功能已打开,如果 DHCP lease 申请失败,愿意继续尝试的可以手动还原 iPhone 的网络设置并重启后再试。

    这时可以验证这块 ipheth 网卡能 ping 通因特网上的其它主机,例如:ping -I enx5204 www.baidu.com,在某些运营商环境下这块网卡也会被分配到公网 IPv6 地址。如果这里失败了先回到第一步或者放弃。

    经过上述步骤我们就已经成功把 iPhone 连接到了示意图中的 server 角色,并且 server 已经能借助于 usbmuxd 和 ipheth 软件功能访问到 iPhone 的蜂窝网络。

    接下来要解决的是如何让局域网中的其它设备也能按需地使用这个蜂窝网络,可以在 server 上建立一个隧道端点,例如 Wireguard 、IPIP ,或者 VXLAN 等,然后局域网中的上网设备默认用有线宽带网络(示意图中的 ISP1 ),当需要使用蜂窝网络时,通过隧道连接到 server 。

    示意图中列举的例子是 Wireguard 方案,客户端通过 Wireguard 连接到服务端之后,手动设定 wg0 网卡的 IP 地址例如 10.0.1.101 ,然后在 server 上进行以下关键配置:

    # 启动 IP 封包转发功能,否则 kernel 会丢弃不是自己的包
    sysctl -w net.ipv4.ip_forward=1
    
    # 策略路由,根据源地址决定下一跳是哪个
    ip rule add from 10.0.1.101/32 table 101
    ip route add default via 172.16.10.1 dev enx5204 table 101
    
    # 对 outgoing 流量进行 snat ,否则收不到回包。
    iptables -t nat -A POSTROUTING -s 10.0.1.0/24 -j MASQUERADE
    

    在客户端上我们可以通过 curl 命令测试,假设它的 eth0 网卡接的是 ISP1 的有线宽带,wg0 网卡是连接到 server 的隧道端点,那么以下命令应该会输出不同的 IP:

    curl --interface eth0 ifconfig.me  # 应当回显自己在 ISP1 的 IP 地址
    curl --interface wg0 ifconfig.me  # 应当回显自己在 ISP2 (也就是蜂窝网络的 ISP )的 IP 地址
    

    那么接下来客户端就可以通过这个 wg0 网卡来按需使用蜂窝网络。

    第 1 条附言  ·  2023-12-15 00:08:50 +08:00
    最近新购置了一个 5G CPE (带 LAN 口),这种方式更加适合把 5G 接入家庭局域网,原来的这种方式其实是为了把闲置不用的手机利用起来。

    另外如果让手机直接开热点的话,它的热点可能会和已有的 WiFi 造成干扰,我对 WiFi 不是很了解,不确定是否有一种自动避让的机制来确保同一环境下同时开启的路由器 WiFi 和手机热点两者之间只产生很小的冲突。
    27 条回复    2023-12-17 14:51:39 +08:00
    fan88
        1
    fan88  
       2023-12-11 21:51:35 +08:00   ❤️ 4
    搞复杂了,兄弟。
    华为 5G CPE ,直接解决您的需求。
    exiaohao
        2
    exiaohao  
       2023-12-11 22:02:48 +08:00
    FWA ( Fixed Wireless Access )了解一下
    核心部件如 1 楼,买一个 CPE 就行了
    Donaldo
        3
    Donaldo  
       2023-12-11 23:11:11 +08:00
    如果路由器是扩展性比较好的 linux 设备的话(例如 openwrt ),可以直接接在路由器上部署 usbmuxd ,省去服务器和 wireguard 。
    yhrzpm
        4
    yhrzpm  
       2023-12-11 23:43:50 +08:00
    买个随身 wifi 接到 op ,用 mwan3 做主备就行吧
    mantouboji
        5
    mantouboji  
       2023-12-11 23:52:30 +08:00
    以为自己有什么重大发现之前最好先去淘宝和咸鱼搜索一番。
    tianxin
        6
    tianxin  
       2023-12-12 00:02:56 +08:00 via Android
    流量不要钱?
    yulihao
        7
    yulihao  
       2023-12-12 01:46:18 +08:00
    这不是一个 CPE 搞定的事情么,现在紫光平台的 5G CPE 几乎是 300 多了吧(好像)
    另外别迷信 5G ,容易受到环境影响的,不稳定
    flynaj
        8
    flynaj  
       2023-12-12 01:49:03 +08:00 via Android
    老哥估计没有用过 Windows+Android ,插上线打开 USB 共享就行,或者打开 WiFi 热点。openwrt 下面 安装 kmod-usb-net-rndis 打开 USB 共享,配置接口路由表就可以。
    musi
        9
    musi  
       2023-12-12 08:37:39 +08:00
    不理解的是在有宽带的情况下什么场景会用到蜂窝网络
    TESTFLIGHT2021
        10
    TESTFLIGHT2021  
       2023-12-12 08:45:14 +08:00
    没必要 随便一个光纤宽带都秒杀 5G 4G
    yolee599
        11
    yolee599  
       2023-12-12 08:51:04 +08:00 via Android
    5G 费用那么贵,划算吗?
    my2492
        12
    my2492  
       2023-12-12 09:10:46 +08:00
    为什么不在软路由上插一个 5G 模组呢?这样无论是路由的功能,还是接入方式,都解决了
    bt7vip
        13
    bt7vip  
       2023-12-12 10:21:26 +08:00 via Android
    蜂窝可以作为宽带接入使用,用的平板 4G 能跑 50M 带宽,没拉宽带。
    playingangel
        14
    playingangel  
       2023-12-12 12:24:46 +08:00 via iPhone
    @yolee599 有这类想法的人有可能手里面有不限量套餐,套了各种 bug 可以实现不限速不限量,把他当宽带用是可以的
    Donaldo
        15
    Donaldo  
       2023-12-12 13:02:00 +08:00
    @yolee599 #11 29 块一个月 200 多 g ,我这速率能跑到下载 600mbps 上传 80mbps ,相当超值了。
    zer
        16
    zer  
       2023-12-12 13:49:01 +08:00
    做个备用可以玩一玩,我自己也搞了个二级路由插了个 4G 网卡,专门解决家里 ESXI 里的软路由挂了的时候,能有个原创重启恢复的入口
    xinJang
        17
    xinJang  
       2023-12-12 15:23:37 +08:00
    一个 cpe 就解决的事情
    Conantv2
        18
    Conantv2  
       2023-12-12 19:14:26 +08:00
    用 openwrt ,在无线那里连上手机热点,就多一个网络了
    Fred0410
        19
    Fred0410  
       2023-12-12 22:09:01 +08:00
    虽然我用不到,但我觉得这种实现方式很好。
    chancat
        20
    chancat  
       2023-12-13 03:21:37 +08:00 via Android
    rndis ,usb 共享网络, 以太网共享网络
    beyondstars
        21
    beyondstars  
    OP
       2023-12-15 00:47:02 +08:00
    @fan88 #1 如果没有 CPE 的话只用手机做这件事的确显得复杂,但是当时好没有选好 CPE ,又刚好有闲置的手机,也算是一种娱乐吧。
    beyondstars
        22
    beyondstars  
    OP
       2023-12-15 00:52:47 +08:00
    @my2492 #12 有时间我会研究下 ,之前没太接触过,感觉这种东西可能更加偏底层(更接近硬件)?评论区很多人提到 CPE ,这个我之前也听说过,我感觉 CPE 的话可能算是 5G 模组加天线加功率放大器加以太网 NIC 加路由交换模块……
    beyondstars
        23
    beyondstars  
    OP
       2023-12-15 00:55:15 +08:00
    @zer #16 是的,有点类似于一种 带外管理 的思路,用一个专门的网络来管理计算/网络设备。
    beyondstars
        24
    beyondstars  
    OP
       2023-12-15 01:12:48 +08:00
    @mantouboji #5 哈哈 大哥你过奖啦 我可没说这是什么重大发现,另外咸鱼和淘宝大家都知道吧(包括我),用业余时间折腾一下闲置手机,再把过程分享出来也是有意义的,所以你驳斥的点是什么呢?
    beyondstars
        25
    beyondstars  
    OP
       2023-12-15 01:29:18 +08:00
    @flynaj #8 用过 mac, raspberrypi 加 android, 不过手头上没有 5g 的 android, 当时测的速度不理想,就不继续折腾了。其实 android 也好 iphone 也好也就是个驱动程序的区别。
    flynaj
        26
    flynaj  
       2023-12-15 11:01:15 +08:00 via Android
    @beyondstars Windows 已经自带驱动,任何一个 Android 手机都可以直接用。
    Cassius
        27
    Cassius  
       2023-12-17 14:51:39 +08:00 via Android
    不是路由器直接接个手机就完事了么。。。
    华硕你开双 wan 模式就有第二 wan 设置了。
    手机 usb 共享网络,路由设置 usb 就完事了
    需要规则单独起一条就行了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2700 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 20ms · UTC 04:06 · PVG 12:06 · LAX 20:06 · JFK 23:06
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.