Настройка OpenVPN в связке Mikrotik/Ubuntu

910653-6

В любой компании, где существует более одного офиса, рано или поздно возникает необходимость в объединении этих самых офисов. Многие провайдеры предлагают такие услуги, но попросят за это денег, да и кто знает, что там творится на стороне провайдера? Поэтому сделаем все сами, и рассмотрим вариант объединения с помощью Mikrotik RB750, Ubuntu и OpenVPN.

Почему Mikrotik?

Дело в нативной поддержке, простоте настройки, более стабильном поведении, низких (в сравнении) пингах и множестве других приятных фич, которые предоставляет RB750. Сторонние прошивки вроде tomato или dd-wrt были исключены из рассмотрения, т.к. были (и остаются) сомнения в их стабильности. Тестировался также Asus WL-520GU, но пинги были на 20-30 мс выше.

Итак, поехали.

На сервере в центральном офисе, стоит Ubuntu. Установка openvpn на нем выглядит следующим образом.

$ sudo su # apt-get update # apt-get upgrade # apt-get install openvpn # cp -R /usr/share/doc/openvpn/examples/easy-rsa/ /etc/openvpn # cd /etc/openvpn/easy-rsa/2.0 # ln -s openssl-1.0.0.cnf openssl.cnf # source vars # ./clean-all Создаем пару корневой сертификат ca.crt и ключ ca.key # ./build-ca Создаем пару сертификат сервера server.crt и ключ server.key # ./build-key-server server Создаем пару сертификат клиента client1.crt и ключ client1.key # ./build-key client1 Ключи Диффи Хелмана # ./build-dh # cd keys # mkdir /etc/openvpn/.keys && /etc/openvpn/.ccd # cp ca.crt ca.key dh1024.pem server.crt server.key /etc/openvpn/keys # cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz /etc/openvpn/ # cd /etc/openvpn # gunzip -d /etc/openvpn/server.conf.gz # nano /etc/sysctl.conf Находим строку и снимаем с нее комментарий: # Enable packet forwarding net.ipv4.ip_forward=1

Все нюансы настройки заключались в файле конфигурации openvpn на сервере, по итогу он получился таким (комментировал лишь существенные моменты, описание остальных параметров конфига есть в манах, инете, example конфигах и проч.):

port 1194 # Mikrotik не умеет работать с UDP proto tcp dev tun ca .keys/ca.crt cert .keys/server.crt key .keys/server.key # This file should be kept secret dh .keys/dh1024.pem server 10.0.141.0 255.255.255.0 client-config-dir .ccd client-to-client keepalive 10 120 tun-mtu 1500 mssfix 1450 cipher AES-256-CBC # AES auth sha1 # Компрессия микротиком так же не поддерживается ;comp-lzo user nobody group nogroup #Сохраняем туннель при обрыве на время keepalive persist-key #Не пересчитываем ключи при обрыве связи persist-tun status /var/log/openvpn-status.log log /var/log/openvpn.log verb 3 mute 10

/etc/openvpn/.ccd/client1

# Клиентская подсеть за mikrotik (192) и адрес openvpn у роутера (10) iroute 192.168.141.0 255.255.255.0 10.0.141.2 # Добавим шлюз по умолчанию для машин за микротиком ifconfig-push 10.0.141.2 10.0.141.1

Теперь Mikrotik

Настройку опишу с самого начала, в том числе организацию свича, настройку адресов, маршрутов, DHCP и проч.
Заходим в веб-интерфейс роутера, качаем winbox.
Запускаем winbox(возможно подключение как по IP, так и по MAC), открываем new terminal, и пишем следующее(achtung, сброс конфигурации роутера): system reset-configuration
Подключаемся ко второму порту микротика, запускаем все тот же winbox, и на появившийся запрос клацаем remove config
Организуем свич на портах 2-5, порт 1 будет выступать в роли WAN порта.
Для этого у всех интерфейсов 3-5 указываем мастер порт ether2:

52367feb88df7e355225bdc1646256ed

В меню IP->Adresses назначаем ip lan интерфейса

9d10cd9e3aec575295fe5c16e8b987cf

Добавим гейт для выхода в инет в меню IP->Routes (гейтом в данном конкретном случае выступает DSL модем с адресом 10.100.0.1)

c7ba7a876ea17e26ad314d4d1f5ca691

Обратим внимание, что 10.100.0.0 — адресация между роутером и модемом DSL, через который он ходит в инет, а 10.0.141.0 — сеть VPN.
Настроить DNS можно тут IP->DNS, а DHCP в меню IP->DHCP Server->DHCP setup, указав параметры пула.
Всю нашу внутреннюю подсеть задвинем за NAT, для этого настроим маскарадинг.
Переходим IP->Firewall->NAT и добавляем правило по аналогии:

cb0ff1e006d1cb561c55f8eef7d333cc

Счастье близко

Осталось скопировать корневой сертификат(ca.crt) и клиентские сертификат и ключ(client1.crt, client1.key), которые мы сгенерировали в процессе установки/настройки сервера. На микротике выбираем меню Files, и видим окно с файловой системой роутера. Именно сюда нужно положить наши ключи, работает drag-n-drop.
Чтобы роутер знал о наличии у него сертификатов, их нужно импортировать через System->Certifates добавляем ca.crt, client1.crt, client1.key, клиентский ключ автоматом станет «Decrypted».
Непосредственно соединение OpenVPN создается в меню Interfaces, при нажатии на красный плюс увидим OVPN Client в выпадающем списке.
На вкладке Dial Out укажем адрес нашего сервера, порт, клиентский сертификат и типы шифрования.

Итог

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

И сколько Мбит VPN прожует этот Микротик? 20? :) даже 20 не тянет ) Но у меня наоборот, микротик — сервер, а убунта — клиент А микротик уже научился OpenVPN по udp или все еще только tcp?
Пока только TCP. Тогда с точки зрения производительности связка не имеет особого смысла ага, те же длинки под openwrt молотят под udp достаточно резво, чего нельзя сказать о tcp
Кроме того, openvpn у микротиков не умеет lzo компрессию трафика использовать Если не ошибаюсь, easy-rsa в убунте теперь надо ставить отдельным пакетом совершенно верно ээ… а зачем openvpn? почему не ipsec? мыльница за 25$ даст 50мбит/с, а если требований к безопасности не так много — можно и просто l2tp Очень странный выбор. OpenVPN в Mikrotik реализован так, что лучше бы его вообще не было — не поддерживает UDP, LZO, аутентификацию только по сертификатам (без логина и пароля), т.е. то, что многие используют. К тому же, OpenVPN и так не сильно быстрый, а на Mikrotik он вообще будет буквально ползать (не думаю, что больше 25 МБит/с пропустит).
Уж лучше IPSec, или вообще IPIP/GRE/EoIP, если шифрование не нужно. Ну, или, IPSec поверх всего этого.

Источник: habrahabr.ru