По договоренности
Небходимо поднять OpenVPN сервер и файрволл который будет работать следующим образом:
Должны быть администраторы которым разрешён доступ ко всем нодам.
Должны быть пулы разных площадок (sites), и входящих в них нод, у каждой из которых свой VPN сертификат и VPN адрес. Внутри этих пулов доступ между нодами открыт, но может быть закрыт по необходимости.
Также существуют организации (companies) которые могут объединять пулы нескольких площадок. В остальных случаях между пулами разных площадок прямой связи нет.
Пулы организаций и входящих в них нод должны подтягиваться автоматом из JSON-файла, и права на пул должны выдаваться ноде автоматом на основе содержимого этого файла, при этом у администраторов, как упоминалось, всегда должен быть доступ ко всем нодам.
Пример JSON:
{
"sitename_1": {
"nodelist": [
{
"hostname": "nodename-1",
"ipaddr": "10.8.2.103",
"friendlyname": "Nodename 1",
"site": "sitename_1",
"company": "Сompany 1",
"connected": 1,
"updated": "2022-08-07T09:58:19.116Z",
"created": "2020-11-16T22:19:06.169Z"
},
{
"hostname": "nodename-2",
"ipaddr": "10.8.2.104",
"friendlyname": "Nodename 2",
"site": "sitename_1",
"company": "Company 1",
"connected": 1,
"updated": "2022-08-07T09:58:19.116Z",
"created": "2020-11-16T22:19:06.169Z"
}
]
},
"sitename_2": {
"nodelist": [
{
"hostname": "nodename-3",
"ipaddr": "10.8.3.70",
"friendlyname": "Nodename 3",
"site": "sitename_2",
"company": "Сompany 1",
"connected": 1,
"updated": "2022-08-07T09:58:19.116Z",
"created": "2020-11-16T22:19:06.169Z"
},
{
"hostname": "nodename-4",
"ipaddr": "10.8.3.71",
"friendlyname": "Nodename 4",
"site": "sitename_2",
"company": "Сompany 1",
"connected": 1,
"updated": "2022-08-07T09:58:19.116Z",
"created": "2020-11-16T22:19:06.169Z"
},
{
"hostname": "nodename-5",
"ipaddr": "10.8.3.72",
"friendlyname": "Nodename 5",
"site": "sitename_2",
"company": "Сompany 1",
"connected": 1,
"updated": "2022-08-07T09:58:19.116Z",
"created": "2020-11-16T22:19:06.169Z"
}
]
},
"sitename_3": {
"nodelist": [
{
"hostname": "nodename-6",
"ipaddr": "10.8.4.20",
"friendlyname": "Nodename 6",
"site": "sitename_3",
"company": "Сompany 2",
"connected": 1,
"updated": "2022-08-07T09:58:19.116Z",
"created": "2020-11-16T22:19:06.169Z"
},
{
"hostname": "nodename-7",
"ipaddr": "10.8.4.21",
"friendlyname": "Nodename 7",
"site": "sitename_3",
"company": "Сompany 2",
"connected": 1,
"updated": "2022-08-07T09:58:19.116Z",
"created": "2020-11-16T22:19:06.169Z"
}
]
}
}