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

#роутеры #tunnel #OpenVPN

Задача:

Настроить 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, ознакомившись с ее документацией

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.
Либо из консоли роутера, подключившись по 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

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

ovpn client1

ovpn client2

Параметры клиентов

Поля

Значение

Описание

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 достаточно, чтобы на клиентах автоматически применилась конфигурация, указанная на сервере. В результате со всех роутеров доступны все локальные сети