LINUX.ORG.RU
ФорумTalks

А как вы считаете, место ли имени хоста в /etc/hosts?

 , ,


0

1

Вскрыл тут баг, когда отсутствие hostname'а в /etc/hosts приводит к тормозам. Однако, не все считают, что такое положение вещей должно исправляться именно добавлением hostname'а в /etc/hosts.

Оказывается, это вопрос архитектурной чистоты, сторонники которой считают так:

Software that runs into delays due to trying to resolving the hostname via DNS most likely is misguided and needs to be fixed.

А как считаете вы?

★★★★★
Ответ на: комментарий от Harald

Я его не удалял. У меня hostname не «localhost».

> hostname
maganux
>
И вот пока я не добавил «maganux» в /etc/hosts были тормоза.

В одном из чатов другой человек тоже свидетельствует о подобном. Причём, говорит, такое встречается не только на линуксах, но и в FreeBSD. Общая проблема для всех Unix'ов.

saahriktu ★★★★★
() автор топика

Software that runs into delays due to trying to resolving the hostname via DNS most likely is misguided and needs to be fixed.

ИМХО, утверждение крайне спорное, и вот почему.

Если клиентской софтине нужно определить хост куда подключаться а DNS определяет его, скажем, секунду, то что тут в софтине вообще можно пофиксить ? SSH-клиент запускаемый из командной строки, что, может как-то телепатически ДО своего запуска и передачи ему имени хоста из командной строки - определить куда ему надо коннектиться и зарезольвить этот домен заранее ?

Каждая программа работающая с сетью, что, должна как-то превентивно резольвить все хосты к которым возможно в ближайшее время будет осуществляться подключение ? Дык, юзайте электрон, он как раз это умеет - превентивно определять домены из вех ссылок и внешних ардесов и даже ходить по ним пока пользователь не кликнет на ссылку. Только вот потом от этих-же людей - начинаются жалобы, что софт пошел слишком жирный.

Я считаю, что правильное решение проблемы - это делать софт максимально простым, без всей этой предиктивной туфты. А на стороне ОС просто должен быть сервис который будет кешировать-DNS адреса и периодически обновлять самые часто-используемые в фоне. И такой сервис уже сто лет как есть в венде, и некоторое время в линуксе (systemd-resolved).

DawnCaster ★★
()
Ответ на: комментарий от saahriktu

Ну, отдавать hostname своей машины полностью на откуп DNS сервису - такая себе идея. Работает это дело нормально только в организациях, где управляется всё из одной точки. В обычной жизни - я бы не хотел что-бы мой хост менялся по велению роутера\гейтвея\dhcp-dns-сервера, над которым я могу даже не иметь контроля.

Для домашнего компуктера - надо всё-таки прописывать его в hosts. Вам-же будет проще жить, когда роутер зависнет.

DawnCaster ★★
()
Последнее исправление: DawnCaster (всего исправлений: 1)
Ответ на: комментарий от DawnCaster

Там речь не про все hostname'ы в природе, а конкретно про hostname локальной машины. Что софт в принципе не должен пытаться получать hostname локальной машины, а потом пытаться получать по нему доступ к машине. Что для этого случая в него сразу должны быть захардкожены «127.0.0.1» и "::1". А если такое не захардкожено, то это, значит, архитектурно негодный софт, поведение которого не может рассматриваться как аргумент для включения hostname'а локальной машины в /etc/hosts.

saahriktu ★★★★★
() автор топика
Последнее исправление: saahriktu (всего исправлений: 1)
Ответ на: комментарий от saahriktu

Там речь не про все hostname’ы в природе

Ну, какую цитату вы привели, так я и отвечаю на неё

resolving the hostname via DNS

Про локальный хостнейм в цитате этих просвещённых мудрецов поборников чистоты - ни слова. С тезисом из цитаты - я не согласен и причину объяснил.

DawnCaster ★★
()

Полностью согласен со сторонниками нормально реализованного софта.

pon4ik ★★★★★
()

Ну а насчёт того - баг это или нет: надо смотреть что за софт. Если софт именно в своей архитектуре подключается по сети чисто локально, но при этом каждый раз резольвит хостнейм через DNS - это однозначно кривой софт.

А если софт подключается к конкретному указанному ВАМИ хостнейму, то он не обязан знать локальный он или нет. В /etc/hosts можно прописать только «localhost» и не прописывать «hostname» который может управляться DNS.

