Jump to content
Калькуляторы

Настройка OpenVPN для подключения удаленных клиентов к сети Проблемы с работой OpenVPN в режиме моста при объединении двух сетей.

Имеется такая сеть.

 

Сервер1(192.168.1.12/24)---Роутер1(LAN:192.168.1.1/24(Сеть 1), WAN: 172.16.xxx.xxx)--- Интернет --- ---Роутер2(LAN:192.168.1.1/24 (Сеть 2), WAN: 77.88.xxx.xxx)---Сервер2(192.168.1.250/24)

 

Сеть1 и Сеть2 имеют одинаковый адрес (192.168.1.0/24) и шлюз (192.168.1.1), но подключены к разным роутерам.

В сети1 находится только Сервер1 и Роутер1, адрес Сервера1 не повторяется в Сети2.

Сетей вида Сеть1 несколько, их нужно подключить к Сети2.

Роутер1 - TP-Link c OpenWRT, Роутер2 - Mikrotik. Роутеры в остальных сетях - TP-Link+ddwrt.

 

Чего я бы хотел добиться:

чтобы любой из компьютеров в сети1 видел любой из компьютеров из сети2 и наоборот.

Решение которое я пока придумал - использовать OpenVPN в режиме bridge. OpenVPN запускается как приложение на серверах. TAP-Интерфейс на серверах объединяется в мост с севой картой.

 

Пробовал запускать - даже работало немного. Сервер1 пинговал компьютеры из Сети2. Сервер2 пинговал Сервер1.

Но при этом имеются больщие потери пакетов (около 20%). Если отключить впн и просто пинговать роутер по даресу, то потерь пакетов почти нет и задержки значительно меньше (думаю проблема не в линке).

При дальнейшах проверках наблюдаю что при подключении Сервера1 к Серверу2, Сервер2 начинает сильно лагать (подключен к нему по RDP). Когда Сервер2 отключается то лаги пропадают.

 

Думаю проблемы могут возникать из-за появления в сети двух хостов с адресом 192.168.1.1, но как это обойти не знаю. Также не совсем понятно как и нужно ли настраивать адреса для тунельных интерфейсов (опции ifconfig, server-bridge ip-addr mask pool)

 

Логи и конфиги во вложении. Соединение было активно в течение дня несколько часов, в логах много ошибок сокетов, думаю соединение закрывалось одним из роутеров по таумауту, т.к. обмена не было).

forum.zip

Share this post


Link to post
Share on other sites

чтобы любой из компьютеров в сети1 видел любой из компьютеров из сети2 и наоборот.

Это невозможно, при том что:

Сеть1 и Сеть2 имеют одинаковый адрес (192.168.1.0/24) и шлюз (192.168.1.1)

Т.к. компьютер в сети шлет пакеты напрямую, если адресат находится в пределах его сети (его маски).

Объединить две сети через ТАП это тоже самое,ч то просто воткнуть их в один коммутатор. Думаете у вас будет что-то работать, если у вас в сети два роутера с одинаковыми адресами ?

Share this post


Link to post
Share on other sites

Т.к. компьютер в сети шлет пакеты напрямую, если адресат находится в пределах его сети (его маски).

Объединить две сети через ТАП это тоже самое, что просто воткнуть их в один коммутатор. Думаете у вас будет что-то работать, если у вас в сети два роутера с одинаковыми адресами ?

 

У меня была такая мысль, но как избежать этого я не придумал. Если использовать tun, то непонятно как компьютерам из сети2 сказать что 192.168.1.12 находится в другой подсети, только если использовать разные подсети в сети1 и в сети2.

Share this post


Link to post
Share on other sites

fun105

Вот именно что никак, т.к. адресация идет по IP адресу. Если IP адреса совпадают то адресат непонятен, и это не обойти не перепрыгнуть.

 

Меняйте адресацию в одной из сетей или используйте DNAT для связи одной сети с другой.

Share this post


Link to post
Share on other sites

Если ничего не получится, то придется попробовать изменить адресацию.

Сейчас думаю, если проблема с наличием двух узлов с адресами 192.168.1.1, то в сети1 его можно перенастроить на другой, тоже из той же подсети, но свободный в обоих сетях. Я себе так и представлял работу в режиме моста - подключил клиента к серверу и он в одной локальной сети с сетью за сервером. Возможно, при использовании в режиме моста, объединять tap интерфейс c интерфейсом локальной сети нужно только со стороны сервера (тоже надо попоробовать).

Share this post


Link to post
Share on other sites

Fun105, доброго Вам времени суток.

 

Извините, за критику, но схема у Вас получается очень «корявая». Как выше написал Grifin.ru,

при соединении сетей средствами OpenVPN в режиме Ethernet Bridging (L2, TAP), Вы неизбежно

получите конфликт IP адресов, совпадающих в пределах одной логической сети. В Вашем случае,

конфликт IP адреса шлюзов по умолчанию – практически это полная дестабилизация работы обеих

сетей.

 

При условии, что «Сетей вида Сеть1 несколько, их нужно подключить к Сети2» можно попробовать

