Для корректной работы OpenVPN на роутере, который будет выступать в роли Сервера должен быть статический IP-адрес. Его необходимо будет указывать на роутерах и других устройствах OpenVPN, которые будут работать в режиме клиентов.


Сделаем на роутере RTU OpenVPN сервер, чтобы к нему могли подключаться другие роутеры или какие-либо другие устройства с OpenVPN в режиме клиентов.  

На текущий момент мы имеем:

1. Роутер с SIM-картой, к которой привязан публичный статический IP адрес. Локальная подсеть 192.168.88.0/24 

2. Роутер с SIM-картой, которая работает по динамическому IP-адресу. Локальная подсеть 192.168.99.0/24

3. Прошивка роутера на момент написания статьи: Build for RTU1068 v.2.6.6S

Также у нас есть список сертификатов и ключей, которые мы подготовили ранее в статье:  

Организация OpenVPN часть первая: создание ключей и сертификатов


1. Настройка OpenVPN сервера через WEB-интерфейс

Для начала, нам необходимо подготовить наш роутер к настройке, для этого создадим необходимые файлы и папки. Как загружать и создавать файлы в роутере RTU, Вы можете прочитать в статье: Как загружать и скачивать файлы в роутерах серии RTU?


Первым делом создадим каталог ccd, в котором будут содержаться настройки для каждого OpenVPN клиента.


1.1. Подключение к роутеру через браузер, выбор конфигурации

На текущем этапе нам необходимо подключиться к WEB-интерфейсу роутера через браузер, для этого в адресной строке браузера вводим 192.168.88.1 (по умолчанию). Далее переходим в раздел Сервисы - OpenVPN. 


Далее нам необходимо выбрать режим работы устройства в OpenVPN - выбираем "Server configuration for a routed multi-client VPN", также необходимо задать имя процесса.

Нажимаем "Сохранить и применить"


1.2 Настраиваем параметры сервера OpenVPN

Нажимаем кнопку "Редактировать", нажимаем кнопку "Switch to advanced configuration".


На вкладке Service установим следующие параметры:

1. Параметр verb - данный параметр отвечает за информативность логирования в момент работы OpenVPN. На время настройки сервера рекомендуется установить значение данного параметра не ниже 9.

2. Установим каталог записи лога, для этого в дополнительном поле выберем параметр log, после чего нажмем кнопку "Добавить". Путь для записи лога оставим по умолчанию.


Сохраняем настройки.


На вкладке Networking:

1. Добавим маршрут до удаленного сервера, для этого добавим параметр route, в поле укажем маршрут до сети клиента через туннель:

2. Параметр comp_Izo - опциональный, некоторые устройства не поддерживают.

3. По умолчания OpenVPN работает на порту 1194, если необходимо изменить - добавляем параметр port и меняем значение 

4. Остальные параметры настраиваются по необходимости


Сохраняем настройки.


На вкладке VPN настроим следующие параметры:

1. Настроим режим сервера: 

2. Засылаем маршрутизацию клиенту, что запросы для данной подсети должны перенаправляться в туннель:

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

4. Разрешаем клиенту общение между друг другом:

5. Остальные параметры задаются опционально.


Сохраняем настройки.


На вкладке Cryptography:

1. Добавляем центр сертификации ca
2. Добавляем ключ Диффи-Хелмана

3. Добавляем серверный сертификат server.crt

4. Добавляем серверный ключ server.key

5. Активируем галочку tls_server


6. Остальные параметры добавляются опционально


Сохраняем и применяем настройки.


1.3 Запускаем сервер OpenVPN

Ставим галочку "Включить", нажимаем кнопку "Сохранить и применить", после чего нажимаем кнопку start.


После запуска сервера, WEB-интерфейс должен принять следующий вид:


1.4 Настройка сетевого интерфейса

Переходим Сеть - Интерфейсы, нажимаем кнопку "Добавить новый интерфейс"


1. Задаем имя нового интерфейса, к примеру VPN

2. Выбираем протокол нового интерфейса: Неуправляемый

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


Переходим во вкладку "Расширенные настройки", устанавливаем галочку "Запустить при загрузке"


Переходим в "Настройки межсетевого экрана", создаем зону VPN.

После этого интерфейс должен получить IP-адрес, если этого не произошло, необходимо перезапустить интерфейс.


1.5 Настройка межсетевой зоны VPN

В WEB-интерфейсе роутера переходим Сеть - Межсетевой экран

Редактируем ранее созданную зону VPN:


Во вкладке "Основные настройки" регулируем правила для трафика:

1. Входящий - принимать

2. Исходящий - принимать

3. Перенаправление - принимать

4. Маскардинг - активируем галочку


