Настройка Open VPN между двумя роутерами MikroTik (site to site).

Настройка роутера-сервера.

В роли сервера VPN использован роутер RB3011 с ROSv7.16.1. В роутере оставлена базовая конфигурация, чтоб не настраивать Firewall, NAT DNS, DHCP-server. Для роутера должен быть обеспечен внешний постоянный IP-адрес.

Освоить MikroTik Вы можете с помощью онлайн-куса «Настройка оборудования MikroTik». Курс содержит все темы, которые изучаются на официальном курсе MTCNA. Автор курса – официальный тренер MikroTik. Подходит и тем, кто уже давно работает с микротиками, и тем, кто еще их не держал в руках. В курс входит 162 видеоурока, 45 лабораторных работ, вопросы для самопроверки и конспект.

Open VPN начинается с создания сертификатов, потому что активировать сервер без сертификата не позволяет система.

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

Подписываем название роутера.

 

Создание сертификатов.

 

Создание CA.

CA – это корневой удостоверяющий сертификат с помощью которого подписываются и подтверждается подлинность других сертификатов.

Name – любое понятное название.

Country, State, Locality, Organization, Unit – страна, область, район, организация, подразделение у каждого свои.

Common Name – указано доменное имя. Обычно тут указывается общедоступное имя, но для OpenVPN это не принципиально и по этому тут можно записать любое уникальное имя, например CA.

Key Size: 2048 – размер ключа шифрования, оставлен без изменений. Чем больше размер ключа, тем надежнее шифрование, но при этом возрастает нагрузка на процессор и замедляется скорость обработки данных.

Days Valid: 3650 дней (10лет) – срок действия сертификата.

 

На вкладке Key Usage указываем назначение использования сертификата.

ctr sign –  возможность подписывать другие сертификаты.

key cert. sign – возможность подписывать ключи.

Вводим параметры и нажимаем кнопку «Apply».

 

После создания сертификата подписываем его на кнопку «Sign».

В CA CRL Host указан IP-адрес роутера в сети VPN для размещения списка отозванных сертификатов.

 

Создание сертификат для сервера.

Сертификат подтверждает подлинность сервера. Подключаясь на сервер, клиент проверяет его сертификат.

Common Name – указано доменное имя. В сертификате сервера должны присутствовать IP-адрес или доменное имя, но по факту такая проверка не выполняется.

Days Valid – срок действия сертификата 1825 дней (5лет).

digital signature – проверка цифровых подписей, отличных от подписей на сертификатах.

key encipherment – используется для шифрования при передаче приватных ключей.

tls server – tls аутентификация сервера.

Более подробно назначения использования сертификатов можно посмотреть в RFC5280.

 

Подписываем CA сертификатом.

 

Создание сертификат для клиента.

Этот сертификат устанавливается в роутере-клиенте. В OVPN двухсторонняя аутентификация. Сервер проверяет подлинность клиента по его сертификату.

В разных клиентских сертификатах нужно указывать разные Common Name, иначе подписание завершится ошибкой.

Срок действия сертификата 1 год. Если это постоянный клиент, как в данном случае филиал организации, сертификат можно выпустить на 5-10 лет.

tls client – tls аутентификация клиента.

 

Подписываем.

В нашей организации один клиентский сертификат использован на 15 филиалов. Это наверно не самый лучший вариант, но уменьшает лишние действия админа.

 

Результат выпуска сертификатов.

 

Создание профиля.

Профиль нужен при работе с большим количеством клиентов, для настройки каких-то общих параметров, например пул IP-адресов, MPLS, таймаут сессии и тп. Если клиентов мало, профиль можно не создавать.

 

Пул IP-адресов для VPN.

Прежде чем в профиль добавить пул, его нужно создать.

 

Профиль.

Другие параметры в профиле изменяются по необходимости.

 

Создание пользователя.

Вместо слова FILIAL в названии удобно указывать место расположения роутер (город, село, район).

