Ubuntu 18.04 解决Temporary failure in name resolution DNS解析问题

事情是这样的,我在 win10 电脑上的 VM VirtualBox 上新装了一个 Ubuntu 18.04 系统,然后设置静态IP,设置如下:

#/etc/network/interfaces
auto lo
iface lo inet loopback

auto enp0s3
iface enp0s3 inet static
address 192.168.31.220
netmask 255.255.255.0
gateway 192.168.31.1

设置好以后重启服务,然后发现不能访问互联网了, ping www.baidu.com 就报如标题所示错误:

Temporary failure in name resolution

然后我就去找答案啊,互联网告我这是 DNS 解析的问题,如下1、2、3、4 点是我查找、用过、并且证实无效的方法。

1、/etc/network/interfaces

这个方法直接把 nameserver 这个参数加在 interfaces 最后一行。
证实无效!
因为这个地方不支持配置 nameserver。

2、/etc/resolv.conf

在这个文件很后面 加上 nameserver 参数,重启网络相关服务,没问题,静态IP地址有了,也能访问互联网了。
但是, 凡是就怕但是,一旦把机器重启,也就是 sudo reboot 操作,这个文件就会恢复原始状态,也就是说我们重启前加的 nameserver 参数就没有了。
这种方法每次开机都要自己设置,肯定不行,pass掉。
判定无效!!

3、/run/systemd/resolve/stub-resolv.conf

当我们在 /etc 文件夹下,使用如下命令:

ls -l | grep resolv.conf

也就是查出 resolv.conf 的具体信息可以发现,这个文件夹其实是个软链接,链接到哪儿呢?
/run/systemd/resolve/stub-resolv.conf

查看这个文件,发现这里面有 nameserver,但是不管了,我把 nameserver 8.8.8.8 加在了最后一行,忘了是无效还是重启之后无效,反正就是 无效!!!

4、/etc/netplan

然后我又去找啊,网上说,在18.0.4 里面,netplan 这玩意儿 接管了网络服务,然后又屁颠儿屁颠儿地跑去这个文件夹下加了这些东西。(这个文件夹下只有01-network-manager-all.yaml这一个文件)
在这里插入图片描述
按照网上的方法,大致配置如上所示,然而,并卵,
无效!!!!

5、解决之道

最后的最后,王子和公主会过上没羞没臊的生活。
我也解决了这个问题,解决方法就是编辑 /etc/systemd/resolved.conf 这个文件,把 DNS 那一行解开注释,如下图所示:
在这里插入图片描述
重启机器,有静态 IP 地址,也能访问互联网了。

牛逼!!!!!!!

解决措施链接:https://www.cnblogs.com/tinkone/p/10498524.html
我是个感恩的人,奉上来源链接。(狗头

  • 73
    点赞
  • 103
    收藏
    觉得还不错? 一键收藏
  • 20
    评论
Ubuntu 18.04 上,可以使用 BIND(Berkeley Internet Name Domain)软件包来安装 DNS 服务器。下面是安装步骤: 1. 打开终端,更新软件包列表: ``` sudo apt update ``` 2. 安装 BIND 软件包: ``` sudo apt install bind9 ``` 3. 安装完成后,进入 BIND 配置目录: ``` cd /etc/bind/ ``` 4. 备份原始配置文件: ``` sudo cp named.conf.options named.conf.options.bak sudo cp named.conf.local named.conf.local.bak ``` 5. 编辑 named.conf.options 文件,添加以下内容: ``` options { directory "/var/cache/bind"; recursion yes; allow-recursion { any; }; forwarders { 8.8.8.8; 8.8.4.4; }; dnssec-validation auto; auth-nxdomain no; # conform to RFC1035 listen-on-v6 { any; }; }; ``` 这里的配置项含义如下: - directory:指定缓存文件的存放目录; - recursion:允许递归查询; - allow-recursion:允许任何人进行递归查询; - forwarders:指定转发器,这里使用 Google 的公共 DNS 服务器; - dnssec-validation:启用 DNSSEC 验证; - auth-nxdomain:如果查询的域名不存在,则不返回“不可知的域名”错误; - listen-on-v6:监听 IPv6 地址。 6. 编辑 named.conf.local 文件,添加以下内容: ``` zone "example.com" { type master; file "/etc/bind/db.example.com"; }; ``` 这里的配置项含义如下: - zone:指定域名; - type:指定 DNS 服务器的类型,这里是主服务器; - file:指定域名的资源记录文件。 7. 创建资源记录文件 db.example.com,添加以下内容: ``` $TTL 604800 @ IN SOA ns1.example.com. admin.example.com. ( 3 ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 604800 ) ; Negative Cache TTL ; @ IN NS ns1.example.com. @ IN A 192.168.1.10 ns1 IN A 192.168.1.10 www IN CNAME example.com. ``` 这里的配置项含义如下: - $TTL:指定缓存时间(以秒为单位); - @:表示域名本身; - SOA:Start of Authority,指定域名服务器的授权信息; - NS:Name Server,指定主 DNS 服务器; - A:Address Record,指定域名对应的 IP 地址; - CNAME:Canonical Name,指定域名的别名。 8. 重新启动 BIND 服务: ``` sudo systemctl restart bind9 ``` 至此,DNS 服务器的安装和配置就完成了。你可以使用 nslookup 命令测试域名解析是否正常: ``` nslookup example.com ``` 输出应该包含以下信息: ``` Server: 127.0.0.53 Address: 127.0.0.53#53 Name: example.com Address: 192.168.1.10 ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 20
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值