В течение нескольких лет я использовал Linux в качестве основной системы, в частности Fedora, и всегда видел, что мое имя хоста установлено на «localhost», за исключением случаев, когда я подключаюсь к некоторым сетям, и он становится моим IP. Сегодня я испытал следующее поведение, которое мне трудно понять, хотя.
Я установил установку Ubuntu на другой раздел моего ноутбука, задав имя компьютера / имя хоста во время установки Ubuntu. Когда я перезагружался обратно в Fedora, Fedora обновила мое имя хоста до имени, которое я указала при установке Ubuntu.
Я всегда думал, что имя хоста было настроено и сохранено в разделе дистрибутива дистрибутива, и на самом деле содержимое / etc / hostname в Fedora по-прежнему читается как «localhost.localdomain», но при запуске hostname
команды отображается новое имя хоста. Обе установки имеют общий загрузочный раздел efi, но в остальном дискретны. Мне интересно, откуда и почему установка Fedora читает новое имя хоста?
hosts:
в /etc/nsswitch.conf?hosts: files mdns4_minimal [NOTFOUND=return] dns myhostname
Ответы:
hostname
Программа выполняет uname системного вызова, как можно видеть из работы:На странице руководства uname syscall говорится, что syscall извлекает из ядра следующую структуру:
Таким образом, доменное имя происходит из системы NIS / YP, если верить комментарию. Поэтому, скорее всего, в вашей сети может быть служба NIS / YP, которая возвращает вам имя, заданное операционной системой Ubuntu.
источник
hostname(1)
Справочную страницу, которая объясняет, как имя хоста устанавливается и возвращается. Несмотря на сходство имен, доменное имя NIS / YP не имеет ничего общего с доменным именем FQDN / DNS, которое возвращается распознавателем. Если вы не настроили NIS / YP, то имя домена NIS / YP будет не задано.В системе Linux есть два независимых (!) Понятия имени хоста.
Существует то, что ядро считает локальным именем хоста (которое обрабатывается системными вызовами gethostname / uname и sethostname) независимо от любого сетевого подключения - эти механизмы будут существовать, если вы соберете ядро без возможности работы в сети TCP / IP.
Существует одно или несколько имен хостов, которые фактически подключены к TCP / IP (или другому сетевому стеку - не все сети в мире - это IP!) Адресов хоста, и они обрабатываются в пространстве пользователя функциями библиотеки резолвера (частью libc), который будет определять такое имя путем интерпретации источников (локальный файл / etc / hosts, DNS, NIS ....) в соответствии с правилами, которые вы дадите им в соответствующих файлах конфигурации (/etc/nsswitch.conf, / etc /host.conf и т.д ...).
источник
Вероятно, Ubuntu подключился к Интернету через домашний маршрутизатор во время установки. Для этого он сообщил свое имя хоста маршрутизатору и получил временный локальный IP-адрес.
Когда вы сейчас перезагрузитесь в Fedora, он подключится к тому же маршрутизатору, чтобы получить свой IP-адрес, но старый договор аренды, созданный для Ubuntu, все еще действителен. Поскольку это тот же компьютер с той же сетевой картой и тем же аппаратным MAC-адресом, он будет использовать тот же срок аренды.
Я предполагаю, что маршрутизатор отправляет имя хоста, на котором была зарегистрирована аренда IP, и Fedora принимает его.
К сожалению, у меня нет доказательств или цитат в поддержку моего ответа, я могу просто рассказать о личном опыте установки Ubuntu в режиме двойной загрузки с Windows. В то время Ubuntu отказывался устанавливать то же имя хоста во время установки, которое я использовал в Windows, потому что утверждало, что это имя уже присутствовало в сети. Вероятно, у нас что-то подобное происходит здесь.
Чтобы убедиться, что то, что я предполагаю, применимо и к вашей ситуации, попробуйте отменить аренду IP в интерфейсе конфигурации вашего маршрутизатора, а затем перезагрузите Fedora. Если он больше не принимает имя хоста Ubuntu, тогда я должен быть прав.
источник