Перейти к содержимому
Калькуляторы

Настройка 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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

fun105

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

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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.

Изменено пользователем SUrov_IBM

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

 

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

Изменено пользователем fun105

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

 

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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», что бы за счёт маршрутизации построить доступ до сервисов

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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

 

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

 

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 смайлов.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.