修复ubuntu 16.04上的dns

修复ubuntu 16.04上的dns,dns,ubuntu-16.04,Dns,Ubuntu 16.04,我做了一些事情,把虚拟ubuntu 16.04盒上的DNS搞乱了。你能帮我诊断问题所在并让DNS重新工作吗。我能够使用ip地址连接到服务器。但是,当我使用主机名时,我的框无法解析它们。这曾经奏效——我做了一些事情把它搞砸了,但不记得我编辑了什么文件 ubuntu版本: lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 16.04.7 LTS Release:

我做了一些事情,把虚拟ubuntu 16.04盒上的DNS搞乱了。你能帮我诊断问题所在并让DNS重新工作吗。我能够使用ip地址连接到服务器。但是,当我使用主机名时,我的框无法解析它们。这曾经奏效——我做了一些事情把它搞砸了,但不记得我编辑了什么文件

ubuntu版本:

lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 16.04.7 LTS
Release:    16.04
Codename:   xenial
以下是使用主机名时出现的问题:

  root@ubuntu:/etc/dhcp# curl -vvv http://example.com
  * Rebuilt URL to: http://example.com/
  * Could not resolve host: example.com
  * Closing connection 0
  curl: (6) Could not resolve host: example.com
我可以使用ip地址连接到example.com。我截断了响应,因为它不相关。关键是我肯定已经连接到了互联网。我的问题是DNS被搞砸了

curl -H "Host: example.com" "http://93.184.216.34"
<!doctype html>
<html>
<head>
    <title>Example Domain</title>

    <meta charset="utf-8" />
    <meta http-equiv="Content-type" content="text/html; charset=utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1" />
    <style type="text/css">
    body {
        background-color: #f0f0f2;
        margin: 0;
        padding: 0;
这似乎有效:

dig @172.16.217.2 example.com

; <<>> DiG 9.10.3-P4-Ubuntu <<>> @172.16.217.2 example.com
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 42927
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 2

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; MBZ: 0005 , udp: 1220
;; QUESTION SECTION:
;example.com.           IN  A

;; ANSWER SECTION:
example.com.        5   IN  A   93.184.216.34

;; ADDITIONAL SECTION:
example.com.        5   IN  TXT "ETPA"

;; Query time: 184 msec
;; SERVER: 172.16.217.2#53(172.16.217.2)
;; WHEN: Tue Mar 09 14:45:02 EST 2021
;; MSG SIZE  rcvd: 84
“主机”命令失败

root@ubuntu:/etc/dhcp# host -v -d example.com
Trying "example.com"
;; connection timed out; no servers could be reached

那么,为什么curl、我的浏览器或其他东西不能与主机名一起工作呢?我应该如何诊断和修复?

这是关键问题;resolv.conf指向一个不存在的文件

root@ubuntu:/etc/dhcp# ls -latr /etc/resolv.conf 
lrwxrwxrwx 1 root root 37 Jan  5 12:21 /etc/resolv.conf ->   /run/systemd/resolve/stub-resolv.conf
root@ubuntu:/etc/dhcp# ls -latr /run/systemd/resolve/stub-resolv.conf
ls: cannot access '/run/systemd/resolve/stub-resolv.conf': No such file or  directory
修复方法是将其指向现有文件:

ln -s /run/systemd/resolve/resolv.conf /etc/resolv.conf

从您发布的结果可以看出,name server@172.16.217.2工作正常,但不清楚它是否用于地址解析。这就是为什么我询问
/etc/resolve.conf
这是系统查找要使用的名称服务器的地方。 看起来一些
systemd
服务破坏了这个文件(我在Kubuntu 20.04上有
/etc/resolv,conf->/var/run/resove.conf


resolveconf
resolveconf admin
可能有助于解决此类问题。

您必须使用自己的DNS服务器还是可以使用谷歌的?(8.8.8.8)我尝试将8.8.8.8添加到我的/etc/dhcp/dhclient.conf。它没有解决任何问题。“取代域名服务器8.8.8.8;”,此命令没有反映google服务器:“nmcli dev show | grep DNS”。我想使用我自己的dns服务器,因为它可以看到我公司防火墙后面的东西。然而,谷歌将是一个进步,可能有助于诊断问题。你的
/etc/resolve.conf
中有什么内容?您可以尝试
host-d example.com
,输出将包含查询的DNS服务器的IP地址。它是一个符号链接,指向一个不存在的文件。@YuriGinsburg我还添加了“主机”命令输出。
root@ubuntu:/etc/dhcp# ls -latr /etc/resolv.conf 
lrwxrwxrwx 1 root root 37 Jan  5 12:21 /etc/resolv.conf ->   /run/systemd/resolve/stub-resolv.conf
root@ubuntu:/etc/dhcp# ls -latr /run/systemd/resolve/stub-resolv.conf
ls: cannot access '/run/systemd/resolve/stub-resolv.conf': No such file or  directory
ln -s /run/systemd/resolve/resolv.conf /etc/resolv.conf