<?xml version="1.0" encoding="UTF-8" ?>

<bugzilla version="5.2"
          urlbase="https://bugzilla.altlinux.org/"
          
          maintainer="jenya@basealt.ru"
>

    <bug>
          <bug_id>17498</bug_id>
          
          <creation_ts>2008-10-09 16:48:23 +0400</creation_ts>
          <short_desc>Проблема установки 127.0.0.1 для имени хоста</short_desc>
          <delta_ts>2021-11-04 14:23:52 +0300</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>4</classification_id>
          <classification>Development</classification>
          <product>Sisyphus</product>
          <component>alterator-net-eth</component>
          <version>unstable</version>
          <rep_platform>all</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>CLOSED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>22600</blocked>
    
    <blocked>17727</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Evgeny Sinelnikov">sin</reporter>
          <assigned_to name="Mikhail Efremov">sem</assigned_to>
          <cc>ahmedsayeed1982</cc>
    
    <cc>boyarsh</cc>
    
    <cc>erthad</cc>
    
    <cc>evg</cc>
    
    <cc>iv</cc>
    
    <cc>kipruss</cc>
    
    <cc>ldv</cc>
    
    <cc>mike</cc>
    
    <cc>rider</cc>
    
    <cc>sem</cc>
    
    <cc>vitty</cc>
    
    <cc>zerg</cc>
          
          <qa_contact>qa-sisyphus</qa_contact>

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>79401</commentid>
    <comment_count>0</comment_count>
    <who name="Evgeny Sinelnikov">sin</who>
    <bug_when>2008-10-09 16:48:23 +0400</bug_when>
    <thetext>Есть ли необходимость каждый раз при смене имени хоста добавлять новую запись в /etc/host с новым именем для 127.0.0.1?
$ grep 127.0.0.1 /usr/lib/alterator/backend3/net-eth
        printf &apos;127.0.0.1\t%s %s\n&apos; &quot;$value&quot; &quot;${value%%.*}&quot; &gt;&gt; /etc/hosts

Дело в том, что это приводит к некоторым проблемам, поскольку в /etc/nsswitch.conf обычно прописано что-то вроде:
$ grep ^hosts /etc/nsswitch.conf
hosts:      files nisplus nis dns
то соответственно при поиске обратной зоны для имени хоста первой записью находится 127.0.0.1, является некоторой проблемой...

Собственно вопрос в том, является ли такая настройка корректной и, если нет, это стоит исправить, иначе нужно понять как это обходить...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>79555</commentid>
    <comment_count>1</comment_count>
    <who name="inger@altlinux.org">inger</who>
    <bug_when>2008-10-13 14:47:53 +0400</bug_when>
    <thetext>пока не понятно что с этим делать ибо hostname должен резолвится, а искуственного интеллекта не хватает.
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>79908</commentid>
    <comment_count>2</comment_count>
    <who name="Evgeny Sinelnikov">sin</who>
    <bug_when>2008-10-20 19:42:11 +0400</bug_when>
    <thetext>Тут жуткая проблема и проявляется она так:
если задать /etc/hosts вида:
127.0.0.1    localhost.localdomain localhost
127.0.0.1    server.saratov.etersoft.ru server

то ряд программ, которые проводят поиск имени хоста, даже притом, что выставлен правильный hostname находят localhost.localdomain.

Так себя ведут сервер KDC из krb5-kdc (после чего он перестаёт нормально обрабатывать запросы с самого себя), а также python:
&gt;&gt;&gt; socket.getfqdn()
&apos;localhost.localdomain&apos;

Хотя если задать список хостов наоборот
127.0.0.1    server.saratov.etersoft.ru server
127.0.0.1    localhost.localdomain localhost
то питон лечится, а вот сервер KDC продолжает не узнавать своего IP. Дело в том, что он стартует на фиксированном интерфейсе, а хоть имя у нас и становится нормальным, но первый IP хоста всё равно идёт как 127.0.0.1