DawnCaster ★★
()
Ответ на: комментарий от wandrien

Это проблема в архитектуре libc, nss и остальных связанных библиотеках. Опять-же софт не должен ничего об этом всём знать, где там что дублируется. Ему сказали - подключайся по этому имени. Он его зарезольвил используя стандартные методы стандартных библиотек, и подключился. Вот и всё.

DawnCaster ★★
()
Последнее исправление: DawnCaster (всего исправлений: 1)

Вскрыл тут баг, когда отсутствие hostname'а в /etc/hosts приводит к тормозам.

вообще это не баг, а фича.

Software that runs into delays due to trying to resolving the hostname via DNS most likely is misguided and needs to be fixed.

А Поттеринг это разве не решил через /etc/systemd/system/????

Shadow ★★★★★
()

Не совсем понял, что в цитате сказано, скорей всего вырвано из контекста. Если что-то обращается напрямую к функциям ресолвера (DNS), в обход того, что прописано в nsswitch.conf, то, конечно, это криво. А так да, локальное имя нужно в /etc/hosts.

xtouqh
()

Мы считаем, что существует установленный порядок резолва имени в адрес и держать hostname в hosts является нормой.

targitaj ★★★★★
()

Мануалы к некоторому софту прямо требуют, чтобы хостнейм был прописан в /etc/hosts. При том, иногда требуют, чтобы он был прописан так же не только для loopback интерфейса, но и для всех реальных.
Если ты такой софт используешь, что очевидно, что надо прописывать.

Khnazile ★★★★★
()

да, midnight commander этим грешил.

sergej ★★★★★
()

Не всем нужно отсутствие тормозов от резолвинга.

nvidia
()
Ответ на: комментарий от saahriktu

Хаха. Читаю баг и плачу. Вовремя я с сузи свалил, у них всё продолжает гнить и разваливаться. Теперь уже до основ добрались.

DawnCaster ★★
()
Ответ на: комментарий от DawnCaster

Не всё так плохо. Напильник, конечно, требуется, но в целом собирают они его нормально, да и дистрибутив продолжает входить в топ дистрибутивов с точки зрения корпораций. Вот в каких дистрибутивах сейчас разработчики той же библиотеки Qt 6 будут её тестировать? Открываем список и видим:

Ubuntu 20.04 (64bit Intel; gcc9)
CentOS 8.1 (64bit Intel; gcc9)
SLES 15 (SUSE Linux Enterprise Server, 64bit Intel; gcc10)
Open SUSE 15.1 (64bit; gcc9)

saahriktu ★★★★★
() автор топика
Ответ на: комментарий от saahriktu

No, the hostname must not be written into /etc/hosts. For all the reasons discussed in the other bugs.

И никаких other bugs с хоть сколько-то внятным обьяснением:

https://bugzilla.suse.com/show_bug.cgi?id=964846 - пусто https://bugzilla.suse.com/show_bug.cgi?id=972463#c45 - нет доступа

Нипанятна🤷🏻‍♂️

xtouqh
()

Стоп. А ты на сусю с магеи переполз? Отчего?

Если захотелось крепкой корпоративной руки, то почему не шапка?

chenbr0
()
Ответ на: комментарий от saahriktu

Это не проблема, сделай глубокий вдох и подумай, чем отличается hostname и запись в hosts?

ioway
()
Ответ на: комментарий от saahriktu

Увы, по моим критериям качества: сузя - всё. А я ведь её и в коммерческом виде использовал, за бабло.

Ubuntu

Вот на неё как раз и свалил, на серверах уже частично, дома - совсем недавно. Когда выйдет новый стабильный дебиан - свалю на него, а там уже хоть трава не расти: если придёт день когда дебиан совсем испортится, то скорее всего остальных дистров к тому моменту уже не останется совсем, и вообще можно будет уходить из специальности (сразу в деревню, доживать жизнь и растить огурцы).

DawnCaster ★★
()
Ответ на: комментарий от xtouqh

Дык и я о том-же. У каких-то из их крупных клиентов какая-то их кривая поделка сломалась - и вместо того что-бы чинить её, в сузе сломали hosts сразу всем.

DawnCaster ★★
()
Последнее исправление: DawnCaster (всего исправлений: 1)
Ответ на: комментарий от chenbr0

Маганукс. Производное от якутского «маган» - «белый». Корпус моего системника белого цвета. А первые 5 лет своей жизни я жил в селе Маган (оно реально существует, да) рядом с городом Якутском.

