我有一台运行 EasyPHP 的 Windows 机器来托管我的网站。
它位于未连接到互联网但位于公共场所的无线网络上。
可以在客户端的浏览器中输入服务器的 IP 地址来连接到网站,但我希望通过域名来做到这一点,即而mysite.local
不是192.168.1.100
。
由于用户主要是拥有智能手机的公众成员,因此我无法编辑他们的主机文件。
我是否需要运行 DNS 服务器来通过名称访问这个站点?
或者有一个简单的解决办法?
答案1
是的,您需要某种 DNS 服务器。有些 Wi-Fi 路由器内置有 DNS 服务。您使用什么作为此网络上的 DHCP 服务器?也许您可以在同一个盒子上运行 DNS 服务。无论如何,您都需要配置 DHCP 服务器,以便在客户端通过 DHCP 获取 IP 地址租约时告知他们有关您的 DNS 服务器的信息。
如果这类似于某种艺术画廊装置或类似的东西,这是人们需要从该网络访问的唯一网络服务器,那么您可以考虑将您的网络服务器设置为网络上的“强制门户”。如果您曾经加入过公共或商业 Wi-Fi 网络,并让其将您的所有网络请求重定向到他们自己的基于网络的登录屏幕,那么您就知道什么是强制门户。您可以使用该功能强制所有人访问您的网站。您的网站并不要求他们真正为他们提供登录“网络其余部分”的方法,因此您只需利用强制门户重定向功能强制人们访问您的网站即可。
我相信,当您在 Wi-Fi 路由器上运行 OpenWrt 等售后固件发行版时,您可以做到这一点。否则,您可能需要企业级或公共接入级 Wi-Fi 路由器才能获得这种功能。
这就是为什么没有 DNS 服务器就无法进行主机名到 IP 地址映射的原因:
IETF(发布 RFC 的互联网标准机构)有一种使“.local”域名无需 DNS 服务器即可工作的方法;该方法称为 ZeroConf 或“IETF 零配置网络”,Apple 的 Bonjour 就是该方法的一种实现。Linux 版 Avahi 是另一种实现。
不幸的是,微软有另一种不兼容的东西,称为 LLMNR,可以让“.local”域在没有 DNS 服务器的情况下工作。微软的“Windows 零配置”是一个完全独立的东西,但名字非常混乱,尤其是两者都可以应用于 Wi-Fi 网络。
我不知道 Android 目前在这方面的状况。我不知道 Android 设备是否默认运行 Avahi 或任何类型的 IETF ZeroConf 守护程序。
因此,实际上不存在任何本地网络、无服务器的主机名到 IP 地址查找标准,可以保证在所有个人计算机和智能手机/平板电脑操作系统的所有浏览器上开箱即用。