WSA不可上网

2022-12-02 11:49:30 浏览数 (1)

这个问题困扰了我两天,到现在才解决,这个方法全网,全百度,就只有一篇!

地址:https://blog.csdn.net/qq_14902731/article/details/124891739

全网仅此一篇!

另教程参考:https://www.zhihu.com/question/495358060

补充(2022.9.30)

经过一段时间的研究,我发现引起这个问题的根源不是因为was,而是因为我的网络开机了禁止二级路由,wsa的网络默认用nat到了一个172开头的ip。其实之前也有注意到这个问题,但是不知道为什么之前关闭禁止二级路由这个功能的时候还是不行,今天心血来潮测试了一下发现可以了。下面的教程有加上。

解决思路

一开始使用WSA时,wifi界面提示不可上网,然后我查看发现ip地址经过了nat,是172开头的,我尝试改为dhcp结果无效

后来我尝试将路由器的阻止二级路由关闭,但是没有用

百度各种教程,全部都是解决不可上网这个提示的,他们给出的教程是

代码语言:javascript复制
adb shell settings put global captive_portal_https_url https://www.google.cn/generate_204
adb shell settings put global captive_portal_http_url http://www.google.cn/generate_204

这个方法并不能解决我不可上网的问题

我将他默认的固定ip改为dhcp(吐槽一句 这地方鼠标有问题得键盘操作)

结果改了之后死活无法接入,此时我怀疑是nat没有dhcp

后来我在这篇文章找到了更换hyper-v虚拟机网卡的方法(咱是vmware用户,除了沙盒从来没用过hyper-v)

通过这个我成功解决了我的问题

解决方法

若您使用代理,该教程不使用于你 其他请另行百度

从最开始的地方开始说,在操作任何安卓系统之前请确保您已有adb

安装ADB

ADB工具官网:https://developer.android.google.cn/studio/releases/platform-tools?hl=zh-cn

镜像适用于Windows的文件直接:https://cloud.alongw.cn/api/v3/file/source/605/ADB.zip?sign=fW0IVqXmtcZv7ssaqpj_r7oCYUNQ6YdNVMplKP4NQR8=:0

程序员这里做的有问题,点名批评

配置ADB环境变量(其实也可以不配置但是麻烦点所以推荐配置)

将ADB解压到一个文件夹,然后配置环境变量(其实你也可以把他解压到System32,但是我不推荐)

新版本设置

预览后选择ADB工具包的根目录,如果你听不懂这句话,请查看这篇文章:https://cloud.tencent.com/developer/article/2184331

然后确定确定确定即可

旧版本设置界面...(不对啊旧版哪来的WSA,算了当环境变量添加教程了)

预览后选择ADB工具包的根目录,如果你听不懂这句话,请查看这篇文章:https://cloud.tencent.com/developer/article/2184331

然后确定确定确定即可

装完在命令行中输入adb,将会显示提示(若未显示请重启终端,否则就是环境变量配置有问题)

顺带一提,若虚拟机ADB一直连不上,请检查一下任务栏的图标,有没有是否允许连接的对话框

因为谷歌验证的问题

管理员运行powershell

然后运行

代码语言:javascript复制
adb connect 127.0.0.1:58526

成功后运行

代码语言:javascript复制
adb shell settings put global captive_portal_mode 0

DNS的问题

修改DNS为114.114.114.114

系统防火墙的问题(若未开启防火墙请忽略)

管理员运行powershell,输入命令(也可尝试关闭防火墙)

代码语言:javascript复制
New-NetFirewallRule -DisplayName "WSL" -Direction Inbound -InterfaceAlias "vEthernet (WSL)" -Action Allow

子系统的问题

进入设置-应用-应用和功能,找到windows subsystem for Android ,点三个点,高级选项,选择修复。

还是谷歌的原因

管理员运行powershell

然后运行

代码语言:javascript复制
adb connect 127.0.0.1:58526

成功后运行

代码语言:javascript复制
adb shell settings put global captive_portal_https_url https://www.google.cn/generate_204
adb shell settings put global captive_portal_http_url http://www.google.cn/generate_204

虚拟机中设置DNS

管理员运行powershell

然后运行

代码语言:javascript复制
adb connect 127.0.0.1:58526

成功后运行

代码语言:javascript复制
adb shell am start -n com.android.settings/.Settings$WifiSettingsActivity

这时会进入安卓的设置界面,打开网络和互联网,进入WLAN,选择已经连接的VirtWifi,进入设置,右上角铅笔编辑,修改dns为114.114.114.114,备用8.8.8.8

路由器禁止二级路由(2022.9.30补充)

有一些路由器有禁止路由器的功能,我研究了一段时间,之前有排查过这个不行,但是仔细想想我was中默认给的ip是172.21.104.224,给的网关是172.21.96.1。然后查看物理机的网卡信息(如图)

这怎么看都是一层nat啊!!不甘心的我又再次尝试关闭这个功能,重启WSA,然后发现问题成功解决!

修改Hyper-v网络配置让其使用物理网卡物理连接网络(我是通过该方法解决的问题)

该方法会修改网卡的配置,强迫症者切勿轻易尝试

这种方法是修改hyper-v的网卡设置,将他设置成使用物理网卡连接网络,用于禁止二级路由的情况

如果你用这个方法能解决,那多半就是禁止二级路由惹得锅

将连接类型改为外部网络,然后选择电脑上网使用的网卡

若确认时出错,请执行下面的操作

选择正在使用的网卡,然后点击属性

确定确定确定

重启电脑

重新设置即可

接下来修改WSA网络设置

若操作出现问题,请使用键盘

0 人点赞