Bug 31202 - Двойное указание домена при использовании dhcp
: Двойное указание домена при использовании dhcp
Status: NEW
: Sisyphus
(All bugs in Sisyphus/etcnet)
: unstable
: all Linux
: P3 normal
Assigned To:
:
: http://lists.altlinux.org/pipermail/d...
: NMU, patch
:
:
  Show dependency tree
 
Reported: 2015-08-13 19:36 by
Modified: 2015-11-12 17:44 (History)


Attachments


Note

You need to log in before you can comment on or make changes to this bug.


Description From 2015-08-13 19:36:44
После обновления до Сизифа, при использовании dhcp, наблюдаю дублирование
доменной части при регистрацию хоста в DDNS: -- получаю host.dom.en.dom.en,
вместо ожидаемого host.dom.en (см.
http://lists.altlinux.org/pipermail/devel/2015-August/200024.html).

Расследование показало, что при использовании комбинации dhcpcd и etcnet на
Сизифе наблюдается следующее:

1. Если в /etc/sysconfig/network определён HOSTNAME без точек, например host --
в DNS получаю ожидаемое host.dom.en. (Но похоже, не все скрипты такой HOSTNAME
корректно переживают.)

2. Если в /etc/sysconfig/network определён HOSTNAME с точками, одна из которых
концевая, например host.dom.en. -- результат получаю двоякий: хост либо
регистрируется в DNS как host.dom.en., либо не регистрируется там вообще (что
бывает чаще).

3. Если в /etc/sysconfig/network определён HOSTNAME с точками, но без концевой,
например host.dom.en -- при регистрации в DNS домен удваивается, что приводит к
host.dom.en.dom.en...

Проверял на следующих версиях пакетов на Сизифе:

dhcpcd-1:6.9.1-alt1
etcnet-0.9.10-alt18
etcnet-defaults-server-0.9.10-alt18
sysvinit-2.88-alt5

На p7, сразу после инсталляции с
http://ftp.altlinux.org/pub/distributions/ALTLinux/p7/images/centaurus/altlinux-7.0.4-centaurus-x86_64-ru-install-dvd5.iso,
данной проблемы нет -- в DNS всегда ожидаемый host.dom.en, независимо от того
были ли точки в HOSTNAME.

Версии пакетов:

dhcpcd-1:5.6.8-alt1
etcnet-0.9.10-alt8
etcnet-defaults-server-0.9.10-alt8
sysvinit-2.88-alt5

Дальнейший разбор показал, что изменилось dhcpcd, а etcnet этого не учитывает.
С параметрами по умолчанию, разница в следующем:

* Для dhcpcd-1:5.6.8 вызов "dhcpcd -h host.dom.en" приводят к регистрации
host.dom.en

* Для dhcpcd-1:6.9.1 вызов "dhcpcd -h host.dom.en" приводят к регистрации
host.dom.en.dom.en. Старое поведение можно получить, используя "dhcpcd -F both
-h host.dom.en".
------- Comment #1 From 2015-08-14 11:32:29 -------
По моему, в свете https://bugzilla.altlinux.org/show_bug.cgi?id=31203, надо в
dhcp_cmdline() (см. etc/net/scripts/functions-ip) менять текущий алгоритм на
следующий:

1. Есть в HOSTNAME точка, выставляем для:

dhcpcd -- "-F both -h $HOSTNAME"

dhclient -- "-F $HOSTNAME" (текущий вариант)

1. В HOSTNAME нет точки, выставляем для:

dhcpcd -- "-h $HOSTNAME" (текущий вариант)

dhclient -- "-H $HOSTNAME"
------- Comment #2 From 2015-08-14 14:13:40 -------
Предлагаемый алгоритм реализован в бранче fix-dhcp-hostname (см.
http://git.altlinux.org/people/solo/packages/?p=etcnet.git;a=shortlog;h=refs/heads/fix-dhcp-hostname),
репозитория git://git.altlinux.org/people/solo/packages/etcnet.git.

Краткое описание изменений:

1. Для dhcpcd -- в строку аргументов добавляется "-F both", если в HOSTNAME
найдена точка (см.
http://git.altlinux.org/people/solo/packages/?p=etcnet.git;a=commitdiff;h=6ea116925aca188376eb05bc4b079918a869d0c7).

2. Для dhclient -- в строке аргументов используется "-F $HOSTNAME", если в
HOSTNAME найдена точка. Если же точки там нет -- используется "-H $HOSTNAME"
(см.
http://git.altlinux.org/people/solo/packages/?p=etcnet.git;a=commitdiff;h=cc7f150ddea5bb8ffa62146e87c31a169116ba96).
------- Comment #3 From 2015-08-14 14:56:45 -------
(В ответ на комментарий №2)
> Предлагаемый алгоритм реализован в бранче fix-dhcp-hostname (см.
> http://git.altlinux.org/people/solo/packages/?p=etcnet.git;a=shortlog;h=refs/heads/fix-dhcp-hostname),
> репозитория git://git.altlinux.org/people/solo/packages/etcnet.git.

Для себя я подготовил NMU с данными изменениями (см.
http://git.altlinux.org/people/solo/packages/?p=etcnet.git;a=commit;h=e59153241306d0e0b40dbbadde021696bdbd0e2e
и http://git.altlinux.org/tasks/147728/). Тестирование прошло успешно.
------- Comment #4 From 2015-08-31 16:44:21 -------
Считаю что данная бага блокирующая для p8.
------- Comment #5 From 2015-11-11 21:45:48 -------
Я, наконец, добрался с этим разобраться. В целом я согласен с solo@, только мне
не нравится его патч:
1. DHCP_HOSTNAME тоже должен проверяться
2. Использование subshell с echo и fgrep это как-то слишком.
Здесь мой вариант патча:
http://git.altlinux.org/people/sem/packages/etcnet.git?p=etcnet.git;a=commit;h=5c4700b22e7450e3669ebcff74d80c0202a3ac87

Возвращать старое поведение в dhcpcd действительно не стоит, пожалуй. С этим
патчем будет работать и с более старыми версиями dhcpcd, -F там есть уже давно.
И short_hostname в конфиге dhcpcd в любом случае тоже не вариант, etcnet не
должен полагаться на то, что эта опция там будет. Так что зависимость от #31203
убираю.
------- Comment #6 From 2015-11-12 17:43:00 -------
В dhcpcd-6.9.3-alt1 я вернул старое поведение по умолчанию, так что этот баг
больше не distro-blocker. Но все равно в etcnet использовать DHCP-опцию FQDN
вместо hostname мне кажется хороше
------- Comment #7 From 2015-11-12 17:44:19 -------
...хорошей идеей, так что патч актуален.