新装一台Ubuntu虚拟机测试dhcp服务器,发现ubuntu的dns显示为:127.0.0.1。有点疑惑,google之,找到原因。

  • ubuntu下有一个本地的dns服务叫做dnsmasq,它是由NetworkManager控制的

    1
    ps -ef | grep dnsmasq
  • 执行上面命令,你就可以看到它监听的本地地址,**–listen-address=127.0.1.1** (ubuntu12.04及之前的版本 是 127.0.0.1), 这个地址是一个本地回环地址,而你真实的dns服务器地址,是被这个服务管理维护着的,管理方式如下:

    1
    local process -> local dnsmasq -> router -> ISP dns
  • 若需要看到真实的DNS地址,可以这么做:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    sudo vi /etc/NetworkManager/NetworkManager.conf
    [main]
    plugins=ifupdown,keyfile,ofono
    #dns=dnsmasq // 注释此行

    sudo service network-manager restart

    nslookup baidu.com
    Server: 192.168.20.21
    Address: 192.168.20.21#53

    Non-authoritative answer:
    Name: baidu.com
    Address: 220.181.57.216
    Name: baidu.com
    Address: 123.125.115.110
  • 如果没有nslookup命令,那么你需要安装bind-utils

    1
    sudo apt install bind-utils

参考链接: