AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / ubuntu / 问题 / 1068131
Accepted
FalcoGer
FalcoGer
Asked: 2018-08-24 01:26:20 +0800 CST2018-08-24 01:26:20 +0800 CST 2018-08-24 01:26:20 +0800 CST

Ubuntu 18.04 .local 域 dns 查找不起作用

  • 772

我正在使用带有 Ubuntu 18.04 的 Raspberry Pi 3。在我的公司,我们有一个 DNS 服务器和几个带有“.local”的域。我知道从技术上讲这是不正确的,它应该是“.lan”,因为 .local 是为多播 dns 保留的。但这就是它的方式,它不能轻易改变。因此,在我的 Windows 机器上,我可以毫无问题地 ping 和浏览这些域名。但在我的 Ubuntu 上,我不能。

我不能使用 IP,因为某些域在同一台机器上,并且 IIS 网络服务器将事情整理出来。

我已经搜索过,它经常出现:

  • https://smallbusiness.chron.com/resolving-local-ubuntu-38861.html
  • 为什么我的本地服务器都没有解析?
  • ubuntu 服务器无法解析 LAN 主机名

但是,更改 /etc/nsswitch.conf 对我没有用。我试过了

  • hosts: files mdns4_minimal [NOTFOUND=return] dns myhostname # 默认
  • 主机:文件 dns
  • 主机:文件 mdns4_minimal [NOTFOUND=continue] dns myhostname
  • 主机:文件 mdns4 [NOTFOUND=return] dns myhostname
  • 主机:文件 mdns4 [NOTFOUND=continue] dns myhostname
  • 主机:文件 dns mdsn4_minimal myhostname
  • 主机:dns
  • 其他几个

这些都没有奏效。我也尝试在更改后重新启动。我试图告诉 avahi /etc/avahi/avahi-daemon.conf 中的 domain-name=alocal,服务重启后不起作用,重启后不起作用。在这不起作用之后,我尝试完全禁用 avahi-daemon 服务。

sudo systemctl disable avahi-daemon

重新启动后,我再次尝试了 /etc/nsswitch.conf 中的几个排列,但没有任何效果。

使用主机中的当前设置(文件 dns),我得到以下响应:

dig login.name.local # not the actual name

; <<>> Dig 9.11.3-1ubuntu1.1-Ubuntu <<>> login.name.local
;; global options: +cmd
;; Got answer:
;; WARNING .local is reserved for Multicast DNS
;; You are currently testing what happens when an mDNS query is leaked to DNS
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 33538
;; flags: qr rd ra; QUERY: 1, ANSWER:0, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 65494
;; QUESTION SECTION:
;login.name.local. 0     IN     A

;; Query time: 2msec
;; SERVER: 127.0.0.53#53(127.0.0.53)
;; WHEN: Thu Aug 23 10:51:50 CEST 2018
;; MSG SIZE  rcvd: 56

但是,当我指示 dig 直接查询服务器时,我得到了正确的答案:

dig @dnsIP login.name.local
; <<>> Dig 9.11.3-1ubuntu1.1-Ubuntu <<>> login.name.local
; (1 server found)
;; global options: +cmd
;; Got answer:
;; WARNING .local is reserved for Multicast DNS
;; You are currently testing what happens when an mDNS query is leaked to DNS
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 57866
;; flags: qr aa rd ra; QUERY: 1, ANSWER:1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 65494
;; QUESTION SECTION:
;login.name.local. 0     IN     A

;; ANSWER SECTION:
login.name.local. 3600 IN    A        serverIP

;; Query time: 2msec
;; SERVER: dnsIP#53(dnsIP)
;; WHEN: Thu Aug 23 10:51:50 CEST 2018
;; MSG SIZE  rcvd: 56

这个版本的 Ubuntu 使用带有网络管理器的 netplan。正确的 DNS IP 肯定在列表中。(实际上它是主 DNS。)dnsIp 也与 serverIP 相同,但这应该不是问题。

Ping 或通过浏览器连接等当然不起作用。没有人使用 dns 查询。

我不知道该怎么办。当然我们不能切换到不同的域名。我将服务器名放入 /etc/hosts 但这只是一个临时解决方案。

networking dns 18.04 domain-server
  • 8 8 个回答
  • 84351 Views

