Ubuntu下apt“无法解析域名”解决方案

注意:本博客过于久远,内容可能已经不适用

注意:正确的更改DNS的方法见博客:常见公共DNS服务&Linux和Windows下修改DNS的方法

DNS莫名其妙出错,啥也干不了

错误

百度了一波,发现解决方案很简单,就是手动加入DNS

1
sudo vim /etc/resolv.conf

加入DNS

1
nameserver 119.29.29.29

当然可以自己去百度其他家的DNS,我这是DNS PUBLIC+的地址

按照百度说的我保存重启

结果发现并没有什么卵用…

仔细观摩一下文件

1
2
3
4
5
6
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
#     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
# 127.0.0.53 is the systemd-resolved stub resolver.
# run "systemd-resolve --status" to see details about the actual nameservers.

nameserver 127.0.0.53</pre>

被覆盖了

而且说明也写着“DO NOT EDIT THIS FILE BY HAND”

我按照其他的方法修改了一下编辑resolv.conf.d目录下的base文件

不过也没有效果

但是按照第二篇看的文章找到了问题所在:

重启系统后DNS设置不但不会被应用还会被覆盖,应该重启网卡来解决

1
sudo /etc/init.d/networking restart</pre>

完美解决

修复

参考:

不过刚刚重启了好像又被覆盖了,很是绝望

干脆写了个脚本,然后开机自动运行脚本得了…

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
#!/bin/bash
  
### BEGIN INIT INFO
# Provides:     run.sh 
# Required-start:    $local_fs $remote_fs $network $syslog 
# Required-Stop:     $local_fs $remote_fs $network $syslog 
# Default-Start:     2 3 4 5 
# Default-Stop:      0 1 6 
# Short-Description: starts the run.shh daemon 
# Description:       starts run.sh using start-stop-daemon 
### END INIT INFO

sudo echo "nameserver 119.29.29.29" >> /etc/resolv.conf
sudo /etc/init.d/networking restart

然后复制到init.d中,再

1
update-rc.d run.sh defaults 99
冀ICP备17015375-1号
使用 Hugo 构建
主题 StackJimmy 设计