Привет всем. Позвольте мне начать с того, что мой опыт работы с Linux не очень хорош, но обычно я легко могу сориентироваться.
На работе у нас есть настройка OpenVPN, которую нужно улучшить в течение некоторого времени. Главный сервер (режим тапа) работает в нашем офисе, за довольно медленным DSL-соединением. Основная проблема заключается в том, что, поскольку меня обычно нет в офисе, каждый раз, когда я хочу получить доступ к чему-либо в виртуальной сети, мне приходится проходить через этот сервер, чтобы попасть куда-нибудь еще.
У нас есть два сервера с подключениями по 100 Мбит, которые мы используем для разработки и производства, еще около 3 серверов в офисе (один из них находится за другой линией T1 для VOIP) и около двух десятков клиентов, которые ежедневно используют сеть. из разных мест.
У нас были ситуации, когда сетевая маршрутизация (вне нашего контроля) не позволяла людям добраться до нашего основного сервера OpenVPN, в то время как другие места могли подключаться. Также каждый раз, когда кто-то за пределами офиса хочет получить что-то с любого из серверов (скажем, репозитория кода на 500 МБ), колоссальная скорость загрузки 20 КБ / с в наши дни просто неприемлема (я упоминал медленный DSL? Хорошо). Нам пришлось реализовать формирование трафика на этом сервере, поскольку максимальное значение этого соединения было довольно тривиальным.
У меня была мысль запустить два (или более) сервера OpenVPN в сети. Однако у них должна быть одна и та же подсеть, поскольку наше приложение использует IP-адреса виртуальной сети для некоторых из своих основных функций. Клиенты также желательно сохранить те же IP-адреса, но это не жизненно важно.
Для простоты вызовем текущий сервер офис и второй сервер, который я настраиваю, облако. Вызовите сервер на T1 Телефон.
Это оказалось довольно сложно, потому что как только я подключаюсь к облако, Я не могу видеть офис. Любые маршруты к серверу, которые будут проходить офис также не работают, пока я подключен к облако (нет пинга, ничего) и наоборот. Для iptables также нет правил, блокирующих трафик.
Недавно наткнулся на этот статья на linuxjournal, но решение, которое они предоставляют, похоже, охватывает только использование двух серверов и несколько устарело (даже не могу найти много документации, их вики отключена). Они также заявляют, что добавление дополнительных серверов будет сложной задачей.
В идеале я хотел бы сохранить существующий сервер офис запустить виртуальную сеть, а также запустить демон OpenVPN на облако и Телефон серверов (100 Мбит и очень надежное соединение соответственно), чтобы мы были в безопасности в случае аппаратного сбоя, отказа DSL и т. д.
Итак, по сути, я ищу высокодоступное решение OpenVPN (исправление, патч, взлом, настройка, как бы вы его ни называли), которое будет принимать соединения на нескольких хостах (2 или более), сохраняя при этом ту же подсеть IP-адресов. независимо от сервера, к которому вы подключаетесь.
Спасибо, что прочитали, и извините за длинный пост, я надеюсь, что он уловил суть: P
РЕДАКТИРОВАТЬ:
Еще одна важная часть, о которой я забыл упомянуть, - это то, что 3 сервера должны иметь согласованные IP-адреса в виртуальной сети, потому что логика нашего приложения напрямую зависит от них. Клиенты не имеют значения, у них может быть любой адрес, но серверы должны обмениваться данными между собой. Если вам известно другое решение (возможно, какой-то DNS для записей в 10.8.0. *), Включите его. Еще раз спасибо.
РЕДАКТИРОВАТЬ 2:
Добавлена карта сети, она не очень хороша, но должна донести суть. Обратите внимание, что для связи любого сервера с любым другим сервером он всегда должен проходить через Офис сервер. Это задумано, хотя я хотел бы изменить эту функциональность на Облако.
Я довольно много играл с сетями и openvpn (системный администратор более 10 лет в ISP), так как насчет этого простого решения.
Создайте запись в dns, которая будет иметь n IP-адресов для одного хоста (циклический путь)
В клиенте Openvpn укажите удаленное имя хоста, чтобы обеспечить циклический перебор
На сервере vpn есть две сетевые карты, одна из которых подключена к общедоступному ip (круговой адрес 1), другая подключена к частному классу. Второй сервер, другой публичный адрес (круговой адрес 2), тот же частный класс.
Создайте интерфейс tap0, который будет связывать адреса с частным интерфейсом, с одним протоколом DHCP, который будет управлять обращением к вашим клиентам.
Таким образом, я думаю, вы сможете добиться желаемой избыточности.
Если для клиентов приемлемо получать разные адреса в зависимости от сервера, к которому они подключены, это довольно легко настроить. Вы напрямую не указали ни количество клиентов, которые вы подключили, ни размер вашего адресного пространства (ни то, находится ли ваш VPN в выделенной сети или использует ли он то же адресное пространство, что и остальная часть вашего офиса), поэтому я делать кучу предположений, которые вполне могут быть неверными. Не стесняйтесь отвечать с исправлениями.
Я предполагаю:
Вы разделяете свою сеть VPN на несколько сетей / 27, каждая из которых связана с одним сервером. Это дает вам:
Конфигурация OpenVPN для первого из этих серверов будет включать следующее:
server 192.168.1.0 255.255.255.224
push "route 192.168.1.0 255.255.255.0"
push "route 10.10.10.0 255.255.255.0"
Во втором случае это будет включать:
server 192.168.1.32 255.255.255.224
..и так далее.
В вашей сетевой инфраструктуре должны быть маршруты ко всем трем серверам. Это было бы примерно так:
route add 192.168.1.0/27 gw 192.168.1.1
route add 192.168.1.32/27 gw 192.168.1.33
route add 192.168.1.64/27 gw 192.168.1.65
С точки зрения ваших приложений, любой подключенный клиент находится на одном /24
сеть. Вы получаете три сервера OpenVPN (с местом для добавления дополнительных, поскольку вы используете только адреса до 192.168.1.95 с этим расположением) или с местом для большего количества клиентов на сервер.
Это краткий обзор того, как вы все настраиваете. Если что-то здесь не имеет смысла или вы хотите, чтобы я более подробно остановился на конкретной области, дайте мне знать.
NB: написано слишком много Glögg, поэтому может потребоваться проверка синтаксиса и / или фактов.
Возможно, вы захотите взглянуть на n2n
http://www.ntop.org/products/n2n/
Вы можете иметь всех клиентов в одной подсети. Вы должны иметь возможность сохранить то же адресное пространство и просто добавить некоторые маршруты через новый маршрут vpn, чтобы все заработало.