8 个回答

  • Voted
  1. OzPHB
    2019-02-02T18:05:51+08:002019-02-02T18:05:51+08:00

    接受的答案没有解决我的问题。这与 avahi 无关 - 我没有安装 avahi 服务。我的系统设置为从 DHCP 获取其 IP 和 DNS 服务器设置。但是,没有使用 .local 检查 DHCP 提供的 DNS 以进行查询

    真正的问题是 Ubuntu 18.04 将其 resolv.conf 符号链接到一个存根文件,该存根文件指向 localhost 以进行名称解析。本地主机 DNS 名称解析意味着系统拒绝检查提供的 DNS 服务器的 .local 名称,认为(错误地)这些名称是无效的。这是 /etc/resolv.conf 的默认设置:

    ls -la /etc/resolv.conf
    lrwxrwxrwx 1 root root 39 Jan 22 13:26 /etc/resolv.conf -> ../run/systemd/resolve/stub-resolv.conf
    

    存根文件的内容是(已删除评论):

     cat /run/systemd/resolve/stub-resolv.conf
     .. removed comments..  
    nameserver 127.0.0.53
        search reddog.microsoft.com
    

    “真正的”解析配置具有“正确”的 DNS 设置(来自 DHCP):

    cat /run/systemd/resolve/resolv.conf
    
    ..removed comments..
    nameserver 10.168.200.250 # This is my server that can resolve .local
    nameserver 208.67.220.220 # these are optional, fallback DNS servers
    nameserver 208.67.222.222
    # Too many DNS servers configured, the following entries may be ignored.
    nameserver 8.8.8.8
    search reddog.microsoft.com
    

    为了使系统使用您首选的 DNS 解析器而不是 localhost,您将符号链接更改为指向 /run/systemd/resolve/resolv.conf 而不是 /run/systemd/resolve/stub-resolv.conf :

    sudo rm -f /etc/resolv.conf
    sudo ln -s /run/systemd/resolve/resolv.conf /etc/resolv.conf
    

    在此之后,.local 的解析立即开始工作。无需重新启动或重新启动任何服务。

    • 33
  2. Best Answer
    jeremfg
    2018-09-19T17:35:52+08:002018-09-19T17:35:52+08:00

    我在 Linux Mint 19 (Tara) 上遇到了一个非常相似的问题(如果不完全相同的话)。我已经设法通过结合 3 条不同的信息来解决它。这似乎都与 systemd-resolved 最近的变化有关。

    首先,是的,我需要按照您的预期配置/etc/nsswitch.conf 。只要 dns 出现在 mdns 之前,您就应该很好。我简单地结束了:

    hosts:          files dns myhostname
    

    参考:https ://unix.stackexchange.com/a/457172/271210

    在升级到这个版本的 Mint 之前,这是我唯一需要做的事情。现在,我最终还进行了以下两个其他更改以使其正常工作...


    之后,我配置了我的搜索域,以便 systemd-resolved 可以按我的意愿工作。所以我编辑了文件/etc/systemd/resolved.conf,即[resolve]部分下的Domains设置。就我而言,它最终看起来像:

    [Resolve]
    #DNS=
    #FallbackDNS=
    Domains=trilliant.local
    #LLMNR=no
    #MulticastDNS=no
    #DNSSEC=no
    #Cache=yes
    #DNSStubListener=yes
    

    参考:https ://askubuntu.com/a/1031271/872881

    我还将 avahi 配置更改为其他配置(“mdns”,如果我没记错的话,但这没关系)。但是,据我了解,它不应该是必需的。只是为了完整性而添加。


    但在我调用以下命令之前,这些方法都不起作用:

    sudo ln -sf /run/systemd/resolve/resolv.conf /etc/resolv.conf
    

    参考:https ://askubuntu.com/a/938703/872881

    调用此命令后,一切都开始按预期完美运行!

    所以有可能我真的不需要更改/etc/systemd/resolved.conf文件,但我保留了这个更改,因为它是有意义的,并且允许我只键入机器的名称,而不需要完整的 FQDN,以便 DNS 解析工作.

    • 21
  3. Anton To
    2018-11-07T07:41:17+08:002018-11-07T07:41:17+08:00

    对我来说 Ubuntu 18.04 的工作方式是:

    编辑avahi conf:

    sudo vim /etc/avahi/avahi-daemon.conf
    

    并将 .local 更改为 .alocal :

    [server]
    domain-name=.alocal
    

    然后,打开resolved.conf:

    sudo vim /etc/systemd/resolved.conf
    

    并取消注释和编辑域:

    [Resolve]
    ...
    Domains=yourdomain.local
    ...
    

    最后重启服务:

    sudo service systemd-resolved restart
    sudo service avahi-daemon restart
    
    • 4
  4. Kevin Stevens
    2019-05-08T06:44:59+08:002019-05-08T06:44:59+08:00

    对我有用的是将本地 DNS 作为名称服务器添加到/etc/resolvconf/resolv.conf.d/head(如此处所述)。

    1. 安装 resolvconf 包。

      sudo apt install resolvconf
      
    2. 编辑/etc/resolvconf/resolv.conf.d/head并添加以下内容:

      nameserver 8.8.4.4  
      nameserver 8.8.8.8  
      
    3. 重新启动 resolvconf 服务。

      sudo service resolvconf restart
      

    修复应该是永久性的。

    • 2
  5. Wolftales
    2020-07-03T10:40:12+08:002020-07-03T10:40:12+08:00

    对于 20.04:

    1. 我更新 dns 以使用本地 dns 服务器(gnome 'wired settings' 配置)
    2. 我在以下位置添加本地域:/etc/systemd/resolved.conf&Domains=domain.local
    3. 然后重启服务:service systemd-resolved restart

    感谢这个线程帮助我完成这个工作。

    • 2
  6. Earl Sven
    2020-11-19T03:17:07+08:002020-11-19T03:17:07+08:00

    在 Ubuntu Server 18.04/20.04 上,我们无法解析我们corpname.local域下的主机名,尽管其他名称解析是通过我们的 AD DNS 服务器进行的。为我解决的问题是编辑/etc/systemd/resolved.conf和添加:

    DNS=x.x.x.x
    Domains=corpname.local
    

    x.x.x.x我们的 AD DNS 服务器的 IP在哪里。然后运行service systemd-resolved restart。

    这对我来说似乎比上面发布的各种解决方案更干净,这些解决方案涉及添加符号链接以更改resolve.conf系统正在使用的等等。

    • 2
  7. Melebius
    2019-07-02T00:41:23+08:002019-07-02T00:41:23+08:00

    我的情况类似但有些不同:我们myserver在 Windows 上使用服务器名称,但这在 Ubuntu 16.04 上不起作用,我不得不使用myserver.mycompany.local. 升级到 18.04 后,我得到以下行为:

    $ ping myserver.mycompany.local
    ping: myserver.mycompany.local: Name or service not known
    
    $ ping myserver
    PING myserver.mycompany.local (192.168.x.y) 56(84) bytes of data.
    64 bytes from myserver.mycompany.local (192.168.x.y): icmp_seq=1 ttl=62 time=3.05 ms
    ...
    

    我只需要在我的应用程序中替换myserver.mycompany.local为。myserver

    • 0
  8. robbie.huffman
    2020-04-27T12:03:31+08:002020-04-27T12:03:31+08:00

    这让我在几个 Ubuntu 系统上工作:

    https://github.com/lathiat/nss-mdns#etcmdnsallow

    基本上把两行放在/etc/mdns.allow:

    .local.
    .local
    

    而且您可能需要更改/etc/nsswitch.conf为使用mdns4模块而不是mdns4_minimal. 值得注意的是,这在 Ubuntu Server 机器上是必需的,但在我的 Kubuntu 桌面上却不是。

    • 0

