[О блоге]
[наверх]
[пред]
[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.
[оставить комментарий]