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

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

注意:正确的更改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