Android系统Shell命令设置网卡默认DNS

本文介绍安卓系统中如何配置DNS。由于Android系统底层不包含/etc/resolv.conf文件,因此不能直接添加nameserver记录。针对不同版本的Android系统(6.0之前及6.0及以上),文章详细说明了使用NetworkDaemon(Netd)网络守护进程来设置DNS的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题

安卓(Android)系统底层没有/etc/resolv.conf这个文件,所以没法像linux那样添加nameserver记录。

解决办法

安卓系统下通过Network Daemon(Netd) 网络守护进程进行管理。封装了庞杂的底层各种类型的网络(NAT,PLAN,PPP,SOFTAP,TECHER,ETHO,MDNS等),隔离了底层网络接口的差异,给Framework提供了同一调用接口,简化了网络的使用。
其中设置DNS与安卓系统版本有关:

# 对于安卓6.0以前,采用如下格式
# ndc resolver setifdns (interface) (dns1) (dns2)
ndc resolver setifdns eth0 8.8.8.8 8.8.4.4
# 对于安卓6.0以上,采用如下格式
# ndc resolver setnetdns (interface) (dns1) (dns2)
ndc resolver setnetdns eth0 8.8.8.8 8.8.4.4
### 解决 Android Studio 虚拟设备 (AVD) 无法连接互联网的问题 #### 原因分析 当遇到 AVD 无法连接到互联网的情况时,这可能是由多种因素引起的。常见的原因包括但不限于: - 网络配置错误或缺失必要的代理设置[^1]。 - 开发者机器上的防火墙阻止了虚拟设备访问外部网络资源[^2]。 #### 解决方案 ##### 配置网络权限 确保在 `config.ini` 文件中启用了联网功能。可以通过编辑 `.android/avd/<your_avd_name>.ini` 或通过图形界面调整来实现这一点。对于后者,在创建或修改 AVD 时应确认选择了允许上网选项。 ##### 修改 DNS 设置 有时默认DNS服务器可能导致解析失败。可以在命令行工具下运行如下指令更改DNS地址为公共DNS服务提供商如Google提供的8.8.8.8: ```bash adb shell settings put global dns_servers 8.8.8.8,8.8.4.4 ``` 此操作会临时改变当前正在使用的模拟器实例中的DNS设定[^3]。 ##### 检查主机系统的网络状况 如果开发者电脑本身存在网络连通性问题,则必然会影响到其上运行的所有应用程序和服务,自然也包括了我们的安卓仿真环境。所以务必先排查并修复任何潜在影响PC正常上网的因素后再做进一步诊断[^4]。 ##### 使用 Wi-Fi 连接而非 Ethernet 某些情况下切换至无线网卡可能会解决问题,因为不同类型的适配器之间可能存在兼容性的差异。 ##### 关闭 Windows Defender Firewall 对于特定端口的拦截 进入Windows安全中心->高级设置->入站规则处查找是否有针对ADB调试或其他相关进程通信所必需开放端口号被屏蔽,并解除限制。 ##### 尝试其他镜像 最后还可以考虑更换不同的系统映像版本试试看是否会有所改善;有时候官方发布的最新版里已经包含了对之前存在的bug修正。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值