...

пятница, 27 июня 2014 г.

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

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

image


Почему 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:

image

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

image

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

image

Обратим внимание, что 10.100.0.0 — адресация между роутером и модемом DSL, через который он ходит в инет, а 10.0.141.0 — сеть VPN.

Настроить DNS можно тут IP->DNS, а DHCP в меню IP->DHCP Server->DHCP setup, указав параметры пула.

Всю нашу внутреннюю подсеть задвинем за NAT, для этого настроим маскарадинг.

Переходим IP->Firewall->NAT и добавляем правило по аналогии:

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



Осталось скопировать корневой сертификат(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 укажем адрес нашего сервера, порт, клиентский сертификат и типы шифрования.

image
Итог.



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

This entry passed through the Full-Text RSS service — if this is your content and you're reading it on someone else's site, please read the FAQ at http://ift.tt/jcXqJW.


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

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