Моя шпаргалка :)

Мануалы и настройки => Сетевое оборудование => mikroTik => Тема начата: George от Фев. 07, 2023, 06:06

Название: Настройка IKEv2 mikrotik
Отправлено: George от Фев. 07, 2023, 06:06
Настраиваем часовой пояс, 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 filteradd 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 mangleadd 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 natadd 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 groupadd name="clients"
add name="s2s
"
/ip ipsec profileadd 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 proposaladd 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-configadd 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-сервера можно считать законченной и пора переходить на сторону клиента.
Название: От: Настройка IKEv2 mikrotik
Отправлено: George от Апр. 15, 2025, 12:58
Возможные проблемы и их решения:
Если компьютер в домене, и в домене есть ЦС, т.е. на компе есть сертификат компа, то, поскольку в windows нельзя выбрать сертификат для vpn соединение не устанавливается, т.к. отсылается не верный сертификат. Решается вот такой командой в powershell
Set-VpnConnection -Name "My VPN Connection" -MachineCertificateIssuerFilter 'C:\mycerts\cert_export_MikrotikIKEv2-CA.crt'
Также действуем при наличии не одного IKEv2 подключения. НО!
Это не помогло в моем случае - в логах микротика все норм, подключение установлено, а вот в винде мне писало "неприемлемые учетные данные IKE"
решение - добавляем в реестр ключ:
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\RasMan\Parameters" /v DisableIKENameEkuCheck /t REG_DWORD /d 1