logo

Настройка OpenVPN для схемы с сервером и несколькими клиентами для роутеров iRZ

Задача

Настроить OpenVPN туннель на роутерах iRZ для схемы с сервером и несколькими клиентами. В примере только один роутер имеет внешний IP адрес, и будет выступать в роли сервера.

Остальные роутеры имеют “серые” IP.

Связность будет установлена между всеми локальными сетями всех роутеров.

ovpn shema 1
  • Server, Client 1, Client 2 - роутеры iRZ

203.0.113.2 — внешний IP роутера “сервера”.

192.168.1.0/24 — локальная сеть роутера “сервера”.

10.10.10.1 — туннельный адрес роутера “сервера”, который назначится автоматически в результате настройки.

192.168.2.0/24 и 192.168.3.0/24 — локальные сети роутеров “клиентов”.

10.10.10.2 и 10.10.10.3 — туннельные адреса роутеров “клиентов”, которые мы назначим вручную.

Решение

Основные настройки задаются в веб-интерфейсе роутера во вкладке VPN/Tunnels - OpenVPN tunnels

Конфигурация сервера

ovpn server config

Device TUN (L3) Настройка производится в режиме туннулирования L3.

Transport Protocol UDP

Мы настраиваем OpenVPN в режиме UDP чтобы выиграть в скорости его работы. В случае необходимости использовать TCP требуется выбрать TCP Server.

Remote Address

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

Port 1194

Оставляем стандартный порт OpenVPN.

Authentification Method TLS Server Данная опция необходима для настройки сервера.

Tunnel IP / Remote Tunnel IP Поля остаются пустыми, туннельный адрес назначится серверу автоматически.

CA Certificate / Local Certificate / Local Private Key / DH Parameter

Далее необходимо загрузить сертификаты и ключи, полученные от сертификационного центра, либо сгенерированные самостоятельно. Ключи для сервера и клиентов можно сгенерировать с помощью кроссплатформенной утилиты easy-rsa, ознакомившись с ее документацией. (https://github.com/OpenVPN/easy-rsa)

Remote Subnet / Remote Subnet Mask Поля остаются пустыми, маршруты до нужных сетей будут прописаны вручную в Additional Config.

Ping Interval / Ping Timeout 60 / 120 Раз в 60 секунд работоспособность туннеля будет проверяться отправкой пинга до удаленных сторон. Если в течение 120 секунд ответа не поступит, туннельный интерфейс будет перезапущен.

LZO Compression No Режим сжатия данных, проходящих через туннель. Должен быть установлен одинаковым со всех сторон.

Additional Config

mode server
server 10.10.10.0 255.255.255.0
client-to-client
client-config-dir /opt/ccd
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"
verb 3

mode server server 10.10.10.0 255.255.255.0

Опции устанавливают режим сервера, объявляется пул для туннельных адресов клиентов, серверу автоматически назначается первый туннельный адрес из пула — 10.10.10.1

client-to-client — опция позволяет прохождения трафика между клиентами.

client-config-dir /opt/ccd — опция указывает на каталог с настройками для клиентов, которые мы создадим позже.

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"

Опции отправляют необходимые маршруты всем подключившимся клиентам.

verb 3 — опция устанавливает уровень подробности логгирования событий OpenVPN. Уровень 3 минимально полезный при отладке, не забивающий лог лишними сообщениями.

/opt/ccd Для того, чтобы передать необходимую конфигурацию клиентам, требуется создать в файловой системе роутера специальную директорию и файлы в ней. Это можно сделать с помощью протокола SCP, воспользовавшись, к примеру программой WinSCP под OS Windows (https://winscp.net/eng/download.php). Либо из консоли роутера, подключившись по ssh/telnet, и воспользовавшись встроенным тексовым редактором vi

Так как клиента у нас два, то потребуется создать два файла:

  • client1

  • client2

Названия файлов должны совпадать с названиями клиентов, которые были даны им при создании сертификатов. Файлы не должны иметь расширения.

Содержание файлов:

client1:

ifconfig-push 10.10.10.2 10.10.10.1
iroute 192.168.2.0 255.255.255.0

client2:

ifconfig-push 10.10.10.3 10.10.10.1
iroute 192.168.3.0 255.255.255.0

Опция ifconfig-push назначает определенный туннельный адрес клиенту. После него указывается туннельный адрес сервера.

Опция iroute отвечает за маршрутизацию указанной сети внутри туннеля. Указывается локальная сеть, находящаяся за клиентом. После создания файлов, необходимо создать директорию ccd внутри неперезаписываемой директории по пути — /opt, и поместить файлы туда.

В итоге, выводы следующих команд в консоли роутера:

ls /opt/ccd
cat /opt/ccd/client1
cat /opt/ccd/client2

Должны выглядеть следующим образом:

ovpn server console

Конфигурация клиентов

Device TUN (L3) Работаем с L3

Transport Protocol UDP Если есть необходимость использовать TCP, и в конфигурации сервера указан TCP Server, то выбираем TCP Client.

Remote Address 203.0.113.2 Внешний IP сервера.

CA Certificate / Local Certificate / Local Private Key

Ключи и сертификаты соответствующего клиента.

Ping Interval / Ping Timeout 60 / 120 Раз в 60 секунд работоспособность туннеля будет проверяться отправкой пинга до удаленных сторон. Если в течение 120 секунд ответа не поступит, туннельный интерфейс будет перезапущен.

LZO Compression No

Additional Config pull

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

ovpn client1

ovpn client2