Re: bind9-resolvconf.service

2017-08-02 Пенетрантность Tim Sattarov
On 02/08/17 03:41 PM, Yuriy M. Kaminskiy wrote:
>
> (BTW, я с некоторым удивлением обнаружил, что не знаю, а где эти самые
> drop-in вообще описаны в man? ни в systemd.directives, ни в systemd.unit
> я их не обнаружил 8-0)
>
 systemd  234-2
только что набрал man systemd.unit и увидел там про drop-in:

   Along with a unit file foo.service, a "drop-in"
   directory foo.service.d/ may exist. All files with the
   suffix ".conf" from this directory will be parsed after
   the file itself is parsed. This is useful to alter or
   add configuration settings for a unit, without having
   to modify unit files. Each drop-in file must have
   appropriate section headers. Note that for instantiated
   units, this logic will first look for the instance
   ".d/" subdirectory and read its ".conf" files, followed
   by the template ".d/" subdirectory and the ".conf"
   files there. Also note that settings from the
   "[Install]" section are not honored in drop-in unit
   files, and have no effect.

   In addition to /etc/systemd/system, the drop-in ".d"
   directories for system services can be placed in
   /lib/systemd/system or /run/systemd/system directories.
   Drop-in files in /etc take precedence over those in
   /run which in turn take precedence over those in /lib.
   Drop-in files under any of these directories take
   precedence over unit files wherever located. Multiple
   drop-in files with different names are applied in
   lexicographic order, regardless of which of the
   directories they reside in.




Re: bind9-resolvconf.service

2017-08-02 Пенетрантность Yuriy M. Kaminskiy
On 08/02/17 01:03 , Artem Chuprina wrote:
> Yuriy M. Kaminskiy -> debian-russian@lists.debian.org  @ Tue, 01 Aug 2017 
> 22:42:55 +0300:
>
>  >>> [Service]
>  >>   RemainAfterExit=yes
>  >>> ExecStart=/bin/sh -c 'echo nameserver 127.0.0.1 | /sbin/resolvconf -a 
> lo.named'
>  >>> ExecStop=/sbin/resolvconf -d lo.named
>  >>
>  >> с этим флагом работает.
>
>  > ...а ещё оно должно быть
>  > Type=oneshot
>  > (по умолчанию - simple).
>
> Ага, я уже нащупал. И когда нащупал, догадался, почему так. Не факт, что

(потому что в simple юнит считается запущенным сразу после /запуска/
процесса из ExecStart, а в oneshot после /завершения/ ExecStart)

> правильно.
>
> В очередной леденящий душу раз спрошу: знает ли кто-нибудь нормальную
> документацию на unit'ы systemd? То, что сходу гуглится, в качестве
> документации не годится. Список значений Type много где есть, но как тот
> же oneshot воспринимается _снаружи_ (и _почему_ в этом месте таки надо
> RemainAfterExit=yes) там не написали.

(из man это вовсе не очевидно, но по если RemainAfterExit не выставлен в
yes, то по завершению процесс(а/ов), запущенных из ExecStart, юнит считается
неактивным, и systemd исполняет ExecStop и ExecStopPost)

> Вот, например, много где описаны оверрайды (это когда хочется подправить
> что-то, не копируя весь юнит). В одном месте мне попалось описание

Если это про foo.service.d/bar.conf, то мне оно попадалось под названием
drop-in, а не override.

(BTW, я с некоторым удивлением обнаружил, что не знаю, а где эти самые
drop-in вообще описаны в man? ни в systemd.directives, ни в systemd.unit
я их не обнаружил 8-0)

> грабли, видимо, автор наступил. И ни в одном - как оно вообще работает.
>
> Судя по названию (override, а не append), оно должно заменять значения
> параметров. Но судя по описанной грабле (нет, там нету описания работы),
> оно их добавляет (что, прямо скажем, удобнее), но если указать пустое
> значение, то сбрасывает то, что было (так можно сбросить старое
> значение).

