还有其他地方可以存放主机/机器名称吗?

还有其他地方可以存放主机/机器名称吗?

我有一台克隆的 VirtualBox 机器,我要求在克隆后清除 MAC 地址。机器名称从“node01”更改为“new-host-7.home”,我使用常规方法(主机名、传统文件中的更改等)将其更改为“node02”。一切似乎都发生了变化,直到我的 Java 程序获得旧的机器名称...

我的 /etc/hosts 文件:

127.0.0.1       node02.home     node02  localhost
192.168.25.25   node01.home     node01
192.168.25.27   node03.home     node03

我的 /etc/hostname 文件:

node02

我的提示:

root@node02:/

但是当我启动一个询问机器名称的 Java 程序时,我得到的是旧的机器名称:

new-host-7.home

以下是我如何得到这个名字的:

InetAddress ip = getFirstNonLoopbackAddress(true, false);
this.machineName = ip.getCanonicalHostName();

方法:

private InetAddress getFirstNonLoopbackAddress(boolean preferIpv4, boolean preferIPv6) throws SocketException {
    Enumeration<NetworkInterface> en = NetworkInterface.getNetworkInterfaces();
    while (en.hasMoreElements()) {
        NetworkInterface i = en.nextElement();
        for (Enumeration<InetAddress> en2 = i.getInetAddresses(); en2.hasMoreElements();) {
            InetAddress addr = en2.nextElement();
            if (!addr.isLoopbackAddress()) {
                if (addr instanceof Inet4Address) {
                    if (preferIPv6) {
                        continue;
                    }
                    return addr;
                }
                if (addr instanceof Inet6Address) {
                    if (preferIpv4) {
                        continue;
                    }
                    return addr;
                }
            }
        }
    }
    return null;
} 

我不知道 AskUbuntu 还是 StackOverflow 是回答这个问题的更好的地方。

短暂性脑缺血。

编辑:

ip -o a

1: lo    inet 127.0.0.1/8 scope host lo\       valid_lft forever preferred_lft forever
2: enp0s3    inet 192.168.25.26/24 brd 192.168.25.255 scope global enp0s3\       valid_lft forever preferred_lft forever

getent hosts

127.0.0.1       node02.home node02 localhost
192.168.25.25   node01.home node01
192.168.25.27   node03.home node03
127.0.0.1       localhost ip6-localhost ip6-loopback

答案1

根据对初始问题的更新,您可以看到 IP 命令返回 192.168.25.26 作为正在使用的 IP 地址,但您尚未在此 IP 地址上定义主机名。

/etc/hosts需要以下条目:

192.168.25.26 node02.home

重新启动后,您应该会看到网络更新的 DNS,并且 Java 代码返回正确的主机名。

相关内容