• 不要直接手动修改文件 /etc/resolv.conf
  • 安装好Ubuntu之后设置了静态IP地址,再重启后就无法解析域名。想重新设置一下DNS,打开/etc/resolv.conf

    cat /etc/resolv.conf
    # 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

    内容是一段警告:说这个文件是resolvconf程序动态创建的,不要直接手动编辑,修改将被覆盖。

    root@Ubuntu14:~# cat /etc/resolv.conf
    # 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
    nameserver 100.100.2.138
    nameserver 100.100.2.136
    options timeout:2 attempts:3 rotate single-request-reopen
    root@Ubuntu14:~#

    ubuntu修改DNS有如下两种方法。

  • 方法一:修改文件/etc/resolvconf/resolv.conf.d/base
  • root@Ubuntu14:~# cat /etc/resolv.conf
    # 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
    nameserver 100.100.2.138
    nameserver 100.100.2.136
    options timeout:2 attempts:3 rotate single-request-reopen
    root@Ubuntu14:~# vim /etc/resolvconf/resolv.conf.d/base
    root@Ubuntu14:~# cat !$
    cat /etc/resolvconf/resolv.conf.d/base
    nameserver 223.5.5.5
    nameserver 223.6.6.6
    root@Ubuntu14:~# resolvconf -u
    root@Ubuntu14:~# cat /etc/resolv.conf
    # 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
    nameserver 100.100.2.138
    nameserver 100.100.2.136
    nameserver 223.5.5.5
    options timeout:2 attempts:3 rotate single-request-reopen
    root@Ubuntu14:~# nslookup www.baidu.com
    Server:         100.100.2.138
    Address:        100.100.2.138#53
    Non-authoritative answer:
    www.baidu.com   canonical name = www.a.shifen.com.
    Name:   www.a.shifen.com
    Address: 220.181.112.244
    Name:   www.a.shifen.com
    Address: 220.181.111.188
    root@Ubuntu14:~#
  • 方法二:修改文件 /etc/network/interfaces
  • root@iZbp1b66g5htibj2m7yyv3Z:~# cat /etc/network/interfaces
    auto lo
    iface lo inet loopback
    auto eth0
    iface eth0 inet dhcp
    dns-nameservers 223.5.5.5   # 在最后添加这一行

    linux刷新dns的缓存方法是:  sudo /etc/init.d/nscd restart

    最暴力的方法刷dns,重启网络:  sudo /etc/init.d/networking restart

    查看当前DNS解析情况:

    nslookup www.baidu.com

    dig | grep SERVER

    root@iZbp1b66g5htibj2m7yyv3Z:~# /etc/init.d/nscd restart
     * Restarting Name Service Cache Daemon nscd                                                                                                                                                                                          [ OK ]
    root@iZbp1b66g5htibj2m7yyv3Z:~#  /etc/init.d/networking restart
    stop: Job failed while stopping
    start: Job is already running: networking
    root@iZbp1b66g5htibj2m7yyv3Z:~# dig |grep SERVER
    ;; SERVER: 100.100.2.138#53(100.100.2.138)
    root@iZbp1b66g5htibj2m7yyv3Z:~# nslookup www.baidu.com
    Server:         100.100.2.138
    Address:        100.100.2.138#53
    Non-authoritative answer:
    www.baidu.com   canonical name = www.a.shifen.com.
    Name:   www.a.shifen.com
    Address: 220.181.111.188
    Name:   www.a.shifen.com
    Address: 220.181.112.244
    root@iZbp1b66g5htibj2m7yyv3Z:~#

    1)  vim /etc/resolv.conf

    2)  vim /etc/systemd/resolved.conf

    3)  systemctl restart systemd-resolved

    4)  reboot

    coreos1 ~ # cat /etc/resolv.conf
    # This file is managed by man:systemd-resolved(8). Do not edit.
    # This is a dynamic resolv.conf file for connecting local clients directly to
    # all known DNS servers.
    # Third party programs must not access this file directly, but only through the
    # symlink at /etc/resolv.conf. To manage man:resolv.conf(5) in a different way,
    # replace this symlink by a static file or a different symlink.
    # See man:systemd-resolved.service(8) for details about the supported modes of
    # operation for /etc/resolv.conf.
    nameserver 223.5.5.5
    nameserver 223.6.6.6
    search openstacklocal
    coreos1 ~ # cat /etc/systemd/resolved.conf
    #  This file is part of systemd.
    #  systemd is free software; you can redistribute it and/or modify it
    #  under the terms of the GNU Lesser General Public License as published by
    #  the Free Software Foundation; either version 2.1 of the License, or
    #  (at your option) any later version.
    # Entries in this file show the compile time defaults.
    # You can change settings by editing this file.
    # Defaults can be restored by simply deleting this file.
    # See resolved.conf(5) for details
    [Resolve]
    DNS=223.5.5.5 223.6.6.6      # 用空格分隔多个dns
    #FallbackDNS=
    #Domains=
    LLMNR=no               # yes改为no
    #DNSSEC=allow-downgrade
    #Cache=yes
    coreos1 ~ # systemctl restart systemd-resolved
    coreos1 ~ # dig |grep SERVER
    ;; SERVER: 223.5.5.5#53(223.5.5.5)
    coreos1 ~ # reboot