Кстати, присваивание пустого значения стирает *не все*
параметры-списки (там где оно работает - явно указано в
man, ищем по "empty string|reset"); к примеру (as of jessie), в
Requires/Wants/After и аналогичных оно *не* работает.

> А там при этом бывают параметры, которых можно указать несколько
> (After), а бывают, которые положены одна штука (ExecStart), т.е. к
> которым по семантике добавлять нельзя... Тот наступатель наступил именно
> на примере ExecStart.

... и у Type=oneshot тут есть особенности (*можно* много ExecStart, и
*можно* вообще без ExecStart [таким образом для oneshot ExecStart
очень похож на ExecStartPre]; для прочих типов, ExecStart обязан быть
один и только один).



Re: bind9-resolvconf.service

2017-08-01 Пенетрантность Artem Chuprina
Yuriy M. Kaminskiy -> debian-russian@lists.debian.org  @ Tue, 01 Aug 2017 
22:42:55 +0300:

 >>> [Service]
 >>   RemainAfterExit=yes
 >>> ExecStart=/bin/sh -c 'echo nameserver 127.0.0.1 | /sbin/resolvconf -a 
 >>> lo.named'
 >>> ExecStop=/sbin/resolvconf -d lo.named
 >>
 >> с этим флагом работает.

 > ...а ещё оно должно быть
 > Type=oneshot
 > (по умолчанию - simple).

Ага, я уже нащупал. И когда нащупал, догадался, почему так. Не факт, что
правильно.

В очередной леденящий душу раз спрошу: знает ли кто-нибудь нормальную
документацию на unit'ы systemd? То, что сходу гуглится, в качестве
документации не годится. Список значений Type много где есть, но как тот
же oneshot воспринимается _снаружи_ (и _почему_ в этом месте таки надо
RemainAfterExit=yes) там не написали.

Вот, например, много где описаны оверрайды (это когда хочется подправить
что-то, не копируя весь юнит). В одном месте мне попалось описание
грабли, видимо, автор наступил. И ни в одном - как оно вообще работает.

Судя по названию (override, а не append), оно должно заменять значения
параметров. Но судя по описанной грабле (нет, там нету описания работы),
оно их добавляет (что, прямо скажем, удобнее), но если указать пустое
значение, то сбрасывает то, что было (так можно сбросить старое
значение).

А там при этом бывают параметры, которых можно указать несколько
(After), а бывают, которые положены одна штука (ExecStart), т.е. к
которым по семантике добавлять нельзя... Тот наступатель наступил именно
на примере ExecStart.



Re: bind9-resolvconf.service

2017-08-01 Пенетрантность Artem Chuprina
Vasiliy P. Melnik -> debian-russian  @ Tue, 1 Aug 2017 21:15:31 +0300:

 > может в этом вопрос?

 > cat /etc/default/bind9
 > # run resolvconf?
 > RESOLVCONF=no
 >   

 > # startup options for the server
 > OPTIONS="-u bind"

 > ну и resolvconf должен быть установлен.

Если снести systemd-sysv и поставить sysvinit-core, то оно. А с systemd
- нет.

 > З.Ы. Не понимаю зачем это надо если честно

Зачем надо такую настройку, я хорошо понимаю.

А вот зачем именно эта пара пакетов... Честно говоря, уже не
помню. Сейчас делается апгрейд путем установки ОС с нуля, ради ZFS, а
конфиги для скорости берутся старые, ибо оно же домашний роутер, и было
бы клево, чтобы ничего не сломалось. Потом посмотрю, может, там
resolvconf лишний, а может, bind зря и можно dnsmasq поставить.

Машинка роутер, она же авторитетный DNS-сервер домашней зоны, два
аплинка, у основного DHCP, у резервного статика, зато прямой DNS
зарезан, пользуйтесь форвардерами.

