Объединение локальных сетей через OpenVPN

После публикации статьи OpenVPN-сервер на Keenetic нас часто спрашивают, как сделать доступными локальные сети со стороны клиента из сети сервера или объединить сети между клиентами. Опишем необходимые условия подробно.

1. Если речь идет о первой части статьи с объединением двух Keenetic в топологии точка-точка, для обеспечения взаимной видимости сетей, помимо маршрутов, достаточно будет сделать только две настройки:

1.1 На Keenetic-сервере дать команды:

no isolate-private

system configuration save

Это необходимо, так как интерфейсы Home и OpenVPN0 имеют уровень безопасности private. Указанная команда разрешает доступ между сегментами с уровнем private, который по умолчанию запрещен. Если же разрешать такой доступ по каким-либо причинам не желательно, можно настроить правила vмежсетевого экрана, для исходящего трафика на интерфейсе OpneVPN0. Сделать это можно только из командной строки, так как веб-интерфейс настраивает лишь правила для входящего трафика. Подробно об этом можно прочитать здесь: Описание-работы-с-межсетевым-экраном.

1.2 На Keenetic-клиенте достаточно будет открыть нужные протоколы и порты для входящего трафика в настройках межсетевого интерфейса через веб-интерфейс. 

2. Если рассматривать второй пример из статьи OpenVPN-сервер на Keenetic с топологией subnet и сертификатами помимо указанных выше настроек и стандартной маршрутизации понадобится еще настроить внутреннюю маршрутизацию OpenVPN (iroute). Это необходимо OpenVPN в режиме subnet для корректной маршрутизации пакетов внутри себя. Одной только маршрутизации между Keenetic и интерфейсом OpenVPN, как в случае других VPN, недостаточно.  

Проверенные на версии NDMS 2.11.С.0.0-1 конфигурации сервера и двух клиентов присоединены в конце статьи.

2.1 Загрузите конфигурацию сервера tls-server-Keenetic-1.ovpn в настройки OpenVPN первого Keenetic. В ней, помимо стандартных настроек: 

port 5190
proto udp
dev tun
server 10.8.0.0 255.255.255.0
topology subnet
comp-lzo yes
cipher AES-256-CBC
verb 3
mute 20

добавлена команда, разрешающая обмен между клиентами:

client-to-client

а также маршруты в удаленные сети клиентов: 

route 192.168.2.0 255.255.255.0
route 192.168.3.0 255.255.255.0

и маршруты, передаваемые клиентам при подключении: 

push "route 192.168.1.0 255.255.255.0"
push "route 192.168.2.0 255.255.255.0"
push "route 192.168.3.0 255.255.255.0"

Это универсальная конфигурация, которая позволит использовать однотипные конфигурации на стороне клиентов, не настраивая в них никаких маршрутов. Поэтому сервер настроен для передачи подключаемым клиентам сразу всех маршрутов, включая в свою собственную сеть 192.168.1.0/24 и в сети клиентов 192.168.2.0/24 и 192.168.3.0/24. А чтобы передаваемые клиентам маршруты в их собственные сети не вызвали сбой в работе, поможет настройка iroute. Это второе ее важное предназначение.  

Для использования iroute в файле конфигурации имеется директива:

client-config-dir /storage  

Она укажет OpenVPN место для хранения конфигураций клиентов, которые будут использоваться при их подключении. Область /storage это служебная область памяти Keenetic, доступная через веб-интерфейс, как показано ниже.

Следующая директива является необязательной. В ней указывается путь к файлу с указанием привязок ip-адресов к именам клиентов (commonName), если необходимо выдавать каждому клиенту определенный ip-адрес из сети 10.8.0.0/24:

ifconfig-pool-persist /storage/ipp.txt

Наконец команды:

keepalive 10 120
persist-key
persist-tun

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

Итак, запишите приведенный в конце статьи файл конфигурации сервера в Keenetic-1:

Keenetic-1-ovpn.png 

2.2 Теперь в разделе "Системный монитор", на закладке Накопители выберите storage. Следует заметить, что эта закладка доступна только на моделях Keenetic, поддерживающих сетевые накопители. Хотя сам диск или флеш-карту подключать необязательно. Это внутренний раздел памяти Keenetic, предназначенный в том числе для работы с принтерами. Он понадобится нам только для сервера OpenVPN, клиентами же могут выступать любые Keenetic-и. 

Keenetic-1-storage-1.png

