设置可解析的本地网络主机名?

设置可解析的本地网络主机名?

我遇到了这样的情况:

raspi3-网络-02

将 Raspberry Pi 3 设置为 WiFi 接入点(按照https://frillip.com/using-your-raspberry-pi-3-as-a-wifi-access-point-with-hostapd/) 和 Web 服务器。我想给它一个主机名,比如说myrpi,它将可以在本地网络上从任何客户端解析 - 无论它们是有线还是无线连接 - 这样当我http://myrpi在任何本地 PC(Windows、Ubuntu)上的任何浏览器(Firefox、Chrome)中输入 Web 地址时,我将在 Raspberry Pi 的端口 80 上获得网页 - 而无需更改 Web 客户端计算机上的任何内容(即图像上的 Windows 和 Ubuntu PC,如果 RPi 是 Web 服务器)

我首先发现的是这个:

所以,我照做了。现在我在 RPi 上有:

  • /etc/hosts->127.0.1.1 myrpi
  • /etc/hostname->myrpi

然后我sudo apt-get install avahi-daemon在 RPi 上执行了此操作并重新启动。

然后我从 Ubuntu PC(作为 WiFi 客户端连接到 RPi)上的命令行尝试:

$ ping myrpi.local
PING myrpi.local (172.24.1.1) 56(84) bytes of data.
64 bytes from 172.24.1.1: icmp_seq=1 ttl=64 time=1.54 ms
...
$ wget -O- myrpi.local
Resolving myrpi.local (myrpi.local)... 172.24.1.1
Connecting to myrpi.local (myrpi.local)|172.24.1.1|:80... connected.
HTTP request sent, awaiting response... 200 OK
...
<p>This is the default web page for this server.</p>
...

所以,到目前为止看起来不错 - 但是如果我http://myrpi.local/在 Ubuntu PC 上的 Firefox 或 Chromium 中输入 Web 地址,则会出现“找不到服务器”的信息。

这可能与 Ubuntu 上的 Avahi 的状态有关:

[已解决] 无法访问企业局域网上的 .local 域中的服务器

这些在 Ubuntu 中不起作用。这是因为 Ubuntu 默认安装 AVAHI Zeroconf mD​​NS 系统,将其配置为“拥有”.local 域,并在主机名解析顺序中将其优先于常规 DNS。

所以,我想,我并不真正关心是否.local附加到域名 - 我只是认为事情应该这样做。所以我尝试直接从 Ubuntu PC 调用主机名:

$ ping myrpi
PING myrpi (127.0.1.1) 56(84) bytes of data.
64 bytes from myUbuntuLaptop (127.0.1.1): icmp_seq=1 ttl=64 time=0.022 ms
...
$ wget -O- http://myrpi/
--2017-01-26 13:38:56--  http://myrpi/
Resolving myrpi (myrpi)... 127.0.1.1
Connecting to myrpi (myrpi)|127.0.1.1|:80... failed: Connection refused.

这里甚至不起作用wget(显然,Firefox 和 Chromium 浏览器也不起作用),虽然原因很清楚 - 这里myrpi解析为 127.0.1.1,这是 RPi 逐字写的/etc/hosts- 但是一旦在 Ubuntu 笔记本电脑上,相同的地址意味着“这台笔记本电脑”,因为它是一个环回地址,并且由于我的 Ubuntu 笔记本电脑上没有运行网络服务器,整个过程失败。

现在 - 有趣的是:在这个设置中,Windows PC(我认为是 Windows 7)myrpi.local解析为192.168.0.51- 并且网页http://myrpi.local/在 Windows 上的 Firefox 和 Chrome 中都可以正常工作?!

作为最后的措施,我尝试/etc/nsswitch.conf在 RPi 上进行更改:

# hosts:          files mdns4_minimal [NOTFOUND=return] dns mdns4 # original
hosts:          files dns mdns4 mdns4_minimal

... 并重新启动 - 但是,Ubuntu 上的浏览​​器仍然无法访问http://myrpi/http://myrpi.local/。我的/etc/resolv.confRPi 仍然没有变化。

那么,我如何.local为 Raspberry Pi 指定一个在本地网络上可解析的名称(或不命名),以便同一本地网络上的任何其他 PC 都可以从 Raspberry Pi 检索 Web 服务器内容,无论该 PC 上运行的操作系统和浏览器是什么?

相关内容