From: Sergey Matveev Date: Thu, 12 Mar 2020 12:42:38 +0000 (+0300) Subject: Автоматическое создание интерфейса для jail, в жопу systemd X-Git-Url: http://www.git.stargrave.org/?a=commitdiff_plain;h=98cf1f1dcab8867f44edd527ccad93c1e6b77a27;p=stargrave-blog.git Автоматическое создание интерфейса для 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. ---