В моей компании два офиса в двух совершенно разных местах. A - главный офис, а B - второстепенный. В офисе A есть VPN-сервер, и каждый компьютер получает доступ к сети A через этот сервер OpenVPN. В прошлом году у нас была ошибка с сервером VPN, из-за чего люди не могли работать в офисе B. У меня вопрос, есть ли способ переключения при отказе для OpenVPN? Мы хотим настроить другой VPN-сервер, но как мы решаем проблему аварийного переключения, если что-то произойдет.
Один из моих клиентов сильно зависит от OpenVPN при настройке нескольких сайтов, и мы используем два подхода:
Основная служба OpenVPN предоставляется двумя машинами в паре HA-failover с использованием пульса / CRM. Если один выходит из строя, другой перехватывает общие IP-адреса, и обслуживание продолжается. Существующие сеансы будут отброшены, но клиенты обычно повторно аутентифицируются автоматически, и мы обнаружили, что на практике это довольно безболезненно для пользователей.
На втором сайте также есть рабочая конечная точка OpenVPN, и у всех пользователей есть вторая конфигурация для резервного копирования. Если интернет-соединение с основным сайтом прерывается, они могут указать своим клиентам OpenVPN на вторую конфигурацию, и некоторое подобие нормальной жизни может продолжаться.
Если вы это сделаете, и вы используете аутентификацию пользователя по имени / паролю, а также аутентификацию конечной точки на основе сертификатов, мы обнаружили, что очень важно объединить среду аутентификации (например, аутентифицироваться через LDAP). В противном случае пользователи забудут свои токены доступа на редко используемых конечных точках или не смогут обновлять их повсюду, и любое аварийное переключение вызовет поток "мой пароль не работает"звонки.
Федеративная служба должна обладать такой же степенью отказоустойчивости, как и сами серверы OpenVPN, в противном случае все, что вы делаете, - это апстрим для своего SPOF.
Мы хотим настроить другой VPN-сервер, но как мы решаем проблему аварийного переключения, если что-то произойдет.
Хорошо. Если вы используете Linux, то
1) Простой способ - использовать monit https://mmonit.com/monit/
2) Bash скрипт в cron как мой https://github.com/darkhex/bash_scripts/blob/master/work-scripts/check_vpn.sh
3) Zabbix с триггерами
Предлагаю вам настроить кластер высокой доступности (отказоустойчивый). Вы хотели бы иметь виртуальный IP-адрес, который будет использоваться вашим vpn-клиентом в качестве шлюза. Этот IP-адрес будет перенесен на резервный сервер кластером в случае сбоя, и кластер запустит openvpn на резервном сервере. Я написал диспетчер отказоустойчивого кластера в сценарии оболочки, взгляните на него, и если вам нужна поддержка, свяжитесь со мной напрямую (посмотрите код моей электронной почты). https://github.com/nackstein/back-to-work/
Я считаю, что код элегантный и компактный, чтобы его мог понять даже опытный системный администратор. Это гораздо лучшее решение, чем запланировать сценарий crontab, поскольку с моим кластером вы полностью избежите ситуации разделения мозга. Единственным недостатком является то, что для работы требуется 3 компьютера (другое программное обеспечение кластера использует общее хранилище для кворума или подход STONITH, например кластер RedHat, но IHMO - уродливое решение). Имея всего 2 узла, вы не можете избежать разделения мозга в случае сбоя сервера, это математика :)