Настраиваем часовой пояс, NTP-клиента.

/system clock set time-zone-autodetect=no time-zone-name=Europe/Moscow
/system ntp client set enabled=yes servers=0.ru.pool.ntp.org,1.ru.pool.ntp.org

Добавляем бридж и вешаем пул адресов на него же

/interface bridge add name=IKE2-loopback
/ip address add address=10.0.100.1/24 interface=IKE2-loopback network=10.0.100.0
/ip pool add name="IKE2" ranges=10.0.100.100-10.0.100.200

Настройку DNS вам нужно провести самостоятельно в зависимости от вашей специфики, но в итоге нам нужно, чтобы по адресу cloud-life.site пинговался IP-адрес настраиваемого VPN-сервера 66.66.66.66.

Следующий шаг — генерация сертификатов. Я разбил команды на блоки не случайно. Ошибки при генерации сертификатов нам не нужны. Выполняем по порядку, дожидаясь завершения процесса подписания, не прерывать!!!!

Генерируем корневой сертификат:

/certificate

    add name=CA.cloud-life.site country=RU state=MO \
    locality="Moscow region" organization=Cloud-life \
    common-name=CA.cloud-life.site subject-alt-name=IP:66.66.66.66 \
    key-size=2048 days-valid=3650 trusted=yes \
    key-usage=digital-signature,key-encipherment,data-encipherment,key-cert-sign,crl-sign

sign CA.cloud-life.site

Генерируем сертификат VPN-сервера:

add name=ikev2@cloud-life.site country=RU state=MO locality="Moscow region" \
organization=Cloud-life common-name=ikev2@cloud-life.site subject-alt-name=DNS:cloud-life.site \
key-size=2048 days-valid=3560 trusted=yes key-usage=tls-server

sign ikev2@cloud-life.site ca=CA.cloud-life.site

Создаём шаблон для дальнейшего создания сертификатов через копирование с шаблона:

add name=~clienttemplate@cloud-life.site country=RU state=MO    locality="Moscow region" \
organization=Cloud-life common-name=~client-template@cloud-life.site \
subject-alt-name=email:~clienttemplate@cloud-life.site key-size=2048 days-valid=3650 \
trusted=yes key-usage=tls-client

Сертификат для схемы Site 2 Site (для микротика Site-2):

add copy-from=~clienttemplate@cloud-life.site name=s2s@cloud-life.site \
common-name=s2s@cloud-life.site subject-alt-name=email:s2s@cloud-life.site

sign s2s@cloud-life.site ca=CA.cloud-life.site

Для первого клиента:

add copy-from=~clienttemplate@cloud-life.site name=client-1@cloud-life.site \
common-name=client-1@cloud-life.site subject-alt-name=email:client-1@cloud-life.site

sign client-1@cloud-life.site ca=CA.cloud-life.site

Для второго клиента, а остальные по той же схеме:

add copy-from=~clienttemplate@cloud-life.site name=client-2@cloud-life.site \
common-name=client-2@cloud-life.site subject-alt-name=email:client-2@cloud-life.site

sign client-2@cloud-life.site ca=CA.cloud-life.site

Далее экспортируем сгенерированные ключи, но обратите внимание, что сертификаты экспортируются в разных форматах (pem и pkcs12). Обязательно установите пароль при экспорте, т.к. при его отсутствии ошибок не будет, но работать VPN тоже не будет. Ни в коем случае не экспортируйте CA-сертификат с паролем, т.к. тогда экспортируется и закрытый ключ.

/certificate export-certificate CA.cloud-life.site type=pem

/certificate export-certificate ikev2@cloud-life.site type=pem  export-passphrase=passwordforexport

/certificate export-certificate s2s@cloud-life.site type=pem  export-passphrase=passwordforexport

/certificate export-certificate client-1@cloud-life.site type=pkcs12  export-passphrase=passwordforexport

/certificate export-certificate client-2@cloud-life.site type=pkcs12  export-passphrase=passwordforexport

Скачиваем экспортированные сертификаты и сохраняем в одну папку. Я еще и переименовал скаченные сертификаты для удобства, удалив начало cert_export_.

Чуть настроим FireWall и изменим MSS. Правила размещайте перед запрещающими!!!! Я расположу их в самом начале списка (place-before=0)

/ip firewall filter

add action=accept chain=input comment="IKE2 - Accept UDP 500,4500 IPSec" \
    dst-address=66.66.66.66 dst-port=500,4500 protocol=udp place-before=0

add action=accept chain=input comment="IKE2 - Accept IPSec-esp" dst-address=\
    66.66.66.66 protocol=ipsec-esp place-before=0

