Denis Yuriev

Записки бездельника

Главная » Linux » OpenWRT » Пакеты » OpenWRT - OpenVPN-сервер

OpenWRT — OpenVPN-сервер

Давно мы не расширяли наши владения возможности нашего устройства с прошивкой OpenWRT.
Давно присматривался к замечательной возможности сия прошивки — OpenVPN клиент/сервер, однако любитель графических интерфейсов, а не консоли и ждал, пока починят расширение для веб-интерфейса LuCI по управлению сия чудом интернет-технологий.
Недавно заметил, что в транке он таки починен и можно начать исследовать.
Признаюсь честно, до сегодняшнего дня опыта по настройке, да и вообще работе с данным сетевым решением у меня не было, так что посмотрим что получится.

Зачем нужен OpenVPN?

Представим, что у нас есть два офиса, между которыми ни провод не проложить, ни WiFi не берет, а вот объединить их сети надо.
Вот тут то нам и помогут технологии виртуальных частных сетей.

За точку отчета возьмем
192.168.1.0/24 — первая подсеть, где будет располагаться наш OpenVPN-сервер
192.168.2.0/24 — вторая подсеть, подключаемая к первой с помощью OpenVPN-клиента

В этой статье мы рассмотрим настройку сервера, который будет запущен на устройстве с OpenWRT прошивкой.

Собираем OpenWRT с OpenVPN сервером

Как всегда, нам понадобится добавить пару пакетов в нашу прошивку. Можно, конечно, доустановить, но я не ищу легких путей и люблю, когда всё сразу из коробки.
Вспоминаем, как собирать прошивку OpenWRT и на этапе выбора компонентов добавляем:

LuCI --->
 3. Applications --->
  <*> luci-app-openvpn

Теперь посмотрим, какие библиотеки для работы с SSL у нас используются другими пакетами. Зачем? Да всё бонально — если какой то пакет зависимостями тянет библиотеки openssl, то и мы будем использовать сия библиотеку для OpenVPN, иначе же для экономии размера прошивки будем использовать polarssl

Libraries --->
 SSL --->
  < > libopenssl
  < > libpolarssl

У меня никто еще не используется, по этому сразу иду подключать пакет OpenVPN с поддержкой PolarSSL

Network --->
 VPN --->
  <*> openvpn-polarssl

Надеюсь, логика, понятна.
Теперь можно собирать прошивку, как обычно

make -j3

Подготовка сертификатов

Многие советуют подключать еще один пакет, для генерации сертификатов, но по мне так это бред — добавлять пару сотен килобайт в прошивку, когда эти килобайты будут использоваться лишь однажды. Посему я буду генерировать сертификаты на компьютере с установленной Ubuntu
Установим небольшой пакет:

sudo apt-get install easy-rsa

И перейдем в каталог, куда это чудо установилось (к слову, это чудо — генератор сертификатов):

cd /usr/share/easy-rsa

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

sudo chown -R denis:denis .

Теперь настроим информацию в сертификатах:

nano vars

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

export KEY_SIZE=1024 //длина ключа
export CA_EXPIRE=3650 //время действия главного ключа в днях
export KEY_EXPIRE=3650 //время действия сертификата в днях
export KEY_COUNTRY="RU" //страна
export KEY_PROVINCE="Arkhangelsk oblast" //регион
export KEY_CITY="Severodvinsk" //город
export KEY_ORG="7x7 Studio" //организация
export KEY_EMAIL="[email protected]" //электронный ящик
export KEY_OU="7x7 Studio" //подразделение
export KEY_NAME="7x7 Studio" //имя ключа

Отредактировали? Сохраняйте.
Теперь скопируем последнюю версию конфига в файл openssl.cnf

cp openssl-1.0.0.cnf openssl.cnf

Загружаем переменные

source ./vars

На всякий случай почистим от мусора

./clean-all

И создадим сертификат сервера

./build-ca

На все вопросы отвечаем утвердительно (он переспросит то, что в файле отредактировали).
Теперь пора создать ключ сервера

./build-key-server server

Опять таки со всем соглашаемсяtop

Теперь очередь за ключом Диффи Хельман. Признаюсь, даже не стал разбираться пока в теории. Одно лишь скажу — если вы всё таки генерируете на роутере его, то вы возненавидите себя, так как даже на компьютере генерация занимает несколько минут. На роутере же может занять час.

./build-dh

