【问题标题】:How to configure DNSmasq to resolve an address always giving the current public ip on a specific network如何配置 DNSmasq 以解析地址,始终提供特定网络上的当前公共 IP
【发布时间】:2014-07-22 08:27:03
【问题描述】:

我在局域网中的一台机器上配置并运行了一个 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(en0)解析url,因为dns服务器和http服务器在同一台机器上运行,并且ip地址由DHCP服务器动态分配路由器。

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

【问题讨论】:

    标签: networking dns lan dnsmasq


    【解决方案1】:
    • 名称服务器不解析“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 运行机器上的主机文件中 - 它的名称服务器组件可以包括主机文件中的主机名,并解析它们。

    【讨论】:

      猜你喜欢
      • 2012-08-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-29
      • 2018-10-22
      • 2015-03-06
      • 2016-12-05
      • 1970-01-01
      相关资源
      最近更新 更多