OpenVpn клиент на Mikrotik

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

 

Почему Mikrotik?
Дело в нативной поддержке, простоте настройки, более стабильном поведении, низких (в сравнении) пингах и множестве других приятных фич, которые предоставляет RB951.
На сервере в центральном офисе, стоит CentOS. Установка openvpn на нем выглядит следующим образом.

 

# yum 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

ВНИМАНИЕ!! добавить маршрут для сети за микротиком

route 192.168.141.0 255.255.255.0 10.0.141.2

# Компрессия микротиком так же не поддерживается

;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:

1

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

2

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

3

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

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

6

Возможно необходимо добавить через командную строку:

На просторах сети многие рекомендуют банально выполнить «/certificate import», но у меня этим способом не импортировался закрытый ключ:

[admin@MikroTik] > /certificate import
passphrase:
     certificates-imported: 1
     private-keys-imported: 0
            files-imported: 1
       decryption-failures: 0
  keys-with-no-certificate: 0
[admin@MikroTik] /certificate> print
Flags: K - decrypted-private-key, Q - private-key, R - rsa, D - dsa, C - crl
 0   C name="cert1" subject=CN=MikroTik,emailAddress=XXXX,OU=XXXX,O=XXXX SPB,L=Saint-Petersburg,C=RU
       issuer=CN=XXXXX CA,emailAddress=XXXXX,OU=XXXXX,O=XXXXXX,L=Saint-Petersburg,C=RU
       serial-number="19" email=XXXXX invalid-before=feb/26/2014 15:33:34
       invalid-after=feb/26/2015 15:33:34 trusted=yes

Пришлось поочередно импортировать открытый и закрытый ключи:

[admin@MikroTik] /certificate> import file-name=XXXX.crt
passphrase:
     certificates-imported: 1
     private-keys-imported: 0
            files-imported: 1
       decryption-failures: 0
  keys-with-no-certificate: 0
 
[admin@MikroTik] /certificate> import file-name=XXXXX.key
passphrase:
     certificates-imported: 0
     private-keys-imported: 1
            files-imported: 1
       decryption-failures: 0
  keys-with-no-certificate: 0
 
[admin@MikroTik] /certificate> print
Flags: K - decrypted-private-key, Q - private-key, R - rsa, D - dsa, C - crl
 0 KRC name="cert1" subject=CN=MikroTik,emailAddress=XXXXX,OU=XXXXX,O=XXXXX,L=Saint-Petersburg,C=RU
       issuer=CN=XXXXX CA,emailAddress=XXXXX,OU=XXXXX,O=XXXXX,L=Saint-Petersburg,C=RU
       serial-number="19" email=XXXXX invalid-before=feb/26/2014 15:33:34
       invalid-after=feb/26/2015 15:33:34 trusted=yes

Для настройки OpenVPN соединения необходимо выполнить нижеприведенную команду, при этом необходимо не забыть указать параметры user/password с любыми значениями:

[admin@MikroTik] /interface ovpn-client> add name="test" connect-to=xxx.xxx.xxx.xxx port=1194 user="none" password="none" disabled=no profile=default certificate="cert1" add-default-route=no

После этого, проверяем поднялось ли соединение:

[admin@MikroTik] /interface ovpn-client> monitor
numbers: 0
    status: connected
    uptime: 1m58s
  encoding: BF-128-CBC/SHA1
       mtu: 1500
-- [Q quit|D dump|C-z pause]

Mikrotik также умеет получать интернет с wifi или 3G/4G.

Что делает его достаточно удобным.

Запись опубликована в рубрике Mikrotik, vpn, Общее. Добавьте в закладки постоянную ссылку.

Добавить комментарий