В поле Remote Address указан IP-адрес, который должен быть у роутера-клиента всегда постоянным. Эта настройка имеет приоритет над профилем, в котором указан пул IP-адресов. Постоянный IP-адрес клиента может понадобится в случае написания маршрута в сеть за клиентским роутером.

 

Создание интерфейса.

Статический интерфейс может понадобится для указания в правилах файервола или при написании маршрутов.

 

Активация сервера OVPN.

Port: 1194 – стандартный порт на котором работает OpenVPN. После того, как VPN будет настрое и заработает, стандартный порт желательно заменить на нестандартный. У нас так и сделано. Отпала половина сканер-ботов согласно логам. Можно замаскировать трафик под HTTPS указав порт 443.

Mode: ip – режим туннелирования L3, аналог tun.

(ethernet — режим туннелирования L2, аналог tap) wiki

Protocol: tcp. TCP или UDP каждый решает для себя сам. Можно экспериментально установить, что работает лучше в конкретной ситуации. TCP подтверждает доставку каждого пакета и является более надежным вариантом. Но из-за подтверждения доставки возрастает нагрузка на процессор и канал передачи, могут возникать задержки. Так как по VPN в нашем случае передается небольшой объем данных, нагрузка на оборудование и задержки в передаче не проявляются. При регулярной передаче большого объема данных по VPN или при работе с приложениями чувствительными к задержкам, предпочтительной настройкой будет протокол UDP.

Netmask: 24 – маска подсети, применяемая к клиенту.

MAC Address: мак-адрес интерфейса OVPN. Будет сгенерирован автоматически, если не указан.

Max MTU: 1500 – максимальный размер пакета, который интерфейс OVPN сможет отправить без фрагментации.

Keepalive Timeout: 60сек. Определяет период времени (в секундах), после которого маршрутизатор начинает отправлять пакеты keepalive каждую секунду. Если в течение этого периода времени (т.е. 2 * keepalive-timeout) не поступает трафика и ответов keepalive, не отвечающий клиент объявляется отключенным

Default Profile: Профиль по умолчанию для использования. Выбираем созданный ранее профиль.

Certificate: Сертификат, который будет использоваться сервером. Выбираем созданный ранее сертификат.

Require Client Certificate – Проверка сертификата клиента. Активация этой настройки требуется обязательно.

TLS Version: only v1.2 – использование TLS v1.2. Наиболее безопасный вариант.

Auth.: sha256 – метод аутентификации, который примет сервер.

SHA256 – Secure Hash Algorithm – безопасный алгоритм хеширования с размером 256 бит.

Cipher: aes 256 cbc – разрешенный стандарт шифрования.

AES: Advanced Encryption Standard – симметричный алгоритм блочного шифрования с длинной ключа 256 бит. CBC: Cipher Block Chaining mode — режим сцепления блоков шифротекста.

Выбрать шифрование не так просто, как кажется. Это поиск компромисса между надежностью шифра и производительностью.

Key Renegotiate Sec: 3600. Пересогласование ключа с клиентом каждые 60мин. Стандартный для OpenVPN cпособ защиты от некоторых видов атак.

Redirect Gateway: Эта настройка указывает, какие маршруты клиент OpenVPN должен добавить в таблицу маршрутизации.

(def1 заменяет 0.0.0.0/0 на 0.0.0.0/1 и 128.0.0.0/1, ipv6 для ipv6)

Push Routes – передача маршрута клиенту.

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

[Сеть назначения] [Маска] [Шлюз] [Метрика]

В таблице маршрутизации клиента появляется динамический маршрут.

Enabled Tun IPv6, Tun Server IPv6, Server IPv6 Prefix Length – настройки для IPv6 не используются в данном случае.

 

Правило Firewall Filter.

Правило разрешает входящее в роутер соединение на порт 1194. Это нужно для подключения клиентов.

Можно на вкладку Action не заходить в данном случае. Разрешающее действие используется по умолчанию.

