В 10 версии iOS команда Apple наконец-то выпилила PPTP, чем сподвигла весь (не)цивилизованный ИТ-мир срочно учиться поднимать IPSec на своих бордерах. В том числе и меня.

“Поднять IPSec - что там сложного” - подумал я. Но не тут то было. По мануалам, хабрам и прочим ресурсам все отлично поднимается и работает между двумя микротиками, между микротиком и виндой, между микротиком и андроид. Но вот с iOS 10 ни в какую не хочет. Путем долгих ковыряний и трехэтажных словосочетаний, выяснил, что изменения для IPSec нужно применять в КОНСОЛИ! Не в графическом интерфейсе, а именно в консоли - ssh или встроенная в WinBox - без разницы. Но факт в том, что идентичные настройки в WinBox не позволяли поднять VPN между Mikrotik RouterOS и IPhone (по крайней мере в моем случае с RB751 на RouterOS 6.37.1 в связке с IPhone 6).

Привожу настройки L2TP и IPSec текстом и скрины из WinBox что должно получиться:

L2TP сервер

/interface l2tp-server server  
set authentication=mschap2 default-profile=default enabled=yes  

L2TP server

PPP профили дефолтные

\> ppp profile print   
Flags: \* - default   
 0 \* name="default" use-mpls=default use-compression=default   
     use-encryption=default only-one=default change-tcp-mss=yes   
     use-upnp=default address-list="" on-up="" on-down=""   
  
 1 \* name="default-encryption" use-mpls=default use-compression=default   
     use-encryption=yes only-one=default change-tcp-mss=yes use-upnp=default   
     address-list="" on-up="" on-down=""  

ppp profile

Пользователь L2TP тоже ничем не отличается от простого L2TP/PPTP и иже с ними без айписека

/ppp secret

add local-address=192.168.222.16 name=user1 password=l2tppassword profile=default-encryption remote-address=192.168.222.18 service=l2tp

L2TP secret

Приступаем к IPSec. Все, что я делал с IPSec - делал через консоль. Из винбокса не заработало. что именно сделалось не так - не проверял. Можете проверить методом исключения.

Добавляем группу (дефолтная работает криво - особенность RouterOS):

/ip ipsec policy group  
add name=l2tp

IPSec group

Корректируем proposal и добавляем новый:

/ip ipsec proposal
set \[ find default=yes \] enc-algorithms=aes-256-cbc,aes-128-cbc
add enc-algorithms=aes-256-cbc,aes-128-cbc name=L2TP pfs-group=none

IPSec proposal

Добавляем пира:

/ip ipsec peer
add enc-algorithm=aes-256,aes-192,aes-128,3des exchange-mode=main-l2tp generate-policy=port-strict passive=yes policy-template-group=l2tp secret=RouterOS

IPSec peer

Добавляем шаблон политики:

/ip ipsec policy
add dst-address=0.0.0.0/0 group=l2tp proposal=L2TP src-address=0.0.0.0/0 template=yes

IPSec policy

IPSec policy action

Ну и настройка IPhone:

IPhone

Спасибо Кириллу Васильеву за наводку

UPD: если имеются проблемы с подключением, попробуйте в /ip ipsec peer generate-policy установить port-override вместо port-strict 

UPD: как советуют в комментариях

Евгений15.10.2017, 1:17

В общем как ни странно вопрос решён, действительно помогло. А значит тем, кто кроме меня столкнулся с такой же проблемой, но не хочет прошиваться на релиз-кандидаты прошивок и ждёт официальную - им поможет отключение UPNP в роутере (в принципе его есть смысл юзать в домашнем варианте использования роутера, но и по работе в некоторых случаях он бывает полезен, в таком случае решение - только прошиваться на 6.41rc38)