5. Разрешаем перенапревления для зон источников в LAN-зону


Сохраняем и применяем настройки.


1.6 Открываем порт для входящий подключений OpenVPN-клиентов

В настройках межсетевого экрана переходим в раздел "Правила для трафика", ищем поле "Открыть порты на маршрутизаторе".

Создаем правило, нажимаем кнопку "Добавить", после того, как правило создастся, переносим его в самую первую позицию (наивысший приоритет). 

По умолчанию OpenVPN работает по UDP-протоколу, однако некоторые устройства (к примеру оборудование Mikrotik) не работает в OpenVPN по UDP, поэтому в правилах указываем TCP+UDP.


На этом настройка OpenVPN сервера на роутере RTU закончена.


2. Настройка OpenVPN сервера через консоль

Настраивать OpenVPN сервер через консоль гораздо проще, чем через WEB-интерфейс, к тому же это займет меньше времени.


2.1 Подготовка роутера

Создадим папку ccd для хранения конфигураций клиентов, которые будут подключаться к нашему серверу:

cd /etc/openvpn

mkdir ccd


Создадим в папке ccd файл по имени нашего сертификата для первого клиента Client_VPN.crt.

cd /etc/openvpn/ccd

nano Client_VPN


Добавляем маршрут к сети клиента:

iroute 192.168.99.0 255.255.255.0

Сохраняем файл (Ctrl+X)


Для каждого нового клиента необходимо задавать имя файла таким же, каким мы задавали имя сертификату клиента.


Загружаем в роутер наши сертификаты, которые мы создали в первой статье по OpenVPN. Как загружать в роутер файлы можно прочитать в статье: Как загружать и скачивать файлы в роутерах серии RTU?


2.2 Выполняем настройку OpenVPN сервера 

Открываем файл конфигурации OpenVPN сервера:

nano /etc/config/openvpn


Прописываем настройки в этом файле и сохраняем его:

config openvpn 'ServerVPN'
        option dev 'tun'
        option comp_lzo 'yes'
        option keepalive '10 60'
        option server '10.0.100.0 255.255.255.0'
        option verb '9'
        option log '/var/log/openvpn.log'
        option mode 'server'
        option port '1194'
        list route '192.168.99.0 255.255.255.0'
        list push 'route 192.168.88.0 255.255.255.0'
        option client_to_client '1'
        option client_config_dir '/etc/openvpn/ccd'
        option tls_server '1'
        option ca '/lib/uci/upload/cbid.openvpn.ServerVPN.ca'
        option auth 'SHA1'
        option dh '/lib/uci/upload/cbid.openvpn.ServerVPN.dh'
        option cert '/lib/uci/upload/cbid.openvpn.ServerVPN.cert'
        option enabled '1'
        option client_cert_not_required '1'


Сохраняем и применяем настройки.


2.3 Настраиваем сетевой интерфейс

Открываем файл сетевого интерфейса:

nano /etc/config/network


Добавляем настройки туннеля:

config interface 'VPN'
        option proto 'none'
        option auto '1'
        option ifname 'tun0'


Сохраняем и применяем настройки.


2.4 Настраиваем межсетевой экран

Открываем файл настройки межсетевого экрана:

nano /etc/config/firewall


Добавляем в него настройки VPN-зоны, а также открываем порт 1194 (по умолчанию):

config zone
        option name 'VPN'
        option input 'ACCEPT'
        option output 'ACCEPT'
        option network 'VPN'
        option forward 'ACCEPT'
        option masq '1'

config forwarding
        option dest 'lan'
       option src 'VPN'

config forwarding
        option dest 'VPN'
        option src 'lan'

config rule
        option enabled '1'
        option target 'ACCEPT'
        option src 'wan'

config forwarding
        option dest 'VPN'
        option src 'lan'

config rule
        option target 'ACCEPT'
        option src 'wan'
        option proto 'tcp udp'
        option dest_port '1194'
        option name 'VPN'


Сохраняем и применяем настройки.


2.5 Запускаем OpenVPN

Перезагружаем все службы:

/etc/init.d/openvpn restart

/etc/init.d/network restart

/etc/init.d/firewall restart


Для проверки работы OpenVPN необходимо изучить лог:

cat /var/log/openvpn.log


На этом настройка OpenVPN сервера на роутере RTU закончена.


Переходим к следующей статье: OpenVPN режим мультиклиента: Часть 3 - Настройка RTU клиента (tun)


Сопутствующие статьи: 

Как загружать и скачивать файлы в роутерах серии RTU?

Как подключиться к роутеру RTU?

Организация OpenVPN часть первая: создание ключей и сертификатов


Дополнительная информация:
Wiki на GitHub