Bug 32470

Summary: altlinux-openresolv.service ждёт конфигурирования всех линков до записи resolv.conf
Product: Sisyphus Reporter: Evgenii Terechkov <evg>
Component: systemd-networkdAssignee: Alexey Shabalin <shaba>
Status: NEW --- QA Contact: qa-sisyphus
Severity: major    
Priority: P3 CC: arseny, shaba
Version: unstableKeywords: systemd
Hardware: all   
OS: Linux   

Description Evgenii Terechkov 2016-09-04 14:35:12 MSK
Имеем свежий сизиф на ноутбуке с двумя интерфейсами: проводным и беспроводным.  Кладём простейший .network-файл чтобы все интерфейсы настраивались по DHCP/DHCPv6.  Включаем systemd-networkd, systemd,resolved, altlinux-openresolv.path. Перезагружаемся. Подключаемся в одной (любой) сети, проводной или беспроводной.

Результат:
=8<============================================
root@eee /etc # networkctl 
IDX LINK             TYPE               OPERATIONAL SETUP     
  1 lo               loopback           carrier     configured
  2 eth0             ether              no-carrier  configuring
  3 wlan0            wlan               routable    configured

3 links listed.
=8<============================================

при этом наличествует связность с сетью, но не работает резолвинг (/etc/resolv.conf - пуст, /run/systemd/resolve/resolv.conf - заполнен из DHCP-анонса).

Ожидалось, что resolvconf обновит /etc/resolv.conf последовательно, по мере тоо как ответят DHCP-сервера. Он этого не делает.

Причина:
=8<============================================
ExecStart=/bin/sh -c 'if /lib/systemd/systemd-networkd-wait-online --timeout=30; then /sbin/resolvconf -a systemd-networkd < /run/systemd/resolve/resolv.conf; fi'
=8<============================================
в юните altlinux-openresolv.service.

systemd-networkd-wait-online(8) говорит ясно:
=8<============================================
By default, it will wait for all links it is aware of and
       which are managed by systemd-networkd.service(8) to be fully configured or failed, and for at least one link to gain a carrier.
=8<============================================

Всё верно, запуск бинарника /lib/systemd/systemd-networkd-wait-online ждёт, пока настроятся ВСЕ интерфейсы. Чего в реальности может вообще никогда не произойти.

Объёзд:
=8<============================================
root@eee /etc # cat /etc/systemd/system/altlinux-openresolv.service.d/override.conf 
[Service]
ExecStart=
ExecStart=/bin/sh -c '/sbin/resolvconf -a systemd-networkd < /run/systemd/resolve/resolv.conf'
=8<============================================

В таком виде после запуска лишь с одной доступной сетью резолвинг имён работает.
Comment 1 Evgenii Terechkov 2016-09-04 15:32:48 MSK
Похожая конфигурация у меня на другой машине, которая в основном работает по проводному интерфейсу (адресация назначена статически) но иногда переносится в пределах действия беспроводной сети без сетевого кабеля. В основном беспроводной линк заглушен через rf-kill.  Та же проблема.