本文将从问题的现象、原理、解决方法几个方面来分析,使用wpa_client配置wpa_suppliant使用工具过程遇到的一个问题。
一、现象
板子上电后连上了一个热点,通过连接该热点后可以ping通网络。由于要切换热点,使用wpa_cli配置到新的热点,wifi模块已经连接到新的热点,但却ping不通网络。
具体现象如下:
1、上电后已连接的热点:linkds
wlan0信息:
可以ping通网络:
2、连接新的热点:honor
配置连接参数:
网络列表:
切换到热点"honor":
热点已切换:
3、新的热点ping网络:
ping不通网络:
现象:
连接到"honor"热点后,由于"honor"热点是手机热点,此时可以在手机看到板子切实已经连接到"honor"热点,而且手机移动数据网络是打开的状态。那为什么连上可以访问网络的热点,板子还是ping不通网络?而切换网络前,板子连接的"linkds"热点,也是可以上网的热点。
二、问题、原理
1、原理:如果要让板子ping通外网的话,要满足几个基本条件:①板子连接热点;②热点是可以连接外网的;③板子连接热点后,要配置ip,配置网关,添加DNS之类的;
2、问题:我的板子连接到手机热点“honor"后,经过wpa_cli命令查看后,已经确定是满足条件①和条件②。我们再看看是否满足条件③
可以看到网络接口wlan0的ip和掩码等参数还是切换前,“linkds”路由器分配的参数。
由此可见,板子已经连接到新的热点“honor",但ip、DNS等网络配置信息却没重新分配,还是原来热点的信息。所以,现在的问题是如何更新板子的ip、DNS等网络配置信息?
三、解决
1、动态获取IP可以使用:
udhcpc -i wlan0 -q
注:wlan0是板子的网卡接口
执行完整个命令后,可以看到/etc/resolv.conf文件保存了新的DNS
2、验证测试
查看wlan0信息,可以看到更新了
ping外网测试
可以看到现在可以ping通外网了。