【问题标题】:Is there a way to dynamically change hostname to ip address mapping in linux (without having to restart)?有没有办法在Linux中动态更改主机名到IP地址映射(无需重新启动)?
【发布时间】:2015-07-18 16:56:23
【问题描述】:

在 linux 系统中,我想你可以在 /etc/hosts 中配置主机名到 IP 地址的映射,但我想如果你更改特定主机名的映射,你必须重新启动才能使更改生效。

有没有办法动态(无需重新启动)更改主机名到不同 IP 地址的映射?

【问题讨论】:

  • 你的猜测是错误的。您不必重新启动。
  • 你根本不需要重启。
  • 哦,这很有趣。谢谢你告诉我!
  • 为什么这么好笑?为什么需要重新启动? Linux 不是 MS-Windows,它著名的“您已经移动了鼠标指针!请重新启动系统以使更改生效。”
  • 大部分 linux 任务由服务处理。大部分时间你只需要重启服务,除非你正在更改内核

标签: linux


【解决方案1】:

在 linux 中,管理员可以指定应用程序询问域名信息的来源的顺序。

这个文件是

/etc/nsswitch.conf

dns 的默认设置是:

hosts: files dns

所以是的,您可以在 /etc/hosts 中添加您的站点,您的应用程序将遵循该顺序。您不需要重新启动,是的,您可以动态执行。

更多信息类型:

man nsswitch.conf

尽管您的应用程序有一种方法可以绕过此功能。这就是应用程序可以通过远程点“请求 dns”或者应用程序尚未构建为使用操作系统 gethostbyname/gethostbyaddr 系统调用的时候。

【讨论】:

    【解决方案2】:

    您只需要更改 /etc/hosts 中的 IP 地址。大多数情况下,此更改会自动传播到 NS 缓存中。但是,有时您只需要刷新系统上的名称服务器缓存。根据您运行的实际步骤可能会有所不同。我将列出一些受欢迎的:

    NSCD

    $ sudo /etc/init.d/nscd restart
    

    $ sudo service nscd restart
    

    $ sudo systemctl restart nscd
    

    dnsmasq

    $ sudo /etc/init.d/dnsmasq restart
    

    $ sudo service dnsmasq restart 
    

    $ sudo systemctl restart dnsmasq
    

    BIND 服务器 dns 缓存

    与 OP 问题无关,但以防有人在这里结束

    $ sudo rndc restart
    

    $ sudo rndc flushname foo.local
    

    foo.local 是您希望输入的特定主机名

    【讨论】:

      猜你喜欢
      • 2023-03-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-10
      • 1970-01-01
      • 2015-05-05
      • 2018-03-24
      • 2013-10-15
      相关资源
      最近更新 更多