Выбрав область storage:/ загрузите в нее прикрепленные в конце статьи файлы Keenetic-2, Keenetic-3 и ipp.txt

Keenetic-1-storage-2.png

Файлы Keenetic-2 и Keenetic-3 это текстовые файлы только без расширения txt, к которых хранятся внутренние маршруты (iroute) в сети клиентов: 

iroute 192.168.2.0 255.255.255.0 - в файле Keenetic-2

и 

iroute 192.168.3.0 255.255.255.0 - в файле Keenetic-3

Важно, что имена этих файлов должны соответствовать имени commonName соответствующего клиента, которое мы задавали при формировании сертификатов клиентов в пунктах 2.5 и 2.6 статьи OpenVPN-сервер на Keenetic.  

Файл ipp.txt содержит:

Keenetic-2,10.8.0.20
Keenetic-3,10.8.0.30

и позволяет выдать первому клиенту адрес 10.8.0.20, а второму 10.8.0.30. При отсутствии такой настройки, адреса будут выдаваться начиная с 10.8.0.2 и дальше случайным образом в зависимости от очередности подключения. 

2.3 На Keenetic-сервере дайте команды:

no isolate-private

interface OpenVPN0 security-level private

system configuration save

2.4 Откройте порт используемый OpenVPN, в нашем примере UDP 5190 в настройках межсетевого экрана для используемого для подключения в интернет соединения.

На этом настройки сервера завершены, и можно приступать к настройке клиентов.

2.5 Загрузите конфигурацию первого клиента tls-client-Keenetic-2.ovpn в настройки OpenVPN второго Keenetic. Настройки стандартные, только измените имя KEENETIC-1.mykeenetic.ru на имя или ip-адрес вашего Keenetic, выполняющего роль OpenVPN-сервера: 

client
dev tun
proto udp
remote KEENETIC-1.mykeenetic.ru 5190
resolv-retry infinite
nobind
keepalive 10 120
persist-key
persist-tun
verb 3
comp-lzo
cipher AES-256-CBC

Keenetic-2-ovpn.png

2.6 Не забудьте открыть нужные вам протоколы в настройках межсетевого экрана первого клиента для интерфейса OpenVPN0: 

Keenetic-2-Firewall.png

2.7 Загрузите конфигурацию второго клиента tls-client-Keenetic-3.ovpn в настройки OpenVPN третьего Keenetic, изменив в ней имя KEENETIC-1.mykeenetic.ru на имя или ip-адрес вашего Keenetic, выполняющего роль OpenVPN-сервера. Обратите внимание, что настройки второго клиента отличаются от настроек первого лишь сертификатом и ключом. Поэтому по аналогии можно настроить и подключить любое число клиентов. 

Keenetic-3-ovpn.png

2.8 Не забудьте открыть нужные вам протоколы в настройках межсетевого экрана второго клиента для интерфейса OpenVPN0:

Keenetic-3-Firewall.png

2.9 На этом настройки завершены. Об успешном результате их применения можно судить по журналу сервера. Видно, что он выдал заданные нами в ipp.txt ip-адреса 10.8.0.20 и 10.8.0.30:

Keenetic-1-log.png

На Keenetic-2 в разделе Интернет, на закладке Подключения видно, что он получил адрес 10.8.0.20:

Keenetic-2.png

А в журнале, что Keenetic-2 получил маршруты в сеть сервера 192.168.1.0/24 и в сеть второго клиента Keenetic-3 192.168.3.0/24:

Keenetic-2-log.png

На Keenetic-3 в разделе Интернет, на закладке Подключения видно, что он получил адрес 10.8.0.30:

Keenetic-3.png

А в журнале видим, что Keenetic-3 получил маршруты в сеть сервера 192.168.1.0/24 и в сеть первого клиента Keenetic-2 192.168.2.0/24::

Keenetic-3-log.png

В заключении проверьте доступность сети клиентов со стороны сервера:

Keenetic-1-ping.png

Доступность сети сервера и второго клиента со стороны первого:

Keenetic-2-ping.png

А также доступность сети сервера и первого клиента из сети второго:

Keenetic-3-ping.png

Итак, все сети видят друг друга. Задача решена.

 

Была ли эта статья полезной?

Пользователи, считающие этот материал полезным: 1 из 1

Еще есть вопросы? Отправить запрос

Комментарии

0 комментариев

Войдите в службу, чтобы оставить комментарий.