Debian系统中如何修改dns?

电子说

1.4w人已加入

描述

在调试WIFI的过程中,不知你是否遇到过这样的现象,WIFI可以连上ap,可以局域网内相互ping通,但是ping不通外网。

针对这个现象,在debian系统中也会出现,相比于linux或者Android系统来说,更为复杂。

附上linux5.10设备树配置:

  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
wireless_wlan: wireless-wlan {        compatible = "wlan-platdata";        wifi_chip_type = "ap6275pr3";        pinctrl-names = "default";        pinctrl-0 = <&wifi_host_wake_irq>, <&wifi_poweren_gpio>;        WIFI,host_wake_irq = <&gpio0 RK_PB2 GPIO_ACTIVE_HIGH>;        WIFI,poweren_gpio = <&gpio0 RK_PC4 GPIO_ACTIVE_HIGH>;        status = "okay";    };

以下是现象:

WIFI

后面更改了DNS,就能够ping通了。

原来的dns为:

  •  
cat /etc/resolv.conf

WIFI

修改后的dns为:

WIFI

当出现“ping:www.baidu.com: 域名解析暂时失败”这样的错误时,意味着设备无法通过域名来找到对应的IP地址。这通常涉及到以下几个方面的问题:
  1. DNS设置问题
  • 检查你的系统 /etc/resolv.conf 文件,确保其中包含有效的DNS服务器地址。比如,你可以尝试添加公共DNS服务器地址,如谷歌的 8.8.8.8 或 1.1.1.1(Cloudflare的DNS服务器)等。
  • 如果文件是由系统自动管理(如使用systemd-resolved服务),则需要通过正确的系统接口去更新DNS配置。
  • 网络连接问题
  • 确保你的设备已正确连接到互联网,并且网络连接稳定。
  • 检查网络配置是否正确,包括静态或动态获取的DNS服务器地址是否有效。
  • DNS服务器故障
  • 当前使用的DNS服务器可能存在问题或不可达,更换其他DNS服务器测试。
  • 本地DNS缓存
  • 清除本地DNS缓存以获取最新域名解析记录。
  • ISP或防火墙限制
  • 某些网络环境(如公司内部网络或受限网络)可能对DNS查询进行限制或过滤。
解决步骤可以包括:
  • 手动编辑/etc/resolv.conf文件,添加可靠的DNS服务器地址。
  • 使用命令行工具刷新DNS缓存(在某些系统中如Windows是ipconfig /flushdns,Linux中可能需执行sudo systemd-resolve --flush-caches)。
  • 检查网络连接和路由器的设置,确认DNS转发是否正常。
  • 尝试直接ping百度服务器的IP地址,如果能ping通,则进一步证实是域名解析环节出现问题。
知道这个方法了,可以在系统中修改相应的文件就可以了,但是我们的产品最终是要量产的,不可能每一台都手动设置吧?那么有什么方法可以避免这个工作量吗?当然,我们的想法是在源码中修改。

在这里就提到的重点是,源码里有多个文件resolv.conf,多次修改都不能生效,都会被覆盖,因为debian系统是在编译中构建文件系统的。所以不能在现成的文件上修改。但是我们发现dns是依赖宿主机的,也就是我们的编译环境。所以我们只需要修改本地的/etc/resolv.conf文件。

这里还有个问题,就是该文件直接去修改也会被覆盖。修改下面这个文件也不行。

WIFI

在编译文件中加入,也不行:

WIFI

WIFI

查看文件的链接情况,原来一直连接的是这个,难怪改变不了:

WIFI

WIFI

重新链接:

WIFI

WIFI

到此为止,就可以了,刚接触debian系统的人可能会一头扎进源码中,从而导致调试的时间过长。      
打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分