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

2023-12-11 21:34:25 +08:00
 beyondstars

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

动机是一次手机测速过程中发现 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 网卡来按需使用蜂窝网络。

3411 次点击
所在节点    宽带症候群
27 条回复
fan88
2023-12-11 21:51:35 +08:00
搞复杂了,兄弟。
华为 5G CPE ,直接解决您的需求。
exiaohao
2023-12-11 22:02:48 +08:00
FWA ( Fixed Wireless Access )了解一下
核心部件如 1 楼,买一个 CPE 就行了
Donaldo
2023-12-11 23:11:11 +08:00
如果路由器是扩展性比较好的 linux 设备的话(例如 openwrt ),可以直接接在路由器上部署 usbmuxd ,省去服务器和 wireguard 。
yhrzpm
2023-12-11 23:43:50 +08:00
买个随身 wifi 接到 op ,用 mwan3 做主备就行吧
mantouboji
2023-12-11 23:52:30 +08:00
以为自己有什么重大发现之前最好先去淘宝和咸鱼搜索一番。
tianxin
2023-12-12 00:02:56 +08:00
流量不要钱?
yulihao
2023-12-12 01:46:18 +08:00
这不是一个 CPE 搞定的事情么,现在紫光平台的 5G CPE 几乎是 300 多了吧(好像)
另外别迷信 5G ,容易受到环境影响的,不稳定
flynaj
2023-12-12 01:49:03 +08:00
老哥估计没有用过 Windows+Android ,插上线打开 USB 共享就行,或者打开 WiFi 热点。openwrt 下面 安装 kmod-usb-net-rndis 打开 USB 共享,配置接口路由表就可以。
musi
2023-12-12 08:37:39 +08:00
不理解的是在有宽带的情况下什么场景会用到蜂窝网络
TESTFLIGHT2021
2023-12-12 08:45:14 +08:00
没必要 随便一个光纤宽带都秒杀 5G 4G
yolee599
2023-12-12 08:51:04 +08:00
5G 费用那么贵,划算吗?
my2492
2023-12-12 09:10:46 +08:00
为什么不在软路由上插一个 5G 模组呢?这样无论是路由的功能,还是接入方式,都解决了
bt7vip
2023-12-12 10:21:26 +08:00
蜂窝可以作为宽带接入使用,用的平板 4G 能跑 50M 带宽,没拉宽带。
playingangel
2023-12-12 12:24:46 +08:00
@yolee599 有这类想法的人有可能手里面有不限量套餐,套了各种 bug 可以实现不限速不限量,把他当宽带用是可以的
Donaldo
2023-12-12 13:02:00 +08:00
@yolee599 #11 29 块一个月 200 多 g ,我这速率能跑到下载 600mbps 上传 80mbps ,相当超值了。
zer
2023-12-12 13:49:01 +08:00
做个备用可以玩一玩,我自己也搞了个二级路由插了个 4G 网卡,专门解决家里 ESXI 里的软路由挂了的时候,能有个原创重启恢复的入口
xinJang
2023-12-12 15:23:37 +08:00
一个 cpe 就解决的事情
Conantv2
2023-12-12 19:14:26 +08:00
用 openwrt ,在无线那里连上手机热点,就多一个网络了
Fred0410
2023-12-12 22:09:01 +08:00
虽然我用不到,但我觉得这种实现方式很好。
chancat
2023-12-13 03:21:37 +08:00
rndis ,usb 共享网络, 以太网共享网络

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/999508

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX