【问题标题】:linux: adding hosts programmatically?linux:以编程方式添加主机?
【发布时间】:2010-12-07 12:22:40
【问题描述】:

有没有办法在 Linux 下以编程方式将主机添加到本地名称解析器?

我宁愿避免动态地摆弄 /etc/hosts...

示例:添加名称​​foo并将其绑定到本地端口127.1.2.3

用例:我安装了一个可以通过网络浏览器在本地访问的应用程序。我希望可以通过本地 URI 访问该应用程序。

【问题讨论】:

  • 我会说这是服务器故障材料
  • 它与如何以编程方式执行此任务有关,因此我认为 SO 是正确的。
  • 将主机名绑定到主机:端口?这是否意味着您希望连接到任何端口上的 foo 来连接到 localhost:9999?如果是这样,您需要的不仅仅是 DNS 配置。
  • 问题是他问的是如何动态修改DNS记录,和编程没有直接关系。所以这是一个变相的服务器故障问题。事实上,考虑到他尝试将 ip:port 映射到名称的编辑,似乎他可以使用一些服务器故障阅读 :-)
  • @Jean-Lou:只需以编程方式编辑 /etc/hosts 文件。开始时保存副本,如果失败,请恢复副本。对于这样一个微不足道的用途,应该绰绰有余。其他一切都会用激光杀死苍蝇

标签: linux dns


【解决方案1】:

我将使用最近的发现:使用 Avahi 包的多播 dns。一个例子可以在here找到。

【讨论】:

    【解决方案2】:

    添加名称​​foo并将其绑定到本地端口127.0.0.1:9999

    你想要什么?您可以将foo 127.0.0.1 添加到hosts 或在您的名称服务器中执行等效操作,但是在端口1234 上与foo 的连接将始终转到127.0.0.1:1234 - 无法根据名称将其重定向到端口9999,在调用 connect 时丢失。

    在 Linux 上,您可以将 IP 添加到环回设备(即ip addr add 127.1.2.3 dev lo),然后使用iptables 将所有发往 127.1.2.3:1234 的连接更改为转到 127.0.0.1:9999,但我可以'不要从你的问题中看出你想要的可观察行为。

    【讨论】:

      【解决方案3】:

      如果您只添加主机,那么一种非常安全的方法是

      echo -e "ip.add.re.ss\thostname" >> /etc/hosts
      

      现在,如果您想删除它们,它会开始变得多毛。我怀疑你也想删除它们。

      如果是这种情况,您可以使用动态 DNS,例如,BIND 有 nsupdate 工具来更新区域文件:

             $ nsupdate
             > update delete oldhost.example.com A
             > update add newhost.example.com 86400 A 172.16.1.1
             > send
      

      执行以下操作:

      oldhost.example.com 的任何 A 记录 被删除。和一个A记录 带有 IP 地址的 newhost.example.com 添加了 172.16.1.1。新增记录的 TTL 为 1 天(86400 秒)。

      【讨论】:

      • 我可以将名称“foo”绑定到例如端口 9999 上的本地地址 127.0.0.1 吗?
      • DNS 将 IP 地址映射到名称,端口不是 IP 地址的一部分。所以,没有。
      • @vinko:如何让 nsupdate 只更新 本地 dns 缓存,而不尝试与其他名称服务器通信?
      • 你不能:动态更新更新一个区域,而不是一个缓存。更新缓存不能通过标准方式完成(每个解析器可能有自己的专有方式,你使用哪一种?)
      • @bortzmeyer:还有其他方法吗?即本地缓存是否可以通过其他方式访问?
      【解决方案4】:

      您想要的谷歌搜索词是“动态 DNS”的“DDNS”。这是一种将记录动态添加到 DNS 服务器的技术,听起来正是您想要的。我很确定大多数 lunix 发行版中的绑定都支持它,但您可能需要阅读如何配置它。

      【讨论】:

      • OP 要求操作“本地名称解析器”。 DDNS 是一种解决方案,但不是“本地”解决方案(也不是最简单的)。
      猜你喜欢
      • 2023-03-28
      • 2014-01-26
      • 1970-01-01
      • 1970-01-01
      • 2013-08-19
      • 1970-01-01
      • 2011-01-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多