За допомогою jails є можливість ізолювати процеси у окремому середовищі.
Але якщо jails сконфігуровані з vnet=on і jails використовують той самий інтерфейс то усі jails підключаються до мережі через створення epairs і додавання їх до спільного bridge.
Це дозволяє спілкуватися jails через мережу, але якщо це не потрібно ?
То можна налаштувати через системні налаштування можливість застосувати правила firewall до bridge або bridge members, це по замовчування вимкнено.
Є завдання не дозволити мережеве спілкування окремим jails за допомогою функціоналу
PRIVATE members of brigde.
A private interface does not forward any traffic to any other port that is also designated as a private interface. The traffic is blocked unconditionally so no Ethernet frames will be forwarded, including ARP packets.
|
private bridge member |
Для додавання значення private до vnet members of bridge було створено скрипт (/root/test/pstart.sh).
#!/bin/sh
maxloop=20
BRIDGE="bridge0"
while [ "${maxloop}" -ne "0" ]
do
if [ ! -z "`/sbin/ifconfig ${BRIDGE} | /usr/bin/grep 'member: vnet' | /usr/bin/grep -v PRIVATE`" ]; then
/sbin/ifconfig ${BRIDGE} | /usr/bin/grep member: |/usr/bin/grep -v PRIVATE | awk '{ print $2 }' | /usr/bin/grep 'vnet' | xargs -I % ifconfig ${BRIDGE} private %
break
else
sleep 1
maxloop=`expr $maxloop - 1`
fi
done
Його потрібно запускати перед запуском або після запуску jail у випадку використання iocage.
./pstart.sh&
iocage start foo
Таким чином скрипт запускається у фоні і чекає створення інтерфейсу vnet до 20 сек, як тільки інтерфейс буде створений скрипт додає відповідне значення private.
Додатково, є метод використовувати автоматичний запуск налаштувань з використання параметра
exec_poststart jail.
Але є особливість використання exec_poststart - те що він повинен закінчити роботу з кодом 0, а також jail чекає закінчення роботи усіх підлеглих процесів.
Тому я застосував не гарний але робочий трюк - використати системний планувальник at котрий запускається через cron за замовчуванням кожні 5 хвилин.
iocage set exec_poststart='/usr/bin/at -f /root/test/pstart.sh now' foo
iocage start foo
* Starting foo
+ Started OK
+ Configuring VNET OK
+ Starting services OK
Результати роботи налаштувань:
|
example of result 1 |
|
example of result 2, added Private |
|
negative test ping jail foo to jail faa |
|
negative test ping jail faa to jail foo |
|
positive test ping from jail faa to other non private jail |
Буду радий на кращі пропозиції ...
Немає коментарів:
Дописати коментар