следующий вариант:

 

 

1. Изменить адресацию в «Сети2», на отличающуюся от 192.168.0.0/16. Например: 172.16.0.0/2x.

 

2. Перенастроить OpenVPN в режим routing (L3, TUN), используя уникальные IP для построения тоннелей,

не пересекающиеся с IP адресами из диапазона «Сети1», «Сети2», «Сети1.2» (копия «Сети1») и т. д.

(например 10.0.0.0/2x). Установив соединение между маршрутизаторами разных сетей, а не серверами.

 

3. Со стороны маршрутизаторов «Сети1», «Сети1.2» построить маршруты:

route add 172.16.0.0/2x («Сеть2») -> IP адрес, конца тоннеля на маршрутизаторе «Сети2».

 

4. Со стороны маршрутизатора «Сети2», явно прописать маршруты:

192.168.1.12/32 (Сервер1) -> IP адрес тоннеля на маршрутизаторе «Сети1»,

192.168.1.100/32 (Сервер1.2) -> IP адрес тоннеля на маршрутизаторе «Сети1.2» и так далее.

 

* Пожалуйста, обратите внимание на маску маршрутов в п. 4, до каждого хоста (сервера) /32.

Edited by SUrov_IBM

Share this post


Link to post
Share on other sites

SUrov_IBM, спасибо за ответ. Думал получится проще, похоже нет, попробую разобраться с Вашим вариантом.

 

По поводу работы OpenVPN в режиме моста вопрос еще один возник. Нужно ли на клиенте объединять в мост интефрейс локальной сети и tap интерфейс?

Edited by fun105

Share this post


Link to post
Share on other sites

При разной (правильно) адресации сетей, никаких мостов не нужно. Обычный роутинг.

 

Перенумеровать советую сразу обе сети на корпоративный диапазон 10.х.х.х.

Тогда при поднятии служб удаленного доступа к сети, у клиентов винда будет автоматом добавлять "классовый" маршрут 10/8 и все будет работать без лишних приседаний.

Share this post


Link to post
Share on other sites

SUrov_IBM, спасибо за ответ. Думал получится проще, похоже нет, попробую разобраться с Вашим вариантом.

 

По поводу работы OpenVPN в режиме моста вопрос еще один возник. Нужно ли на клиенте объединять в мост интефрейс локальной сети и tap интерфейс?

Fun105, доброго Вам времени суток.

 

OpenVPN в режиме Ethernet Bridging (L2, TAP) – позволяется инкапсулировать L2 (см. широковещательный домен)

трафик между оконечными интерфейсами своего тоннеля.

 

Такой режим часто применяется для «выноса» сегмента большой едино-адресной (например 10.1.1.0/20) на удалённый

объект без, применения маршрутизации. В таком случае происходит объединение реального (смотрящего в локальную сеть)

и туннельного (OpenVPN) интерфейсов на маршрутизаторе, но не на клиенте.

 

Такой режим соединения сети через публичный Интернет(L2 через IP (L3)), является крайне не желательным,

за исключением случаев, когда в сети расположено специфическое оборудование, требующие прохождения L2 трафика между

устройствами (всякая старая телеметрическая ерундовина и ей подобное).

 

Насколько я понимаю задачу, Вам необходимо свою «Сеть2» держать постоянно связанной с сервисами в сетях (какие то

«маленькие удалённые точки») «Сеть1», «Сеть1.2» (копия «Сети1») и т. д. имеющими одинаковую адресацию 192.168.1.1/24,

с невозможностью её поменять?

 

Как уже написано выше, минимум нужно сменить адресацию «Сети2», что бы за счёт маршрутизации построить доступ до сервисов

в удалённых сетях.

Share this post


Link to post
Share on other sites

Т.к. компьютер в сети шлет пакеты напрямую, если адресат находится в пределах его сети (его маски).

Объединить две сети через ТАП это тоже самое, что просто воткнуть их в один коммутатор. Думаете у вас будет что-то работать, если у вас в сети два роутера с одинаковыми адресами ?

 

У меня была такая мысль, но как избежать этого я не придумал. Если использовать tun, то непонятно как компьютерам из сети2 сказать что 192.168.1.12 находится в другой подсети, только если использовать разные подсети в сети1 и в сети2.

 

для совместного использования одной нумерации сети на обоих концах, разделите используемое адресное пространство пополам, например.

в сети2 смените адрес роутера, например, на 192.168.1.254. если адреса раздаются dhcp - перенастройте пулы адресов на обоих роутерах.

проследите, чтобы адреса не пересекались.

Share this post


Link to post
Share on other sites

Diman, пока так и поступил - сменил адрес роутера в сети1, все работает. DHCP используется только в сети2, поэтому перенастройка пулов не потребовалась.

tun, как советовали выше не совсем подходит, из-за того что софт на серверах определяет доступность соседних серверов по netbios именам компьютеров. Можно конечно прописать их на каждом сервере в файл hosts, но я решил идти что объединить сети будет проще.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this