Демон Strongswan помещает свои файлы .pid и .ctl в / var / run, чтобы определить, запущены ли они уже.
Я хочу запустить несколько таких демонов на одном компьютере в разных сетевых пространствах имен.Я пытаюсь добиться этого путем привязки монтирования разных каталогов (скажем, / etc / namespace1 к пространству имен 1 / var / run и / etc / namespace2 к пространству имен 2 / var / run). / var / run - это символическая ссылка на / run, поэтому я привязываю mount к / run, как показано ниже.
Я почти могу добиться этого следующим образом:
"" В пространстве имен по умолчанию ""
$:~ sudo echo "red" >> /etc/red/run/pidfile
$:~ sudo echo "blue" >> /etc/blue/run/pidfile
$:~ sudo ip netns exec red
"" В красном пространстве имен ""
$:~ mount --bind /etc/red/run/ /run/
$:~ cat /var/run/pidfile
red
"" В синем пространстве имен ""
$:~ mount --bind /etc/blue/run/ /run/
$:~ cat /var/run/pidfile
blue
Так что это нормально работает. Таким образом, демон, когда он создает /var/run/charon.pid внутри красного цвета, не будет путать его с синим пространством имен /var/run/charon.pid, и могут запуститься два экземпляра.
Однако вот в чем проблема: если я «выхожу» из красного пространства имен, а затем снова вхожу через «ip netns exec red bash», то монтирования больше не существует. То есть / var / run / redfile нет вообще.
Итак, вопрос в том, как я могу сделать это липким? Нужны ли мне изменения в / etc / fstab? Но не работает. Если спросят, я могу предоставить подробную информацию о том, что «это не работает».
Я заблудился. Буду признателен за помощь.
Спасибо!
Простым решением было бы указать каждому экземпляру strongswan использовать разные каталоги для хранения файла PID, установив правильное значение переменной средыIPSEC_PIDDIR
в сценарии запуска и остановки.
ip netns exec
уже привязывает монтирование /etc/netns/<netns name>/*
к соответствующему файлу/каталогу в /etc
. Таким образом, вы можете скомпилировать strongSwan, например. --with-piddir=/etc/ipsec.d/run
, а затем создайте необходимые каталоги, чтобы каждый экземпляр создавал свои файлы PID в отдельных каталогах:
# mkdir -p /etc/ipsec.d/run
# mkdir -p /etc/netns/<netns name 1>/ipsec.d/run
# mkdir -p /etc/netns/<netns name 2>/ipsec.d/run
Более подробную информацию можно найти на вики strongSwan .