Есть ли другое место для хоста / имя машины?
У меня есть клонированная машина 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 вернет правильное имя хоста.