1

我在局域网中的一台机器上配置并运行了一个 http 服务器 (Apache)。我希望通过特定 URL(例如 www.mywebsite.mylan)连接到 LAN 的所有计算机都可以访问在其上运行的网站。

我使用 DNSmasq 作为 dns 服务器(但我对它完全陌生)。服务器机器运行 Os X 10.9。

我看到为了让它解析一个特定的地址,在 DNSmasq 配置中需要如下一行:

address=/www.mywebsite.mylan/127.0.0.1

我想知道是否有可能有以下内容:

address=/www.mywebsite.mylan/self_en0

使用本地机器在特定网络上的公共 ip 解析 url ( en0),因为 dns 服务器和 http 服务器在同一台机器上运行,并且 ip 地址由路由器的 DHCP 服务器动态分配。

有没有可行的方法来获得它,或者让它工作的唯一方法是为服务器机器使用静态 ip?

4

1 回答 1

2
  • 名称服务器不解析“URL”。他们解析主机名。URL 是一个网络服务器概念,其中可能包含主机名。名称服务器无法处理的 URL 的某些部分(URI、目录/文件规范、端口号、分隔这些 URL 组件的字符)
  • A 记录(这是您使用 dnsmasq address= config 指令模拟的内容)必须有一个 ip 地址作为值,而不是接口名称。
  • nameserver 和 webserver 是在同一台机器上运行还是在不同的机器上运行是无关紧要的。
  • 使用网络服务器的公共地址可能有效,也可能无效。它取决于几个因素:路由、防火墙、服务器配置(接口绑定)

现在为您的解决方案:如果,如您所说,您的网络服务器的地址是动态分配的,甚至可能由您用作名称服务器的同一个 dnsmasq 分配,dnsmasq 可以在请求 DHCP 租约时创建一个可解析的名称,并将分配的ip地址。添加的名称在您的控制之下:网络服务器上的 DHCP 客户端可以告诉 DHCP 服务器 (dnsmasq) 它喜欢与分配的 IP 地址关联的名称。您也可以在 dnsmasq 配置中为该特定客户端修复名称。现在有了一个可以解析的名称,您可以选择再次通过 dnsmasq 配置为其引入别名(我认为 dnsmasq 配置实际上称之为“别名” - 它模拟 CNAME 记录)。但最好避免这种情况,

如果您 LAN 上的 DHCP 服务器不是您也用作名称服务器的 dnsmasq,事情会变得有点复杂:在上述情况下,您可以从 DHCP 服务器和名称服务器作为同一程序的组件的协同效应中受益,因此已经在内部交换信息。如果不是这种情况,您必须设置您的 DHCP 服务器,以便在请求或释放租约时通知名称服务器。DHCP 服务器通常为此目的提供挂钩,允许您在发生此类事件时运行脚本,然后执行操作以更新您的主机所属的区域。

但是您可以简单地考虑告诉 dnsmasq(它的 DHCP 服务器组件)为您的网络服务器分配一个静态 IP 地址,并将该地址与主机名和别名一起添加到 dnsmasq 运行的机器上的主机文件中 - 它的名称服务器组件可以包括来自主机文件,并解决它们。

于 2014-07-22T09:58:54.543 回答