我在局域网中的计算机上配置并运行了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?
答案 0 :(得分:1)
现在为您的解决方案: 如果,正如您所说,您的网络服务器的地址是动态分配的,甚至可能是您使用的名称服务器相同的dnsmasq,dnsmasq可以在请求DHCP租约时创建可解析的名称,并将分配的IP地址与它。添加的名称由您控制:Web服务器上的DHCP客户端可以告知DHCP服务器(dnsmasq)它与所分配的IP地址关联的名称。您也可以在dnsmasq配置中为该特定客户端修复名称。既然有了可以解决的名称,你可以再次通过dnsmasq配置为它引入一个别名(我认为dnsmasq配置实际上会调用这个"别名" - 它模拟了一个CNAME记录)。但最好通过将可解析名称设置为所需名称来避免这种情况。
如果你的局域网上的DHCP服务器不是你也用作名称服务器的dnsmasq,事情就会变得复杂一些:在上面的场景中,你会受益于来自DHCP服务器和名称服务器的协同效应。相同的程序,因此已在内部交换信息。如果情况并非如此,您必须设置DHCP服务器,以便在请求或发布租约时通知名称服务器。 DHCP服务器通常为此目的提供挂钩,允许您在发生此类事件时运行脚本,然后执行操作以更新主机所属的区域。
但您可以简单地考虑告诉dnsmasq(其DHCP服务器组件)为您的网络服务器分配一个静态IP地址,并将该地址与主机名和别名一起添加到dnsmasq运行的机器上的hosts文件中 - 其名称服务器组件可以包括hosts文件中的主机名,并解析它们。