Вот и получается, что с одной стороны надо свою зону обслуживать
(возможно, dnsmasq, т.е. /etc/hosts, хватит, а кроме того, ему отдельные
хосты можно и руками прописать). С другой - резолвить интернет
независимо от того, какой линк упал. Сейчас, насколько я вижу, там
сделано как-то криво. То ли я тогда не доделал... В смысле, работать-то
будет, но в неудачном случае медленно.

 > 1 августа 2017 г., 21:05 пользователь Artem Chuprina <r...@lasgalen.net>
 > написал:

 >> Граждане, а может кто-нибудь объяснить, почему
 >>
 >> $ sudo systemctl cat bind9-resolvconf
 >> # /lib/systemd/system/bind9-resolvconf.service
 >> [Unit]
 >> Description=local BIND via resolvconf
 >> Documentation=man:named(8) man:resolvconf(8)
 >> Requires=bind9.service
 >> After=bind9.service
 >> ConditionFileIsExecutable=/sbin/resolvconf
 >>
 >> [Service]
 >> ExecStart=/bin/sh -c 'echo nameserver 127.0.0.1 | /sbin/resolvconf -a
 >> lo.named'
 >> ExecStop=/sbin/resolvconf -d lo.named
 >>
 >> [Install]
 >> WantedBy=bind9.service
 >>
 >> не работает ни автоматически, ни вручную? Ни start, ни stop. Отдельно
 >> команды из ExecStart и ExecStop работают.
 >>
 >> Собственно, если кому интересно покопаться, признаком срабатывания start
 >> будет появление lo.named в /run/resolvconf/interface, а stop - его
 >> пропадание оттуда.
 >>
 >> stretch.
 >>
 >> Задалбывает, надо сказать, эта гребаная магия...
 >>
 >> В статусе разницы не видно. Добавлять в зависимости resolvconf.service
 >> пробовал (дело-то разумное, /run/resolvconf создается динамически). Не
 >> помогает. Ну и вручную, при запущенном resolvconf, тоже не работает.
 >>
 >> $ sudo systemctl start bind9-resolvconf
 >> $ sudo systemctl status bind9-resolvconf
 >> ● bind9-resolvconf.service - local BIND via resolvconf
 >>Loaded: loaded (/lib/systemd/system/bind9-resolvconf.service; enabled;
 >> vendor preset: enabled)
 >>Active: inactive (dead) since Tue 2017-08-01 21:02:02 MSK; 2s ago
 >>  Docs: man:named(8)
 >>man:resolvconf(8)
 >>   Process: 1828 ExecStop=/sbin/resolvconf -d lo.named (code=exited,
 >> status=0/SUCCESS)
 >>   Process: 1820 ExecStart=/bin/sh -c echo nameserver 127.0.0.1 |
 >> /sbin/resolvconf -a lo.named (code=exited, status=0/S
 >>  Main PID: 1820 (code=exited, status=0/SUCCESS)
 >>
 >> Aug 01 21:02:02 localhost systemd[1]: Started local BIND via resolvconf.
 >>
 >> $ sudo systemctl stop bind9-resolvconf
 >> $ sudo systemctl status bind9-resolvconf
 >> ● bind9-resolvconf.service - local BIND via resolvconf
 >>Loaded: loaded (/lib/systemd/system/bind9-resolvconf.service; enabled;
 >> vendor preset: enabled)
 >>Active: inactive (dead) since Tue 2017-08-01 21:02:02 MSK; 29s ago
 >>  Docs: man:named(8)
 >>man:resolvconf(8)
 >>   Process: 1828 ExecStop=/sbin/resolvconf -d lo.named (code=exited,
 >> status=0/SUCCESS)
 >>   Process: 1820 ExecStart=/bin/sh -c echo nameserver 127.0.0.1 |
 >> /sbin/resolvconf -a lo.named (code=exited, status=0/S
 >>  Main PID: 1820 (code=exited, status=0/SUCCESS)
 >>
 >> Aug 01 21:02:02 localhost systemd[1]: Started local BIND via resolvconf.
 >>
 >>



Re: bind9-resolvconf.service

2017-08-01 Пенетрантность Yuriy M. Kaminskiy

On 08/01/17 21:27 , Alex Kicelew wrote:
> On 08/01/17 21:05, Artem Chuprina wrote:
>> [Service]
>   RemainAfterExit=yes
>> ExecStart=/bin/sh -c 'echo nameserver 127.0.0.1 | /sbin/resolvconf -a 
>> lo.named'
>> ExecStop=/sbin/resolvconf -d lo.named
>
> с этим флагом работает.

...а ещё оно должно быть
Type=oneshot
(по умолчанию - simple).



Re: bind9-resolvconf.service

2017-08-01 Пенетрантность Alex Kicelew
On 08/01/17 21:05, Artem Chuprina wrote:
> [Service]
  RemainAfterExit=yes
> ExecStart=/bin/sh -c 'echo nameserver 127.0.0.1 | /sbin/resolvconf -a 
> lo.named'
> ExecStop=/sbin/resolvconf -d lo.named

с этим флагом работает.



Re: bind9-resolvconf.service

2017-08-01 Пенетрантность Vasiliy P. Melnik
может в этом вопрос?

cat /etc/default/bind9
# run resolvconf?
RESOLVCONF=no
  

# startup options for the server
OPTIONS="-u bind"

ну и resolvconf должен быть установлен.

З.Ы. Не понимаю зачем это надо если честно


1 августа 2017 г., 21:05 пользователь Artem Chuprina <r...@lasgalen.net>
написал:

> Граждане, а может кто-нибудь объяснить, почему
>
> $ sudo systemctl cat bind9-resolvconf
> # /lib/systemd/system/bind9-resolvconf.service
> [Unit]
> Description=local BIND via resolvconf
> Documentation=man:named(8) man:resolvconf(8)
> Requires=bind9.service
> After=bind9.service
> ConditionFileIsExecutable=/sbin/resolvconf
>
> [Service]
> ExecStart=/bin/sh -c 'echo nameserver 127.0.0.1 | /sbin/resolvconf -a
> lo.named'
> ExecStop=/sbin/resolvconf -d lo.named
>
> [Install]
> WantedBy=bind9.service
>
> не работает ни автоматически, ни вручную? Ни start, ни stop. Отдельно
> команды из ExecStart и ExecStop работают.
>
> Собственно, если кому интересно покопаться, признаком срабатывания start
> будет появление lo.named в /run/resolvconf/interface, а stop - его
> пропадание оттуда.
>
> stretch.
>
> Задалбывает, надо сказать, эта гребаная магия...
>
> В статусе разницы не видно. Добавлять в зависимости resolvconf.service
> пробовал (дело-то разумное, /run/resolvconf создается динамически). Не
> помогает. Ну и вручную, при запущенном resolvconf, тоже не работает.
>
> $ sudo systemctl start bind9-resolvconf
> $ sudo systemctl status bind9-resolvconf
> ● bind9-resolvconf.service - local BIND via resolvconf
>Loaded: loaded (/lib/systemd/system/bind9-resolvconf.service; enabled;
> vendor preset: enabled)
>Active: inactive (dead) since Tue 2017-08-01 21:02:02 MSK; 2s ago
>  Docs: man:named(8)
>man:resolvconf(8)
>   Process: 1828 ExecStop=/sbin/resolvconf -d lo.named (code=exited,
> status=0/SUCCESS)
>   Process: 1820 ExecStart=/bin/sh -c echo nameserver 127.0.0.1 |
> /sbin/resolvconf -a lo.named (code=exited, status=0/S
>  Main PID: 1820 (code=exited, status=0/SUCCESS)
>
> Aug 01 21:02:02 localhost systemd[1]: Started local BIND via resolvconf.
>
> $ sudo systemctl stop bind9-resolvconf
> $ sudo systemctl status bind9-resolvconf
> ● bind9-resolvconf.service - local BIND via resolvconf
>Loaded: loaded (/lib/systemd/system/bind9-resolvconf.service; enabled;
> vendor preset: enabled)
>Active: inactive (dead) since Tue 2017-08-01 21:02:02 MSK; 29s ago
>  Docs: man:named(8)
>man:resolvconf(8)
>   Process: 1828 ExecStop=/sbin/resolvconf -d lo.named (code=exited,
> status=0/SUCCESS)
>   Process: 1820 ExecStart=/bin/sh -c echo nameserver 127.0.0.1 |
> /sbin/resolvconf -a lo.named (code=exited, status=0/S
>  Main PID: 1820 (code=exited, status=0/SUCCESS)
>
> Aug 01 21:02:02 localhost systemd[1]: Started local BIND via resolvconf.
>
>


bind9-resolvconf.service

2017-08-01 Пенетрантность Artem Chuprina
Граждане, а может кто-нибудь объяснить, почему

$ sudo systemctl cat bind9-resolvconf
# /lib/systemd/system/bind9-resolvconf.service
[Unit]
Description=local BIND via resolvconf
Documentation=man:named(8) man:resolvconf(8)
Requires=bind9.service
After=bind9.service
ConditionFileIsExecutable=/sbin/resolvconf

[Service]
ExecStart=/bin/sh -c 'echo nameserver 127.0.0.1 | /sbin/resolvconf -a lo.named'
ExecStop=/sbin/resolvconf -d lo.named

[Install]
WantedBy=bind9.service

не работает ни автоматически, ни вручную? Ни start, ни stop. Отдельно
команды из ExecStart и ExecStop работают.

Собственно, если кому интересно покопаться, признаком срабатывания start
будет появление lo.named в /run/resolvconf/interface, а stop - его
пропадание оттуда.

stretch.

Задалбывает, надо сказать, эта гребаная магия...

В статусе разницы не видно. Добавлять в зависимости resolvconf.service
пробовал (дело-то разумное, /run/resolvconf создается динамически). Не
помогает. Ну и вручную, при запущенном resolvconf, тоже не работает.

$ sudo systemctl start bind9-resolvconf
$ sudo systemctl status bind9-resolvconf
● bind9-resolvconf.service - local BIND via resolvconf
   Loaded: loaded (/lib/systemd/system/bind9-resolvconf.service; enabled; 
vendor preset: enabled)
   Active: inactive (dead) since Tue 2017-08-01 21:02:02 MSK; 2s ago
 Docs: man:named(8)
   man:resolvconf(8)
  Process: 1828 ExecStop=/sbin/resolvconf -d lo.named (code=exited, 
status=0/SUCCESS)
  Process: 1820 ExecStart=/bin/sh -c echo nameserver 127.0.0.1 | 
/sbin/resolvconf -a lo.named (code=exited, status=0/S
 Main PID: 1820 (code=exited, status=0/SUCCESS)

Aug 01 21:02:02 localhost systemd[1]: Started local BIND via resolvconf.

$ sudo systemctl stop bind9-resolvconf
$ sudo systemctl status bind9-resolvconf
● bind9-resolvconf.service - local BIND via resolvconf
   Loaded: loaded (/lib/systemd/system/bind9-resolvconf.service; enabled; 
vendor preset: enabled)
   Active: inactive (dead) since Tue 2017-08-01 21:02:02 MSK; 29s ago
 Docs: man:named(8)
   man:resolvconf(8)
  Process: 1828 ExecStop=/sbin/resolvconf -d lo.named (code=exited, 
status=0/SUCCESS)
  Process: 1820 ExecStart=/bin/sh -c echo nameserver 127.0.0.1 | 
/sbin/resolvconf -a lo.named (code=exited, status=0/S
 Main PID: 1820 (code=exited, status=0/SUCCESS)

Aug 01 21:02:02 localhost systemd[1]: Started local BIND via resolvconf.