saahriktu ★★★★★
() автор топика
Ответ на: комментарий от chenbr0

Пока что ещё не до конца перешёл. Но пишу сейчас из Зюзи и есть такой вариант, да. Хотя вполне могу и назад Магейю развернуть в любой момент.

В CentOS'е слишком старые версии пакетов, а в Федоре слишком новые. Версии пакетов в стабильной Зюзе придерживаются золотой середины.

А вариант с Зюзей я и до этого рассматривал по той причине, что у неё более большое сообщество (а, значит, наработки для неё полезны большему кол-ву людей) и маинтейнеры в неё собирают те пакеты, на которые нет сил у маинтейнеров Магейи (например, ghc).

Но мне не нравилось как в ней выглядел FVWM. А XFCE в openSUSE выглядит вполне по-человечески.

saahriktu ★★★★★
() автор топика
Последнее исправление: saahriktu (всего исправлений: 1)
Ответ на: комментарий от saahriktu

более большое сообщество

Больше магеи? А как ты считаешь размеры сообществ?

XFCE в openSUSE

Всегда думал, что суся кде дистр.

Как тебе факт наличия сертификаций в сусе и соответственно программ обучения?

chenbr0
()
Ответ на: комментарий от chenbr0

Больше магеи? А как ты считаешь размеры сообществ?

Да. Например, кол-вом людей в чатах, сообществах, форумах,... и т.д.

Например, в Телеграме в чате юзеров Магейи 3 десятка человек, а в чате юзеров openSUSE 3,5 сотни человек. В первом чате редко когда пишут, а во втором чате пишут каждый день.

В reddit'е в сообществе Магейи меньше чем 2,5 сотни человек, а в сообществе openSUSE 13,1 тысяча человек (а совсем недавно было 12,8 тысяч; уже прибавилось примерно на столько же, сколько в сообществе Магейи).

Ну и т.д.

Всегда думал, что суся кде дистр.

Просто KDE довольно популярно среди юзеров Зюзи. Но инсталлятор предлагает самые разные варианты. Среди них есть не только XFCE и GNOME, но и голые иксы, поверх которых можно поставить свой любимый WM. Но тестируют там только DE.

Как тебе факт наличия сертификаций в сусе и соответственно программ обучения?

Такое меня пока что не интересует.

saahriktu ★★★★★
() автор топика

Нужно различать контексты.
Потому что как таковых - существует 2 типа хостнеймов: локал хостнейм и нетворк хостнейм.
По большей части сетевой хостнейм в куче с его алиасами прерогатива ДНСа.
Локальный же - очевидно системного резолвера с приоритетом к локальным БД.
Но как определить контекст? А без резолвера никак. Просто следуй таблице приоритетов где на первом месте етц-хостнейм и точка. С другой стороны що портеринга перемкнет и он вынесет резолвер в дбус с пробросом через кдбус для «скорости»...

Jetty ★★★★★
()
Ответ на: комментарий от Jetty

Потому что как таковых - существует 2 типа хостнеймов: локал хостнейм и нетворк хостнейм.

В этой теме речь конкретно про первый, который хранится в /etc/hostname . И о том, правильно ли его прописывать в /etc/hosts чтобы не тормозил софт.

saahriktu ★★★★★
() автор топика
Ответ на: комментарий от chenbr0

Ну, тот же ЛОР тоже можно рассматривать как сообщество. И если бы он никому ничего не давал, то и сидеть бы тут никто не сидел.

Понятное дело, что не обязательно тусоваться в околодистрибутивных сообществах, можно тусоваться в просто линуксовых сообществах как тот же ЛОР, на который можно писать из любого дистрибутива линукса. Не обязательно, но можно.

saahriktu ★★★★★
() автор топика

ДА

есть UNIX-стандарты, ещё есть «так исторически сложилось». /etc/hosts, udev, crond, syslogd, почтовый сервер — всё это создаёт единую целую экосистему, в которой всё работает как часы. нельзя просто так взять и выкинуть какой-то компонент, потому что «вам так показалось».

как и любая другая операционная система, дистрибутив линукса должен комплектоваться минимальным набором софта, необходимого для работы: udev, syslogd, crond — это база, без чего система не работает и мы не задаём вопросов почему.

но люди решили не комплектовать операционные системы днс резолвером, вместо этого они придумали /etc/hosts, и теперь будьте добры, /etc/hosts должен быть настроен для корректной работы как и любая другая программа.

