以下是 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 网卡来按需使用蜂窝网络。
1
fan88 340 天前 4
搞复杂了,兄弟。
华为 5G CPE ,直接解决您的需求。 |
2
exiaohao 340 天前
FWA ( Fixed Wireless Access )了解一下
核心部件如 1 楼,买一个 CPE 就行了 |
3
Donaldo 340 天前
如果路由器是扩展性比较好的 linux 设备的话(例如 openwrt ),可以直接接在路由器上部署 usbmuxd ,省去服务器和 wireguard 。
|
4
yhrzpm 340 天前
买个随身 wifi 接到 op ,用 mwan3 做主备就行吧
|
5
mantouboji 340 天前
以为自己有什么重大发现之前最好先去淘宝和咸鱼搜索一番。
|
6
tianxin 340 天前 via Android
流量不要钱?
|
7
yulihao 340 天前
这不是一个 CPE 搞定的事情么,现在紫光平台的 5G CPE 几乎是 300 多了吧(好像)
另外别迷信 5G ,容易受到环境影响的,不稳定 |
8
flynaj 340 天前 via Android
老哥估计没有用过 Windows+Android ,插上线打开 USB 共享就行,或者打开 WiFi 热点。openwrt 下面 安装 kmod-usb-net-rndis 打开 USB 共享,配置接口路由表就可以。
|
9
musi 340 天前
不理解的是在有宽带的情况下什么场景会用到蜂窝网络
|
10
TESTFLIGHT2021 340 天前
没必要 随便一个光纤宽带都秒杀 5G 4G
|
11
yolee599 340 天前 via Android
5G 费用那么贵,划算吗?
|
12
my2492 340 天前
为什么不在软路由上插一个 5G 模组呢?这样无论是路由的功能,还是接入方式,都解决了
|
13
bt7vip 340 天前 via Android
蜂窝可以作为宽带接入使用,用的平板 4G 能跑 50M 带宽,没拉宽带。
|
14
playingangel 340 天前 via iPhone
@yolee599 有这类想法的人有可能手里面有不限量套餐,套了各种 bug 可以实现不限速不限量,把他当宽带用是可以的
|
16
zer 340 天前
做个备用可以玩一玩,我自己也搞了个二级路由插了个 4G 网卡,专门解决家里 ESXI 里的软路由挂了的时候,能有个原创重启恢复的入口
|
17
xinJang 339 天前
一个 cpe 就解决的事情
|
18
Conantv2 339 天前
用 openwrt ,在无线那里连上手机热点,就多一个网络了
|
19
Fred0410 339 天前
虽然我用不到,但我觉得这种实现方式很好。
|
20
chancat 339 天前 via Android
rndis ,usb 共享网络, 以太网共享网络
|
21
beyondstars OP @fan88 #1 如果没有 CPE 的话只用手机做这件事的确显得复杂,但是当时好没有选好 CPE ,又刚好有闲置的手机,也算是一种娱乐吧。
|
22
beyondstars OP @my2492 #12 有时间我会研究下 ,之前没太接触过,感觉这种东西可能更加偏底层(更接近硬件)?评论区很多人提到 CPE ,这个我之前也听说过,我感觉 CPE 的话可能算是 5G 模组加天线加功率放大器加以太网 NIC 加路由交换模块……
|
23
beyondstars OP @zer #16 是的,有点类似于一种 带外管理 的思路,用一个专门的网络来管理计算/网络设备。
|
24
beyondstars OP @mantouboji #5 哈哈 大哥你过奖啦 我可没说这是什么重大发现,另外咸鱼和淘宝大家都知道吧(包括我),用业余时间折腾一下闲置手机,再把过程分享出来也是有意义的,所以你驳斥的点是什么呢?
|
25
beyondstars OP @flynaj #8 用过 mac, raspberrypi 加 android, 不过手头上没有 5g 的 android, 当时测的速度不理想,就不继续折腾了。其实 android 也好 iphone 也好也就是个驱动程序的区别。
|
26
flynaj 337 天前 via Android
@beyondstars Windows 已经自带驱动,任何一个 Android 手机都可以直接用。
|
27
Cassius 334 天前 via Android
不是路由器直接接个手机就完事了么。。。
华硕你开双 wan 模式就有第二 wan 设置了。 手机 usb 共享网络,路由设置 usb 就完事了 需要规则单独起一条就行了 |