今天有需要共享上网进行抓包分析报文的情况。
研究了一下MacBook Pro
(macOS Catalina(10.15.5)
)如何通过蓝牙PAN
(Bluetooth PAN
)来共享笔记本连接的Wi-Fi
网络出来,让手机通过共享出来的蓝牙热点来上网的方法。
由于蓝牙PAN
(Bluetooth PAN
)本质属于局域网转发,起到一个简单网关的作用。因此我们需要设置蓝牙设备的IP
地址跟需要共享的Wi-Fi
网卡相同。
具体操作如下:
1. 记录需要共享的Wi-Fi
网络的IP
、网关
2. 配置蓝牙设备网络的IP
、网关
3. 配置开启蓝牙共享
4. 手机完成蓝牙配对之后,开启 互联网访问
功能
如果上述配置之后,还是不能上网,则尝试进行WireShark
抓包,主要观察DHCP
协议部分,如下图:

从上图可以看到,某个服务响应了来自小米手机的DHCP
请求,并且回复了一个192.168.2.3
的地址给手机。显然这个地址是没办法让手机上网的。
我们查询响应这个网络报文的应用信息:
可以看到一个名为bootps
的应用在67端口上进行了侦听,并且响应了这个请求。
这个是网络共享创建的默认的DHCP
服务器(参考下面的"_creator"字段),配置文件信息如下:
网上介绍都是需要修改这里面的配置,然后重启。其实本质原因是配置信息没有更新到系统,完全不需要修改配置文件。只需要重新启动一下服务即可,如下:
操作之后,需要断开蓝牙,重新连接。
目前测试发现,Honor 30/Android 10.0.0,MI NOTE LTE/Android 6.0.1,HonorV8/Android 8.0.0 都不能立即正常上网,需要折腾好几次才可能能用。
但是有时候先让Honor 30/Android 10.0.0连接成功之后,再让MI NOTE LTE/Android 6.0.1,HonorV8/Android 8.0.0连接蓝牙,就立即可以正常上网了,有些莫名其妙。
有时候多个设备同时连接的情况下,第一个设备不能正常上网,后面连接的设备都可以,再次断开第一个重新连接,又都正常了。感觉还是协议栈不够稳定。
现在的新系统好像不行了,你这个是老版本的系统。