К правилу желательно добавить комментарий.

 

Расположение правила.

 

Маршрут в сеть клиента VPN.

В маршруте можно указывать интерфейс подключения клиента вместо IP-адреса. Это применимо когда IP-адрес раздается автоматически из пула и может измениться.

 

Экспорт сертификата.

Переносим сертификат на роутер клиента.

Перетягиваем сертификат к себе на компьютер.

 

Доступ в Интернет.

Настраиваем доступ в Интернет любым возможным способом (DHCP-client, static-IP, PPPoE). Необходимо чтоб присвоился внешний IP-адрес на который будут подключатся все клиенты.

 

Настройка роутера клиента.

Клиентом в данном случае является филиал организации. Для него не нужен постоянный внешний IP-адрес. В разных филиалах использованы разные роутеры, в большинстве это hEX (RB750GR3) с ROSv7.16.1 на данный момент. Интернет-соединение выполняется через adsl-модем в режиме моста (Bridge-mode).

Подключаемся в роутер через WinBox. Переименовываем, если это организация нового филиала.

В названии удобно использовать место расположения филиала.

 

Синхронизируем время.

 

Импорт сертификата.

Перетягиваем сертификат в папку с файлами на роутере.

Импортируем.

 

Создание интерфейса.

 

Название любое понятное.

 

На вкладке Dial Out вводим параметры для подключения к серверу.

Connect To – внешний IP-адрес роутера-сервера. У каждого свой.

Port: 1194 – порт, который настроен на сервере для Open VPN.

Mode: ip – режим туннелирования L3, такой же как на сервере.

Protocol: tcp – протокол такой же как на сервере.

User – имя пользователя, используемое для аутентификации.

Password – пароль пользователя.

Profile – профиль не настраивался, по этому используется default.

Certificate – выбираем импортированный сертификат.

Verify Server Certificate: активируем. Проверка сертификата сервера. В сертификате должно присутствовать такое же значение как в поле Connect To интерфейса клиента (IP-адрес или доменное имя). Но по факту, подключение и верификация происходят даже если в сертификате IP или доменное имя не соответствуют полю Connect To.

TLS Version: only v1.2 – указание версии TLS.

Auth.: sha256 — разрешенный метод аутентификации. Такой же как на сервере.

Cipher: aes 256 cbc – используемое шифрование. Такое же как на сервере.

Use Peer DNS – возможность добавить DNS сервер от сервера Open VPN.

Add Default Route: создание маршрута по умолчанию 0.0.0.0\0 с IP-адресом VPN сервера в роли шлюза.

Весь Интернет-трафик пойдет через главный роутер организации. Такая настройка используется, если согласно политикам ИБ в организации должен быть единый шлюз (и для филиалов в том числе). Логично, что в данном случае возрастает нагрузка на канал передачи данных.

Dont Add Pushed Routes (routenopull) – запрет на добавление маршрутов от сервера.

 

Далее нужно выполнить настройку подключения к Интернету если это еще не было сделано ранее. Это может быть DHCP-client, PPPoE, или статический IP, маска, шлюз, переданные провайдером. У каждого свой способ подключения.

 

После активации Интернет-соединения, роутер-клиент подключится  к роутеру-серверу. Об этом сообщает флаг R на интерфейсе.

 

В роутере-сервере подключение происходит на созданный статический интерфейс.

 

В таблице Active Connections появится новое подключение. В его свойствах можно посмотреть IP-адрес клиента и тип шифрования.

Если соединение не произошло, то нужно открывать лог и смотреть причину.

 

Маршрут в сеть за VPN.

Маршрут во внутреннюю сеть главного офиса из сети клиента.

Альтернативный вариант этой настройки можно выполнить на сервере в поле Push Routes.

 

Выполняем трассировку из ПК главного офиса в ПК филиала.

 

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

Трафик проходит через VPN. Что и требовалось. Если трафик проходит через внешние IP-адреса, то нужно искать ошибку настройки. Где-то неверно расставлены IP-адреса.

