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

171 天前
 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 网卡来按需使用蜂窝网络。

2976 次点击
所在节点    宽带症候群
27 条回复
beyondstars
168 天前
@fan88 #1 如果没有 CPE 的话只用手机做这件事的确显得复杂,但是当时好没有选好 CPE ,又刚好有闲置的手机,也算是一种娱乐吧。
beyondstars
168 天前
@my2492 #12 有时间我会研究下 ,之前没太接触过,感觉这种东西可能更加偏底层(更接近硬件)?评论区很多人提到 CPE ,这个我之前也听说过,我感觉 CPE 的话可能算是 5G 模组加天线加功率放大器加以太网 NIC 加路由交换模块……
beyondstars
168 天前
@zer #16 是的,有点类似于一种 带外管理 的思路,用一个专门的网络来管理计算/网络设备。
beyondstars
168 天前
@mantouboji #5 哈哈 大哥你过奖啦 我可没说这是什么重大发现,另外咸鱼和淘宝大家都知道吧(包括我),用业余时间折腾一下闲置手机,再把过程分享出来也是有意义的,所以你驳斥的点是什么呢?
beyondstars
168 天前
@flynaj #8 用过 mac, raspberrypi 加 android, 不过手头上没有 5g 的 android, 当时测的速度不理想,就不继续折腾了。其实 android 也好 iphone 也好也就是个驱动程序的区别。
flynaj
168 天前
@beyondstars Windows 已经自带驱动,任何一个 Android 手机都可以直接用。
Cassius
166 天前
不是路由器直接接个手机就完事了么。。。
华硕你开双 wan 模式就有第二 wan 设置了。
手机 usb 共享网络,路由设置 usb 就完事了
需要规则单独起一条就行了

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

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

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

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

© 2021 V2EX