谁动了我的 DNS 解析?
以前经常遇到 /etc/resolv.conf 被Network Manager 覆盖,最暴力的解决方式是用chattr 锁定这个文件。
这样做并没有搞清楚Linux的DNS优先级,对于复杂场景也解决不了问题。这个问题本质上是Network Manager,systemd-resolved等每个工具都有额外的策略并试图修改DNS解析配置。
大部分程序做 DNS 解析实际上是调用 glibc 里面 getaddrinfo 这个 API,所以在它后面我们就可以做一些工作。一个叫做 Name Service Switch 的东西发明出来就是干这个的,它是基于插件的,我们可以通过阅读 /etc/nsswitch.conf 里面的 hosts 这一行来理解。
source:
https://sh.alynx.one/posts/Who-Moved-My-DNS-Resolving-Remastered/
以前经常遇到 /etc/resolv.conf 被Network Manager 覆盖,最暴力的解决方式是用chattr 锁定这个文件。
这样做并没有搞清楚Linux的DNS优先级,对于复杂场景也解决不了问题。这个问题本质上是Network Manager,systemd-resolved等每个工具都有额外的策略并试图修改DNS解析配置。
大部分程序做 DNS 解析实际上是调用 glibc 里面 getaddrinfo 这个 API,所以在它后面我们就可以做一些工作。一个叫做 Name Service Switch 的东西发明出来就是干这个的,它是基于插件的,我们可以通过阅读 /etc/nsswitch.conf 里面的 hosts 这一行来理解。
source:
https://sh.alynx.one/posts/Who-Moved-My-DNS-Resolving-Remastered/