如何配置DNSmasq以解析始终在特定网络上提供当前公用IP的地址

时间:2014-07-22 08:27:03

标签: networking dns lan dnsmasq

我在局域网中的计算机上配置并运行了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

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

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

1 个答案:

答案 0 :(得分:1)

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

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

如果你的局域网上的DHCP服务器不是你也用作名称服务器的dnsmasq,事情就会变得复杂一些:在上面的场景中,你会受益于来自DHCP服务器和名称服务器的协同效应。相同的程序,因此已在内部交换信息。如果情况并非如此,您必须设置DHCP服务器,以便在请求或发布租约时通知名称服务器。 DHCP服务器通常为此目的提供挂钩,允许您在发生此类事件时运行脚本,然后执行操作以更新主机所属的区域。

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