аналогичная ситуация с почтовым сервером: по факту он должен присутствовать в любом линуксе. на почтовый сервер в линуксах заточено буквально всё, даже баш консоль, которая пишет тебе: You have new mail.

по факту же мы имеем, что ни один современный дистрибутив линукса не комплектуется почтовиком на уровне base / core во время первой установки. что в принципе ломает многое, например, вы не получаете уведомления от cron о работе системных сервисов, которые жизненно важны для системы.

кроме CRUX. в CRUX в поставке идёт exim, да здравствует CRUX, стандарты соблюдающий!

теперь вернёмся к DNS. ну вот почему-то так сложилось, что посчитали локальный DNS сервер не нужным, и придумали ему на замену /etc/hosts. но факт в том, что по своей значимости оно ничем не отличается от того же udev или syslog. и потому оно должо быть настроено корректно: не поленитесь и запишите хост машины.

Spoofing ★★★★★
()
Ответ на: комментарий от saahriktu

А в чем смысл именно сообщества конкретного дистриба? 75% унификации теперь это системд, остальные 20% ДЕ. Видимо ради остальных 5% проблем специфичных для этого дистриба?

chenbr0
()
Ответ на: комментарий от saahriktu

для этого случая в него сразу должны быть захардкожены «127.0.0.1» и "::1". А если такое не захардкожено, то это, значит, архитектурно негодный софт, поведение которого не может рассматриваться как аргумент для включения hostname'а локальной машины в /etc/hosts.

К всеобщему счастью, ты не занимаешься разработкой софта.

Black_Shadow ★★★★★
()
Ответ на: комментарий от Black_Shadow

А кто сказал, что это я так считаю? Я говорю, что есть такое мнение. Маинтейнеров Зюзи. Я-то как раз им посоветовал включать hostname в /etc/hosts при установке автоматически. А они раскритиковали мой багрепорт сказав, что в приличном обществе так не принято (см. выше).

saahriktu ★★★★★
() автор топика
Ответ на: комментарий от chenbr0

Тем не менее, существуют околодистрибутивные сообщества. По той причине, что у всех дистрибутивов есть свои особенности.

Например, в той же openSUSE у меня, несмотря на systemd и XFCE, не получилось завести xpdf новее 3-ей версии (которая на Motif'е). Для этого нужно искать патчи. А какие именно патчи из других дистрибутивов, где такого нет, понять невозможно. А если собеседник использует точно такой же дистрибутив, то он может посмотреть все эти особенности у себя.

Понятное дело, что чаще всего у людей другие проблемы, для решения которых может и логов хватить. Однако, не всегда именно такие вопросы у людей.

saahriktu ★★★★★
() автор топика

Сложный вопрос. Допустим, что слушается порт только на одном интерфейсе с каким-то адресом. В hosts прописано имя только для петлевого. Что будет, если подключаться по имени и порту?

boowai ★★★★
()
Последнее исправление: boowai (всего исправлений: 1)

Все добавляем kremlin.ru в качестве имени хоста, ловим лулзы

TooPar
()
Последнее исправление: TooPar (всего исправлений: 1)

Есть протоколы и программы, которым для нормального функционирования нужно знать fqdn. Например, для того, чтобы передать его кому-то ещё, а он мог, используя это знание, соединиться обратно.

Есть протоколы и программы, которым просто нужен какой-нибудь достаточно уникальный и стабильный идентификатор машины. Всякие системы управления конфигурациями, например, чтобы смочь применить параметризированную конфигурацию для текущей машины.

Где-то имя хоста может использоваться для авторизации, например в X11 или r-сервисах.

Поскольку существует несколько способов записать одно и то же имя (разные IPv4/v6-адреса, /etc/hostname, /etc/mailname, имя без search-суффиксов), нужен какой-то способ его канонизировать.

kmeaw ★★★
()
Ответ на: комментарий от Jetty

С другой стороны що портеринга перемкнет и он вынесет резолвер в дбус

systemd-resolved + nss_resolve :)

intelfx ★★★★★
()

А по сабжу —

А как вы считаете, место ли имени хоста в /etc/hosts?

Нет, т. к. это дублирование информации. Правильный подход — это nss_myhostname или эквивалент (пользователи альтернативных кастрированных libc без эквивалента NSS должны страдать, пользователи альтернативных изолированных рантаймов типа Go-вна — тем более).

intelfx ★★★★★
()
Последнее исправление: intelfx (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.