При выполнении трассировки на обоих компьютерах был отключен антивирус. С включенным антивирусом пинг и трассировка не работают без дополнительных разрешающих правил в антивирусах компьютеров.

 

Более подробное описание Open VPN для RouterOS можно посмотреть в mikrotik.help.

 

Open VPN для ПК с ОС Windows.

В данном примере рассмотрено подключение компьютера с ОС Windows к сети организации через OpenVPN клиент.

 

Настройка в роутере-сервере.

Каждому клиенту создаем сертификат.

В сертификате у нас указывается фамилия и через нижнее подчеркивание имя, потому что попадаются однофамильцы.

 

Подписываем.

 

Каждому клиенту создаем учетные данные.

 

Статический IP-адрес или интерфейс можно не назначать.

 

Экспортируем сертификат в формате PKCS12 и переносим на ПК клиента.

 

Настройка на ПК клиента.

Скачиваем клиент для Windows с официального сайта.

Чтоб не возникало лишних проблем на первоначальном этапе, используется версия 2.4.12. После того, как VPN запустится, можно подумать об обновлении клиента.

Далее, далее, готово. Пути установки не изменялись.

 

На рабочем столе появится ярлык. Запускаем его. После этого на панели задач или в трее появится значок компьютера, немного похожий на сетевое подключение. В нем можно выполнить настройки.

 

Переходим в папку с установленной программой.

Файл базовой конфигурации находится в папке sample-config. Копируем его в папку config, переименовываем и редактируем.

 

Так же в папку config добавляем сертификат и файлы с учетными данными.

 

Содержание файла config.

client – указание на клиентское подключение.

dev tun – виртуальный сетевой драйвер работающий на уровне L3.

proto tcp – протокол для передачи данных.

remote 85.51.148.195 1194 – адрес и порт VPN-сервера.

persistkey – сохранение состояния ключей при перезапуске.

persisttun – сохранение сетевого состояния при перезапуске.

pkcs12 Bunsha_I_V.p12 – сертификат клиента.

authuserpass credentials.cfg – данные для аутентификации клиента, которые созданы в меню Secrets на сервере.

askpass export-passphrase.cfg – файл с паролем, который вводился при экспорте сертификата из сервера.

remotecerttls server – верификация сертификата сервера.

route 192.168.88.0 255.255.255.0 172.16.20.1 – маршрут во внутреннюю сеть главного офиса.

auth SHA256 – способ аутентификации, такой же как на сервере.

cipher AES-256-CBC – метод шифрования, такой же как указан на сервере.

verb 3 – детализация файла лога уровня 3 (возможно 0-9).

 

Содержание файла credentials.cfg – логин и пароль пользователя OpenVPN. Файл создается в текстовом редакторе, затем у него меняется расширение.

Если не создавать этот файл и не указывать его в конфигурации, то у клиента каждый раз при подключении будет появляться окно для ввода логина и пароля.

 

Содержание файла export-passphrase.cfg. Пароль, который вводился при экспорте сертификата из сервера.

 

Сохраняем отредактированную конфигурацию. Подключаемся к серверу VPN.

 

Появится окно с ходом выполнения конфигурации, которое потом пропадает при успешном соединении с сервером.

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

 

За работу OpenVPN отвечают следующие службы.

Для применения конфигурации может понадобиться их перезапуск.

После подключения компьютеру раздастся IP-адреса из пула. У пользователя есть доступ во внутреннюю сеть организации.

Освоить MikroTik Вы можете с помощью онлайн-куса «Настройка оборудования MikroTik». Курс содержит все темы, которые изучаются на официальном курсе MTCNA. Автор курса – официальный тренер MikroTik. Подходит и тем, кто уже давно работает с микротиками, и тем, кто еще их не держал в руках. В курс входит 162 видеоурока, 45 лабораторных работ, вопросы для самопроверки и конспект.