OpenVPN – реализация технологии виртуальной частной сети, с поддержкой SSL.

Основным плюсом OpenVPN – это тот факт, что можно выбирать любой порт. Это позволяет обходить запреты firewall и NAT.
В этой статье я расскажу как создать OpenVPN сервер средствами RouteOS, для подключения клиентов систем Windows и Unix.
Сначала откроем терминал, и зададим переменные:

:global COMMONNAME “openVPN”
:global COUNTRY “UA”
:global STATE “PL”
:global LOCALITY “Poltava”
:global ORG “My org”
:global UNIT “”
:global KEYSIZE “1024”
:global USERNAME “user”
:global PASSWORD “password”

Теперь начнем создавать сертификаты. Обращаю Ваше внимание на то, что переменная KEYSIZE задает длину ключа. Можно поставить значение больше – это придаст криптостойкость системе, но скорость соединение при этом уменьшится.
Создадим сертификаты сервера:

/certificate
add name = ca-template country = ”$COUNTRY” state = ”$STATE” locality = ”$LOCALITY” organization = ”$ORGANIZATION” unit = ”$UNIT” common-name = ”$COMMONNAME” key-size = ”$KEYSIZE” days-valid = 3650 key-usage = crl-sign,key-cert-sign
sign ca-template ca-crl-host = 127.0.0.1 name = ”$COMMONNAME”
:delay [6]
add name = server-template country = ”$COUNTRY” state = ”$STATE” locality = ”$LOCALITY” organization = ”$ORGANIZATION” unit = ”$UNIT” common-name = ”server@$COMMONNAME” key-size = ”$KEYSIZE” days-valid = 3650 key-usage = digital-signature,key-encipherment,tls-server
sign server-template ca = ”$COMMONNAME” name = ”server@$COMMONNAME”
:delay [6]
add name = $USERNAME country = ”$COUNTRY” state = ”$STATE” locality = ”$LOCALITY” organization = ”$ORGANIZATION” unit = ”$UNIT” common-name = ”$USERNAME” key-size = ”$KEYSIZE” days-valid = 3650 key-usage = tls-client

Зададим диапазон IP-адресов для подключенных клиентов:

/ip pool
add name = VPN-POOL ranges = 10.2.1.2-10.2.1.254

Создадим PPP профиль

/ppp profile
add dns-server = 10.2.1.1 local-address = 10.2.1.1 name = VPN-PROFILE remote-address = VPN-POOL use-encryption = yes

Активируем интерфейс OpenVPN сервера

/interface ovpn-server server
set auth = sha1 certificate = ”server@$COMMONNAME” cipher = aes128,aes192,aes256 default-profile = VPN-PROFILE enabled = yes require-client-certificate = yes

Создадим правило в firewall

/ip firewall filter
add chain = input dst-port = 1194 protocol = tcp comment = ”Allow OpenVPN”

Если у Вас во вкладке filter rules уже есть записи, где блокируется трафик, нужно перетащить это правило на вверх.
Создадим пароль для профиля

/ppp secret
add name = $USERNAME password = $PASSWORD profile = VPN-PROFILE service = ovpn

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

/certificate
add name = ”$USERNAME-to-issue” copy-from = ”$USERNAME” common-name = ”$USERNAME@$COMMONNAME”
sign “$USERNAME-to-issue” ca = ”$COMMONNAME” name = ”$USERNAME@$COMMONNAME”
:delay [6]

Экспортируем все ключи с сертификатами.