相关问题

  • 如何设置 VLAN 转发?

  • 如何将主机 Ubuntu 上的 VPN (tun0) 网络适配器映射到 VirtualBox 来宾 Windows?

  • 如何限制下载/上传带宽?

  • 如何通过 Windows 网络共享文件?

  • 面板小程序以文本形式显示当前网络流量?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何运行 .sh 脚本?

    • 16 个回答
  • Marko Smith

    如何安装 .tar.gz(或 .tar.bz2)文件?

    • 14 个回答
  • Marko Smith

    如何列出所有已安装的软件包

    • 24 个回答
  • Marko Smith

    无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗?

    • 25 个回答
  • Martin Hope
    Flimm 如何在没有 sudo 的情况下使用 docker? 2014-06-07 00:17:43 +0800 CST
  • Martin Hope
    Ivan 如何列出所有已安装的软件包 2010-12-17 18:08:49 +0800 CST
  • Martin Hope
    La Ode Adam Saputra 无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗? 2010-11-30 18:12:48 +0800 CST
  • Martin Hope
    David Barry 如何从命令行确定目录(文件夹)的总大小? 2010-08-06 10:20:23 +0800 CST
  • Martin Hope
    jfoucher “以下软件包已被保留:”为什么以及如何解决? 2010-08-01 13:59:22 +0800 CST
  • Martin Hope
    David Ashford 如何删除 PPA? 2010-07-30 01:09:42 +0800 CST

热门标签

10.10 10.04 gnome networking server command-line package-management software-recommendation sound xorg

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve