[sisyphus] systemd-network

Mikhail Efremov sem на altlinux.ru
Вт Авг 12 20:06:44 MSK 2014


On Tue, 12 Aug 2014 18:06:46 +0400 Денис Смирнов wrote:
> On Tue, Aug 12, 2014 at 05:25:10PM +0400, Mikhail Efremov wrote:
> 
> >>> Да, действительно. Но это все равно костыль.
> >> Почему?
> > Потому что вместо того, чтобы создавать файл и потом за ним следить
> > нужно сразу писать в pipe resolvconf'у.
> 
> Тогда уж этим должен заниматься сам systemd-networkd. systemd-resolve это
> очень странный грязный хак -- я на его код посмотрел. По сути он следит
> через inotify за /run/systemd/netif, а дальше делает то же что openresolv,
> только хуже.

Так раньше этот код был в systemd-networkd, это в последних версиях
апстрим решил, что генерацией resolv.conf должен заниматься аж отдельный
демон.

> И мы могли бы сделать легко полноценную поддержку openresolv аналогичным
> способом, вот только файлики внутри /run/systemd/netif не содержат _имени_
> интерфейса. Поэтому сделать можно только аналогичную systemd-resolve
> кривульку.

Конечно лучше было бы генерить отдельные resolv.conf для каждого
интерфейса. Но большей беды в том, что там генерится общий resolv.conf
тоже нет: интерфейсы через которые доступны эти ДНС-сервера подняты.

Кстати, в systemd-resolved не предусмотрено явное удаление записей. Там
просто записывается пустой resolv.conf, насколько я помню. Для работы с
openresolv хорошо бы в этом случае использовать resolvconf -d вместо
записи пустого файла. Работать должно и так, конечно, но resolvconf
будет хранить этот пустой конфиг и пытаться его использовать.
То есть в altlinux-openresolv.service лучше бы все-таки использовать
скрипт-обертку с проверкой на размер /run/systemd/resolve/resolv.conf.
Да и ExecStop=/sbin/resolvconf -d systemd-networkd не помешает.

-- 
WBR, Mikhail Efremov


Подробная информация о списке рассылки Sisyphus