В итоге, после перенастройки имени хоста альтератором необходимо чинить /etc/hosts вручную.
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>79933</commentid>
    <comment_count>3</comment_count>
    <who name="inger@altlinux.org">inger</who>
    <bug_when>2008-10-21 11:12:44 +0400</bug_when>
    <thetext>(In reply to comment #2)
&gt; Тут жуткая проблема и проявляется она так:
Я знаю что некоторые программы начинает колбасить. Предложите решение.

Спрашивать явно пользователя (особенно пользователя desktop) о том нужно ли ему биндить hostname на 127.0.0.1 бесполезно. Нужна какая-то автоматика.

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>80361</commentid>
    <comment_count>4</comment_count>
    <who name="Ivan A. Melnikov">iv</who>
    <bug_when>2008-10-28 19:28:32 +0300</bug_when>
    <thetext>&gt; Я знаю что некоторые программы начинает колбасить. Предложите решение.
&gt;

В Сусе вместо записи
127.0.0.1 host.f.q.d.n host

делают запись
127.0.0.2 host.f.q.d.n host

Конечно не идеальное решение, однако помогает от большей части проблем связаных с тем, что многие программы (см. выше пример python) начинают считать каноническим именем машины localhost.localdomain. По крайней мере практически всё, что я тестировал, заработало, и я не вижу, как могло бы что-то сломаться. Предлагаю и у нас сделать так же, благо требуемые изменения минимальны.

&gt;
&gt; Спрашивать явно пользователя (особенно пользователя desktop) о том нужно ли ему
&gt; биндить hostname на 127.0.0.1 бесполезно. Нужна какая-то автоматика.
&gt;

Полноценная автоматика (&quot;совершенное решение&quot;), мне кажется, выйдет слишком сложной и никому не нужной. А насчет бесполезности спрашивать пользователя я бы поспорил. Администратор сети, уверенный в своём DNS-сервере, может иметь желание снять соответсвующую галочку, особенно если это поможет легко, просто и правильно работать некоторым совсем требовательным приложениям (мне попалось одно такое). В том числе и на машинах пользователей, где установлен desktop.
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>80518</commentid>
    <comment_count>5</comment_count>
    <who name="inger@altlinux.org">inger</who>
    <bug_when>2008-10-31 15:22:07 +0300</bug_when>
    <thetext>Мысль хорошая. Дима, что скажешь?

(In reply to comment #4)
&gt; &gt; Я знаю что некоторые программы начинает колбасить. Предложите решение.
&gt; &gt;
&gt; 
&gt; В Сусе вместо записи
&gt; 127.0.0.1 host.f.q.d.n host
&gt; 
&gt; делают запись
&gt; 127.0.0.2 host.f.q.d.n host
&gt; 
&gt; Конечно не идеальное решение, однако помогает от большей части проблем
&gt; связаных с тем, что многие программы (см. выше пример python) начинают считать
&gt; каноническим именем машины localhost.localdomain. По крайней мере практически всё,
&gt; что я тестировал, заработало, и я не вижу, как могло бы что-то сломаться.
&gt; Предлагаю и у нас сделать так же, благо требуемые изменения минимальны.
&gt; 
&gt; &gt;
&gt; &gt; Спрашивать явно пользователя (особенно пользователя desktop) о том нужно ли ему
&gt; &gt; биндить hostname на 127.0.0.1 бесполезно. Нужна какая-то автоматика.
&gt; &gt;
&gt; 
&gt; Полноценная автоматика (&quot;совершенное решение&quot;), мне кажется, выйдет слишком
&gt; сложной и никому не нужной. А насчет бесполезности спрашивать пользователя
&gt; я бы поспорил. Администратор сети, уверенный в своём DNS-сервере, может иметь
&gt; желание снять соответсвующую галочку, особенно если это поможет легко,
&gt; просто и правильно работать некоторым совсем требовательным приложениям
&gt; (мне попалось одно такое). В том числе и на машинах пользователей, где
&gt; установлен desktop.
&gt; 

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>81508</commentid>
    <comment_count>6</comment_count>
    <who name="Evgeny Sinelnikov">sin</who>
    <bug_when>2008-11-22 01:03:39 +0300</bug_when>
    <thetext>В рамках решения этой проблемы, сегодня родилась идея написать NSS-модуль fallback, который быть ставился последним в цепочке hosts файла nsswitch.conf и разрешал бы имя хоста в 127.0.0.1

Тем самым вопрос об установке имени хоста разрешился бы динмически, без необходимости при смене хоста править /etc/hosts.

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

Смена записи c 127.0.0.1 на 127.0.0.2 решила бы эту проблему и ряд проблем для клиентов но не все... Я бы оставил это на случай минималистического варианта, коорый всё равно лучше, чем текущий...

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

http://git.altlinux.org/people/sin/packages/libnss-fallback.git
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>81515</commentid>
    <comment_count>7</comment_count>
    <who name="Dmitry V. Levin">ldv</who>
    <bug_when>2008-11-22 01:50:09 +0300</bug_when>
    <thetext>(In reply to comment #6)
&gt; В рамках решения этой проблемы, сегодня родилась идея написать NSS-модуль
&gt; fallback, который быть ставился последним в цепочке hosts файла nsswitch.conf и разрешал
&gt; бы имя хоста в 127.0.0.1

Предлагаю другую идею: клонировать libnss_files под другим именем с одновременной коррекцией имён конфигурационных файлов.  Тогда этот условный files2 можно добавить в nsswitch после dns.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>81517</commentid>
    <comment_count>8</comment_count>
    <who name="Evgeny Sinelnikov">sin</who>
    <bug_when>2008-11-22 02:09:45 +0300</bug_when>
    <thetext>(In reply to comment #7)
&gt; (In reply to comment #6)
&gt; &gt; В рамках решения этой проблемы, сегодня родилась идея написать NSS-модуль
&gt; &gt; fallback, который быть ставился последним в цепочке hosts файла nsswitch.conf и разрешал
&gt; &gt; бы имя хоста в 127.0.0.1
&gt; 
&gt; Предлагаю другую идею: клонировать libnss_files под другим именем с
&gt; одновременной коррекцией имён конфигурационных файлов.  Тогда этот
&gt; условный files2 можно добавить в nsswitch после dns.
&gt; 

У этого варианта есть недостаток связанный с необходимостью прописывать записи в другой файл... Исчезает та самая динамика, которая бы позволила избавиться от необходимости прописывать записи для хоста при смене его имени... 

Причём такой механизм на файлах будет жёстко привязан к нашей утилите, которая будет знать про дополнительный файл настроек...

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

Итого я вижу следующие недостатки:
1) Лишаемся динамики, что потенциально грозит тем же мусором и костылями;
2) Привязываемся в одной утилите (или бэкенду), которая будет изменять имя хоста, и которая будет вносить записи в новый конфиг;
3) Это сложнее писать, поскльку выковыривать код из nss_files будет не просто, да и весь код не перенести... Там шаблоны на макросах, встроенные функции недоступные сторонним модулям и необходимость синхрониации на открытых файлах...

А чем вам мой вариант не понравился?
Я могу сказать, что там непонятно как быть c ipv6, который я пока отключил, ибо не на не особо пока нужен... Если его включить, то, поскольку у нас проверка ipv6 идёт вперёд ipv4, хост будет разрешаться в ::1. Это можно обойти двумя сборками libnss_fallback4 и libnss_fallback6. Именно так и сделано в nss-mdns, который я брал за основу.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>86158</commentid>
    <comment_count>9</comment_count>
    <who name="Konstantin Baev">kipruss</who>
    <bug_when>2009-02-19 18:02:29 +0300</bug_when>
    <thetext>Вот тут: http://git.altlinux.org/people/kipruss/packages/?p=alterator-net-eth.git;a=summary

вариант решения данной проблемы.

1. вместо 127.0.0.1 ставится 127.0.0.2)

2. При обновлении хоста старые бы выносятся (подразумевается, что старые -
это с 127.0.0.2, то есть добавленные автоматом)

3. Пофикшена бага, которая при наличии хоста aaa.bbb.ccc не давало завести новый хост bbb.ccc, потому что грепание возвращало истину</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>86202</commentid>
    <comment_count>10</comment_count>
    <who name="inger@altlinux.org">inger</who>
    <bug_when>2009-02-20 12:03:13 +0300</bug_when>
    <thetext>Если привязываем к 127.0.0.2, то стоит ли так сложно делать замену?
Временные файлы тоже не хорошо, может быть лучше sed -i ?

(In reply to comment #9)
&gt; Вот тут:
&gt; http://git.altlinux.org/people/kipruss/packages/?p=alterator-net-eth.git;a=summary
&gt; 
&gt; вариант решения данной проблемы.
&gt; 
&gt; 1. вместо 127.0.0.1 ставится 127.0.0.2)
&gt; 
&gt; 2. При обновлении хоста старые бы выносятся (подразумевается, что старые -
&gt; это с 127.0.0.2, то есть добавленные автоматом)
&gt; 
&gt; 3. Пофикшена бага, которая при наличии хоста aaa.bbb.ccc не давало завести
&gt; новый хост bbb.ccc, потому что грепание возвращало истину</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>86207</commentid>
    <comment_count>11</comment_count>
    <who name="Konstantin Baev">kipruss</who>
    <bug_when>2009-02-20 15:17:39 +0300</bug_when>
    <thetext>(В ответ на комментарий №10)
&gt; Если привязываем к 127.0.0.2, то стоит ли так сложно делать замену?
не совсем понял

&gt; Временные файлы тоже не хорошо, может быть лучше sed -i ?
Вот вариант без временных файлов (менял только ветку master)
http://git.altlinux.org/people/kipruss/packages/?p=alterator-net-eth.git;a=summary</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>86390</commentid>
    <comment_count>12</comment_count>
    <who name="inger@altlinux.org">inger</who>
    <bug_when>2009-02-24 11:34:30 +0300</bug_when>
    <thetext>(In reply to comment #11)
&gt; (В ответ на комментарий №10)
&gt; &gt; Если привязываем к 127.0.0.2, то стоит ли так сложно делать замену?
&gt; не совсем понял
&gt; 
&gt; &gt; Временные файлы тоже не хорошо, может быть лучше sed -i ?
&gt; Вот вариант без временных файлов (менял только ветку master)
&gt; http://git.altlinux.org/people/kipruss/packages/?p=alterator-net-eth.git;a=summary

Кажется я понял как надо решить эту проблему с привязкой hostname чтобы всех устроило ... в течении пары дней озвучу в devel@.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>86523</commentid>
    <comment_count>13</comment_count>
    <who name="Konstantin Baev">kipruss</who>
    <bug_when>2009-02-26 01:15:50 +0300</bug_when>
    <thetext>Как вариант решения:

1. Дополнить пакет libnss-fallback post и postun скриптами, которые после установки пакета добавляют fallback в nsswitch.conf в hosts: а после его удаления - удаляют. То есть аналогичто тому, что есть в libnss-role (кстати, я там пофиксил пару проблем: см. ALT#18984).

2. Устанавливать пакет libnss-fallback по умолчанию в базовую систему.

... и не делать соответствующий installer-feature.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>86538</commentid>
    <comment_count>14</comment_count>
    <who name="inger@altlinux.org">inger</who>
    <bug_when>2009-02-26 10:49:48 +0300</bug_when>
    <thetext>Теперь всё замечательно.

alterator-net-eth-0.4-alt3 больше не занимается биндингом hostname куда-либо.
Теперь он вызывает хуки из /etc/hooks/hostname.d ... так что куда привязывать hostname и привязывать ли вообще каждый решает как ему удобнее ;)

(In reply to comment #13)
&gt; Как вариант решения:
&gt; 
&gt; 1. Дополнить пакет libnss-fallback post и postun скриптами, которые после
&gt; установки пакета добавляют fallback в nsswitch.conf в hosts: а после его
&gt; удаления - удаляют. То есть аналогичто тому, что есть в libnss-role (кстати, я
&gt; там пофиксил пару проблем: см. ALT#18984).
&gt; 
&gt; 2. Устанавливать пакет libnss-fallback по умолчанию в базовую систему.
&gt; 
&gt; ... и не делать соответствующий installer-feature.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>119295</commentid>
    <comment_count>15</comment_count>
    <who name="Evgeny Sinelnikov">sin</who>
    <bug_when>2011-03-16 17:27:18 +0300</bug_when>
    <thetext>/etc/hooks/hostname.d - это отлично. Но что мы имеем теперь?

$ rpm -qf /etc/hooks/hostname.d/05-hosts  
alterator-net-eth-4.11-alt3

$ cat /etc/hooks/hostname.d/05-hosts 
#!/bin/sh -eu

old_hostname=&quot;$1&quot;
new_hostname=&quot;$2&quot;

[ -n &quot;$new_hostname&quot; ] || exit 1

grep -qs &quot;^[^#]*\&lt;$new_hostname\&gt;&quot; /etc/hosts ||
    printf &apos;127.0.0.1\t%s %s\n&apos; &quot;$new_hostname&quot; &quot;${new_hostname%%.*}&quot; &gt;&gt; /etc/hosts

short_old_hostname=&quot;${old_hostname%%.*}&quot;

[ -z &quot;$old_hostname&quot; -o &quot;$old_hostname&quot; = &quot;$new_hostname&quot; \
    -o &quot;$short_old_hostname&quot; = &apos;localhost&apos; ] ||
    sed -ri &quot;/^127\.0\.0\.1[[:blank:]]+$old_hostname[[:blank:]]+$short_old_hostname/d&quot; /etc/hosts

В итоге 127.0.0.1 всё так же выставляется и всё также нарушает работу системы. В чём проблема сделать хотя бы 127.0.0.2 или воспользоватся libnss-fallback? На нём разве есть какие-нибудь не закрытые баги?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>119298</commentid>
    <comment_count>16</comment_count>
    <who name="Mikhail Efremov">sem</who>
    <bug_when>2011-03-16 18:56:39 +0300</bug_when>
    <thetext>(В ответ на комментарий №15)
&gt; В итоге 127.0.0.1 всё так же выставляется и всё также нарушает работу системы.
&gt; В чём проблема сделать хотя бы 127.0.0.2 или воспользоватся libnss-fallback? На
&gt; нём разве есть какие-нибудь не закрытые баги?

К сожалению в changelog не было упоминаний об этом баге.
Я думаю городить аж целый модуль для этих целей - это слишком, вариант с 127.0.0.2 мне нравится больше.
И в любом случае, видимо, надо вынести этот хук в отдельный (под)пакет.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>119327</commentid>
    <comment_count>17</comment_count>
    <who name="Mikhail Efremov">sem</who>
    <bug_when>2011-03-17 16:19:01 +0300</bug_when>
    <thetext>(В ответ на комментарий №16)
&gt; 127.0.0.2 мне нравится больше.

Нет, с этим тоже есть проблемы (см. https://features.opensuse.org/308824, например). Просто вынесу пока хук в подпакет.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>119332</commentid>
    <comment_count>18</comment_count>
    <who name="Repository Robot">repository-robot</who>
    <bug_when>2011-03-17 18:03:45 +0300</bug_when>
    <thetext>alterator-net-eth-4.11-alt4 -&gt; sisyphus:

* Thu Mar 17 2011 Mikhail Efremov &lt;sem@altlinux&gt; 4.11-alt4
- Move hook for /etc/hosts to subpackage (closes: #17498).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>119345</commentid>
    <comment_count>19</comment_count>
    <who name="Michael Shigorin">mike</who>
    <bug_when>2011-03-18 17:00:22 +0300</bug_when>
    <thetext>Наверное, об этом стоит упомянуть в devel-distro@.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>119347</commentid>
    <comment_count>20</comment_count>
    <who name="Ivan A. Melnikov">iv</who>
    <bug_when>2011-03-18 17:41:04 +0300</bug_when>
    <thetext>(In reply to comment #17)
&gt; &gt; 127.0.0.2 мне нравится больше.
&gt; 
&gt; Нет, с этим тоже есть проблемы (см. https://features.opensuse.org/308824,
&gt; например). [...]

Тут стоит уточнить, что ровно те же проблемы возникают и с 127.0.0.1, и связаны они в основном с тем, что FQDN резолвится в локальный ip.</thetext>
  </long_desc>
      
      

    </bug>

</bugzilla>