add action=accept chain=input comment="Accept - In Ipsec" ipsec-policy=\
    in,ipsec src-address=10.0.100.0/24 place-before=0

add action=accept chain=forward comment=\
    "Accept - All Traffic from VPN to ANY" dst-address=192.168.0.0/22 \
    ipsec-policy=in,ipsec src-address=10.0.100.0/24 place-before=0

add action=accept chain=forward comment=\
    "Accept - All Traffic from VPN to ANY" dst-address=0.0.0.0/0 \
    ipsec-policy=in,ipsec src-address=10.0.100.0/24 place-before=0

/ip firewall mangle

add action=change-mss chain=forward dst-address=10.0.100.0/24 ipsec-policy=\
    in,ipsec new-mss=1360 passthrough=yes protocol=tcp tcp-flags=syn tcp-mss=\
    !0-1360  place-before=0

Добавим правила NAT и поместим их над правилом основного маскарада:

/ip firewall nat

add action=masquerade chain=srcnat comment="ike2 masq non ipsec" \
    ipsec-policy=out,none out-interface-list="WAN interfaces" place-before=0

add action=masquerade chain=srcnat comment="ike2 masq non ipsec" \
    ipsec-policy=out,none out-interface-list="WAN interfaces" src-address=\
    10.0.100.0/24 place-before=0

add action=src-nat chain=srcnat comment="ike2 masq non ipsec" ipsec-policy=\
    out,none out-interface=WAN src-address=10.0.100.0/24 to-addresses=\
    66.66.66.66 place-before=0

Настраиваем параметры IPSec. Настройка едина как для конфигурации Client 2 Site, так и для Site 2 Site:

/ip ipsec policy group

add name="clients"
add name="s2s

«

/ip ipsec profile

add dh-group=modp2048,modp1536,modp1024 enc-algorithm=aes-256,aes-192,aes-128 \
    hash-algorithm=sha256 name="cloud-life.site"

/ip ipsec peer

    add exchange-mode=ike2 local-address=66.66.66.66 name=\
    "peer VPN" passive=yes profile="cloud-life.site"

/ip ipsec proposal

add auth-algorithms=sha512,sha256,sha1 enc-algorithms="aes-256-cbc,aes-256-ctr\
    ,aes-256-gcm,aes-192-ctr,aes-192-gcm,aes-128-cbc,aes-128-ctr,aes-128-gcm" \
    lifetime=8h name="cloud-life.site" pfs-group=none

/ip ipsec mode-config

add address-pool=IKE2 address-prefix-length=32 name=clients.cloud-life.site split-include=\
    0.0.0.0/0 static-dns=10.0.100.1 system-dns=no

add address=10.0.100.2 name=s2s.cloud-life.site split-include=10.0.100.1 static-dns=10.0.100.1 \
    system-dns=no

/ip ipsec identity
    add auth-method=digital-signature certificate=ikev2@cloud-life.site \
    generate-policy=port-strict match-by=certificate mode-config=clients.cloud-life.site \
    peer="peer VPN" policy-template-group="clients" \
    remote-certificate=client-1@cloud-life.site remote-id=user-fqdn:client-1@cloud-life.site

add auth-method=digital-signature certificate=ikev2@cloud-life.site \
    generate-policy=port-strict match-by=certificate mode-config=clients.cloud-life.site \
    peer="peer VPN" policy-template-group="clients" \
    remote-certificate=client-2@cloud-life.site remote-id=user-fqdn:client-2@cloud-life.site

add auth-method=digital-signature certificate=ikev2@cloud-life.site \
    generate-policy=port-strict match-by=certificate mode-config=s2s.cloud-life.site \
    peer="peer VPN" policy-template-group="s2s" \
    remote-certificate=s2s@cloud-life.site remote-id=user-fqdn:s2s@cloud-life.site

/ip ipsec policy

add dst-address=10.0.100.2/32 group=s2s proposal=cloud-life.site src-address=10.0.100.1/32 template=yes
    add dst-address=10.0.100.0/24 group=clients proposal=cloud-life.site src-address=0.0.0.0/0 template=yes

Сразу добавим GRE-туннель, который в дальнейшем позволит нам легко настроить маршрутизацию между офисами:

/interface gre add local-address=10.0.100.1 name="IKEv2-GRE-Tunnel" remote-address=10.0.100.2

/ip route add distance=1 dst-address=10.10.10.0/24 gateway="IKEv2-GRE-Tunnel"

На этом настройку VPN-сервера можно считать законченной и пора переходить на сторону клиента.

Обсудить статью на форуме

Categories:

Tags:

No responses yet

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *