From 98cf1f1dcab8867f44edd527ccad93c1e6b77a27 Mon Sep 17 00:00:00 2001 From: Sergey Matveev Date: Thu, 12 Mar 2020 15:42:38 +0300 Subject: [PATCH] =?utf8?q?=D0=90=D0=B2=D1=82=D0=BE=D0=BC=D0=B0=D1=82=D0=B8?= =?utf8?q?=D1=87=D0=B5=D1=81=D0=BA=D0=BE=D0=B5=20=D1=81=D0=BE=D0=B7=D0=B4?= =?utf8?q?=D0=B0=D0=BD=D0=B8=D0=B5=20=D0=B8=D0=BD=D1=82=D0=B5=D1=80=D1=84?= =?utf8?q?=D0=B5=D0=B9=D1=81=D0=B0=20=D0=B4=D0=BB=D1=8F=20jail,=20=D0=B2?= =?utf8?q?=20=D0=B6=D0=BE=D0=BF=D1=83=20systemd?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Есть у меня 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. -- 2.48.1