У меня есть установка с openvpn сервером и многими клиентами, подключенными к нему. Все те клиенты зафиксировали IP-адреса, полученные из их названия сертификата.
Позади openvpn сервера у меня есть сервер управления, который должен соединиться с клиентами (для контролирования/выполнения некоторых удаленных команд).
|-C1
|-C2
A -- VPN server -|
|-C3
|-C4
Сервер A может соединиться с C1-4 через VPN, с помощью зафиксированного дюйм/с.
То, что я хочу сделать, разворачивают установку до нескольких серверов VPN (чтобы обработать отключения сервера и распределить нагрузку), все еще имея простой путь к для нахождения любого определенного удаленного клиента.
|-C1
|-C2
--- VPN server 1 -|
|
A
|
--- VPN server 2 -|
|-C3
|-C4
Я знаю, как настроить клиенты для выбора одного из openvpn серверов наугад, что я не знаю, то, как справиться с IP выделением.
Я должен сохранить единственную подсеть для серверов? В этом случае, как A знает, позади которого сервера IP? У меня должна быть одна подсеть на openvpn сервер? В этом случае, как A знает который IP-адрес связаться?
Я немного изучил системы динамической маршрутизации, но я должен был бы управлять одним маршрутом на клиентский IP, который кажется очень неправильным... Другая опция состояла бы в том, чтобы сохранить DNS (или подобный DNS) сервисом обновленный с отображением {имя клиента => текущий IP-адрес}, но это кажется сложным, и я не уверен, что весь наш программный стек может адаптироваться к нему.
Как это - вид установок обработки отказа, обычно обрабатываемых?
DNS (или похожий на DNS) сервис, обновленный с помощью сопоставление {client-name => текущий IP-адрес}
Передать это на сервере (ах) OpenVPN относительно просто с помощью сценария - client-connect
на серверах OpenVPN. Сценарию подключения клиента передается IP-адрес нового подключения. Затем вы можете использовать это, чтобы вызвать nsupdate для настройки записей DNS.
Вот старый сценарий, который у меня есть, который регистрирует внешний адрес подключающегося клиента. Это не то, что вам нужно, но я уверен, что вы сможете найти нужные переменные, если просмотрите раздел Environment Variables
на странице руководства.
#!/bin/sh
# expects variables like from openvpn
#common_name=server1.example.org
#trusted_ip=192.168.47.1
dnssrv="192.168.0.1"
zone="vpn.example.org"
ttl="7200"
record=`echo ${common_name} | sed -e 's/example.org/vpn.example.org/'`
echo "client-connect.sh ${common_name} ${trusted_ip} ${record}" | logger
(
echo "server ${dnssrv}"
echo "zone ${zone}"
echo "update delete ${record} A"
echo "update add ${record} ${ttl} A ${trusted_ip}"
echo "send"
) | /usr/bin/nsupdate