![](/img/trans.png)
[英]Is there a way to dynamically change hostname to ip address mapping in linux (without having to restart)?
[英]Change and sync hostname / ip address changes on debian linux
为了更改静态IP地址 ,我将/etc/network/interfaces
的内容设置为
auto lo
iface lo inet loopback
allow-hotplug eth0
iface eth0 inet static
address <newaddress>
netmask <netmask>
gateway <gateway>
dns-nameservers <dns1> <dns2>
然后做ifdown eth0 && ifup eth0
为了更改主机名 ,我执行以下操作
执行hostname <newname>
将/etc/hostname
内容设置为<newname>
在/etc/hosts
<oldname>
替换为<newname>
问题
ip地址和主机名更改均无效。
如果更改ip地址并ping主机名,它仍然解析为旧地址
如果更改主机名并ping新的主机名,则无法解析为IP
如果更改主机名并ping旧主机名,它仍然可用并解析了当前IP地址。
我重新启动计算机,但其行为仍然相同。
我想念什么?
父网络可以在其中发挥任何作用吗?
另请注意,我的机器认为主机名在更改后已更新。
是的resolv.conf适用于dns。 可以处理NAMES以及与互联网相关的所有内容。 如ping。 dns resolvc在本地天气是否具有服务器,因此也可以处理dns的主机名/ ect主机。 当您连接时,您的resolv.conf将从您的isp更新,或者您可以手动更改它/在桥接接口上设置一些更动态的东西
我认为这实际上不是问题,可以通过arp缓存来解释此行为。
ARP工具可操纵或显示内核的IPv4网络邻居,并且还以某种方式包括您的主机。
arp命令具有许多您可以使用的开关,例如,以下命令:
arp -n
此命令打印出arp缓存条目列表。
不幸的是没有命令刷新它,因此,您有2个选项。
选项1:您等待缓存更新(不会花很长时间)
选项2:您运行以下非常基本的脚本,然后看到:
#!/bin/sh
for i in `awk -F ' ' '{ if ( $1 ~ /[0-9{1,3}].[0-9{1,3}].[0-9{1,3}].[0-9{1,3}]/ ) print $1 }' /proc/net/arp` ;
do
arp -d $i
done
该脚本不是我的脚本,我报告了我通常运行的唯一脚本,该脚本最初是从以下示例中获取的:
http://www.lainoox.com/display-add-flush-arpcache-linux-arp/
我希望这会有所帮助。
更改/ etc / hostname会影响更改显示在终端,欢迎消息,日志中以及系统使用hostname
其他任何位置的hostname
。 这些都是虚荣的变化。
更改/ etc / hosts将更改您的本地主机名解析(即,将IP地址转换为主机名,反之亦然),任何DNS无法解析或您要在本地覆盖的内容。 默认情况下,本地文件将覆盖网络分辨率。 这是在/ etc / nsswitch中确定的,它说先使用本地文件,然后使用dns进行主机解析。
这里要记住的重要一点是,这些更改不会影响网络上其他对象如何确定此主机的ip地址或名称,这当然是通过DNS或它们本地的/ etc / hosts文件处理的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.