Создали? Превосходно. Теперь идем в вебинтерфейс нашего устройства, чтобы запустить новоиспеченный сервер.

Настройка OpenVPN-сервера в OpenWRT через веб-интерфейс

Переходим в веб-интерфейсе на страницу Сервисы -> OpenVPN

Страница настроек OpenVPN

Страница настроек OpenVPN

Добавим сервер. Для этого придумываем имя латинскими буквами, без девизов и пробелов, выбираем тип Server configuration for routed multi-client VPN и жмем кнопку «Добавить»

Добавление процесса OpenVPN

Добавление процесса OpenVPN

Нас перебросит на страницу с основными настройками процесса.
Здесь нам необходимо добавить 4 дополнительных поля (нижняя часть страницы)
Итак, добавляем наши сгенерированные файлы
ca -> ca.crt
dh -> dh1024.pem
cert -> server.crt
key -> server.key
После добавления этих файлов наш сервер VPN запустится автоматически.
Проверить, всё ли прошло верно можно командой ifconfig в консоли. Должен появиться интерфейс tun0:

tun0      Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  
          inet addr:10.0.100.1  P-t-P:10.0.100.2  Mask:255.255.255.255
          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:100 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

Назначение зоны межсетевого экрана

Теперь нам надо добавить немного эстетики и удобства, чтобы не ползать лишний раз опять таки в консоль.
Для начала зайдем на в раздел Сеть -> Интерфейсы
И добавим новый интерфейс

Добавление нового интерфейса для VPN-соединения

Добавление нового интерфейса для VPN-соединения

Протокол — неуправляемый
Интерфейс — tun0
Жмем Применить и выбираем Настройки межсетевого экрана

Добавляем зону для VPN-соединения

Добавляем зону для VPN-соединения

Добавляем зону VPN
Теперь сохраняем, применяем и переходим непосредственно в настройки фаервола.
Сеть -> Межсетевой экран
Находим внизу страницы нашу новоиспеченную зону и переходим к её редактированию.

  • Входящий — принимать
  • Исходящий — принимать
  • Перенаправление — принимать
  • Маскарадинг — вкл
  • Разрешить перенаправление в зоны назначения — lan
  • Разрешить перенаправление из зон-источников — lan
Настройки зоны VPN для межсетевого экрана

Настройки зоны VPN для межсетевого экрана

Так же сохраняем и применяем.

Открываем порт для OpenVPN-сервера

Последнее, что чуть не забыл — нам же надо открыть порт, чтобы клиенты могли подключиться извне
Сеть -> Межсетевой экран -> Правила для трафика
Ищем раздел Открыть порты на маршрутизаторе и добавляем наш порт:

  • Имя — OpenVPN
  • Протокол — UDP
  • Порт — 1194

Сделай приятное автору - поделись статьей в социальной сети.

12 Комментариев

  1. Денис, а если не создается tun0 как быть?

  2. Доброго времени суток! Сделал как в статье(даже несколько раз переделывал). Все получается как положено! Но при подключении из Windows 8 с использованием OpenVPN GUI, соединение поднимается (назначается IP адрес из сети VPN), а вот ping на сервер не проходит(10.0.100.1 не пингуется). В чем может быть проблема?

  3. Все заработало, оказалось что клиента надо было запускать с правами Администратора. Спасибо!

  4. Добрый день!
    Подскажите, а через веб-доступ luci-app-openvpn можно настроить такие опции openvpn сервера, как
    push «route X.X.X.X Y.Y.Y.Y»
    и
    client-config-dir … ?
    Т.е. можно ли настроить сервер для полноценного доступа машин из сети клиента в сеть сервера и наоборот?

  5. Alex013

    Вот блин…
    А что «расширение для веб-интерфейса LuCI по управлению сия чудом интернет-технологий» окончательно сломали?

  6. metamorfoz

    Возможно задам глупый вопрос, но тем не менее: в наличии два 3g роутера с openwrt на борту (у обоих публичный статический ip), к одному подключен сервер МОХА (который собирает показания с кучи устройств), к другому — ПК (на нем установлена прога, которая на основе собранных данных строит графики). Не легче ли в данном случае на роутере 1 пробросить порты (которые нужны проге на ПК) и настроить фаервол на обмен данными с роутером 2, чем разбираться с vpn сервером?

Оставьте комментарий

Войти с помощью: 
Denis Yuriev DMOZ Индекс цитирования

© 2017