Ubuntu Server 20.04.3 静态 IP 主机名无法在局域网中解析

Ubuntu Server 20.04.3 静态 IP 主机名无法在局域网中解析

正在起作用的是:

  • 互联网
  • 配置的静态 IP
  • 对局域网内的其他机器进行 ping 操作(IP 和主机名)

我正在尝试解决的问题:

我无法使用主机名从其他客户端 ping/ssh 等 Ubuntu 服务器。IP 工作正常。

我有一个 AVM Fritz Box 路由器,用作 DHCP/DNS 服务器。我的 Windows 10 计算机花了几天时间才通过主机名可用,我以为服务器也会这样,但已经过去一周了,仍然没有任何动静。

路由器在 GUI 中显示主机名。

安装时我选择了 DHCP,我可以使用主机名访问服务器,当我切换到静态 IP 时它停止工作。

/etc/netplan/00-installer-config.yaml:

# This is the network config written by 'subiquity'
network:
  renderer: networkd
  ethernets:
    enp2s0:
      dhcp4: false
      dhcp6: false
  version: 2

  bridges:
    br0:
      interfaces: [enp2s0]
      addresses:
        - 192.168.1.4/24
      gateway4: 192.168.1.1
      nameservers:
        addresses:
          - 192.168.1.1
        search:
          - fritz.box
      dhcp4: no
      dhcp6: no

我正在使用 LXD 容器,这就是我需要桥接的原因。但在我添加 br0 之前它就无法工作。

我尝试过的:

  • 乱搞systemd-已解决 我按照某个地方的建议禁用了它,但没有用。尝试强制将 192.168.1.1 设置为/etc/resolv.conf,也不起作用。
  • 我最近在容器中安装了 PiHole,配置了路由器将所有 DNS 请求重定向到它,据我所知,它运行良好。我尝试通过 PiHole gui 添加手动 DNS 记录,仍然没有结果。尝试手动将服务器 IP 添加到/etc/hosts在 PiHole 容器中......什么都没有。
  • 我在虚拟机中安装了另一个 Ubuntu Server 实例,在安装程序中配置了静态 IP,并比较了配置文件(至少是我知道的配置文件)。这就是我search:从 netplan yaml 文件中得到该行的地方,不幸的是,没有太多其他信息。

对我的 Windows 10 PC 执行 ping 操作时,该 PC 也配置了静态 IP ( ping pc-hostname),结果显示192.168.1.2 pc-主机名.fritz.box

很难获得这方面的信息。配置静态 IP 的方法在不同的版本之间有很大差异,甚至在同一版本的服务器和桌面之间也是如此。从我找到的几篇使用 20.04 netplan 方法的文章和博客文章来看,它们似乎都没有什么不同。

编辑:

IP地址:

fritz.box 192.168.1.1
ubuntuserver 192.168.1.4
Win10 192.168.1.2
PiHole 192.168.1.5

答案1

声誉不足以评论 Sergs 的回答。

使用 Fritzbox 7590 和具有静态 IP 的 ubuntu 服务器,编辑 /etc/systemd/resolved.conf作品:

[Resolve]
MulticastDNS=yes
LLMNR=yes

使用此配置,我可以使用其主机名 ping 机器。在 Fritzbox 的 Web 前端,机器的主机名是正确的,而不是 PC-192-168-178-XX。

答案2

这里有很多事情要做。首先,检查您的 DNS 配置。

$ nslookup
> server 182.168.1.1
Default server: 192.168.1.1
Address: 192.168.1.1#53
> 192.168.1.4
< Here you will probably get an error >

上面的代码示例看起来有点奇怪,但您需要输入 nslookup,然后输入“服务器 192.168.1.1”,然后输入要查询的主机的 IP。在此示例中,我选择了您使用的 IP。错误应该来自未配置 DNS 条目。

要配置您的 DNS,您可能需要做两件事。

  1. 使用 DHCP,这可能会导致您的路由器将您请求的名称与 LAN 上的 DNS 条目相关联。使用“hostnamectl set-hostname yourname”来设置您想要的主机名。
  2. 登录您的路由器并为 IP 地址创建一个静态条目。

我希望这能有所帮助!

答案3

好吧,我终于明白了,我必须在/etc/systemd/resolved.conf

[Resolve]
MulticastDNS=yes
LLMNR=no # You may need to set this as well, not sure

说实话,我不知道什么组合具体来说为了做到这一点,我在后台设置了一个 Powershell 脚本,只要它能够 ping Ubuntu 服务器的主机名,它就会发出哔哔声。我摆弄了一下配置,resolvectl实用程序,更改与此配置中基本相同的设置,仅针对每个接口。在我设置 MulticastDNS 后,脚本几乎立即发出哔哔声。您可能需要执行sudo systemctl 重启 systemd-resolved在它开始工作之前。

相关内容