Bug 31202 - Двойное указание домена при использовании dhcp
Summary: Двойное указание домена при использовании dhcp
Status: CLOSED FIXED
Alias: None
Product: Sisyphus
Classification: Development
Component: etcnet (show other bugs)
Version: unstable
Hardware: all Linux
: P3 normal
Assignee: Mikhail Efremov
QA Contact: qa-sisyphus
URL: http://lists.altlinux.org/pipermail/d...
Keywords: NMU, patch
Depends on:
Blocks:
 
Reported: 2015-08-13 19:36 MSK by solo
Modified: 2019-03-11 17:24 MSK (History)
7 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description solo 2015-08-13 19:36:44 MSK
После обновления до Сизифа, при использовании 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 solo 2015-08-14 11:32:29 MSK
По моему, в свете 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 solo 2015-08-14 14:13:40 MSK
Предлагаемый алгоритм реализован в бранче 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 solo 2015-08-14 14:56:45 MSK
(В ответ на комментарий №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 solo 2015-08-31 16:44:21 MSK
Считаю что данная бага блокирующая для p8.
Comment 5 Mikhail Efremov 2015-11-11 21:45:48 MSK
Я, наконец, добрался с этим разобраться. В целом я согласен с 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 Mikhail Efremov 2015-11-12 17:43:00 MSK
В dhcpcd-6.9.3-alt1 я вернул старое поведение по умолчанию, так что этот баг больше не distro-blocker. Но все равно в etcnet использовать DHCP-опцию FQDN вместо hostname мне кажется хороше
Comment 7 Mikhail Efremov 2015-11-12 17:44:19 MSK
...хорошей идеей, так что патч актуален.
Comment 8 mrdrew@altlinux.org 2019-03-11 17:24:12 MSK
Закрываю, т.к. не воспроизводится.