hostname -i 和 ip addr linux 命令有什么区别

hostname -i 和 ip addr linux 命令有什么区别

我花了几乎一整天的时间才弄清楚为什么我新创建的虚拟机没有分配 IP 地址。我使用的命令hostname -i返回 127.0.1.1,但是使用后ip addr我终于可以获取虚拟机的 IP 地址。

有人能解释一下为什么hostname -i没有返回 IP 地址吗?是不是因为 VM 内置在我的 HOST 机器中,并且 hostname 命令在主机上运行,​​而不是在虚拟机上运行?

答案1

从该命令的手册页中hostname

Hostname is used to display the system's DNS name, and to display or set its hostname or NIS domain name.

从该命令的手册页中ip

ip - show / manipulate routing, network devices, interfaces and tunnels

当您运行该命令时,它会显示与系统名称关联的 IP,而不是与或命令正确的hostname -i网卡关联的 IP 地址。ip addrip a

/etc/hostshostname 命令直接链接到和文件的内容/etc/hostname

举例说明:

假设我的主机名是“linux123”,并且只提供了 IP 192.168.0.3动态地通过 DHCP 连接到 eth0 网卡,假设我将来要安装一个 vpn,并且要与静止的IP 172.20.0.5

我现在将以下行添加到/etc/hosts文件中:

172.20.0.5 linux123

现在,如果我启动hostname -i命令,答案将是

127.0.1.1 172.20.0.5

实际上,现在系统已经知道它是 172.20.0.5,即使 VPN 尚未安装,因此具有该 IP 的 tun0 接口尚不存在;这是因为我将 IP 地址映射到本地系统名称解析系统(/etc/hosts)。

为什么我没有添加 192.168.0.3?因为这是一个可能会更改的地址,并且将其“永久”映射到我的系统名称可能会导致将来出现错误/问题。

相关内容