[О блоге] [наверх] [пред] [2020-03-12 15:42:38+03:00] [98cf1f1dcab8867f44edd527ccad93c1e6b77a27]
Темы: [bsd][systemd][tip]

Автоматическое создание интерфейса для jail, в жопу systemd

Есть у меня jail для которого я создаю полноценный сетевой стек (vnet).
Относительно редко запускаю его и поэтому не парился с автоматизацией
создания сетевого интерфейса. Появился у меня недавно ещё один jail из
этой же серии, тоже с vnet-ом. В jail.conf вот такое:

    [...]
    vnet = new;
    vnet.interface = epair0b;
    [...]

Засада в том, что тут название интерфейса намертво вбито. Мне надо или
создавать заранее все эти epair интерфейсы или не иметь возможности
запускать эти jail-ы параллельно. Задача то проста само собой. Создал
скриптик который будет создавать epair интерфейс (это штука у которой не
просто epairX появляется, а epairXa и epairXb, и один из этих
интерфейсов отдаётся полностью в jail) с человекочитаемым названием:

    # cat net-jail-epair.sh
    #!/bin/sh -ex
    name=$1
    ifconfig epaira_$name && exit || :
    epair=$(ifconfig epair create)
    ifconfig $epair name epaira_$name
    ifconfig ${epair%a}b name epairb_$name
    ifconfig epaira_$name up

а в jail.conf теперь настройка сети выглядит вот так:

    [...]
    vnet.interface = epairb_unsafe;
    exec.prestart += "/root/net-jail-epair.sh unsafe";
    exec.poststop += "ifconfig epaira_unsafe destroy";
    [...]

Несколько строк на shell и задача вполне себе решена. Сразу вспомнил мир
systemd где это бы обязательно написали на C, добавив сотник строк кода
для такого use-case.

    [оставить комментарий]