Все, разобрался.
готовый конфиг выглядит так
для сервера
#все, что касается l2tp
#пул адресов для l2tp клиентов
/ip pool
add name=vpn-net ranges=192.168.100.2-192.168.100.254
#создадим профиль l2tp сервера
/ppp profile
add name=l2tp-vpn change-tcp-mss=yes local-address=192.168.100.1 only-one=no \
remote-address=vpn-net use-encryption=required
#включим l2tp сервер используя наш профиль, авторизовться клиенты будут по mschap2,
#mtu от балды, чтобы точно дефрагментации не было
/interface l2tp-server server
set authentication=mschap2 default-profile=l2tp-vpn enabled=yes \
max-mru=1300 max-mtu=1300
#пользователи l2tp
/ppp secret
add name=<юзер> password=<пароль> local-address=192.168.100.1 profile=l2tp-vpn \
remote-address=192.168.100.2 service=l2tp
#добавим отдельный интерфейс для пользователя юзер
/interface l2tp-server
add name=l2tp-s user=<юзер>
#все, что касается ipsec
#писали, что в ipsec группе default есть баг, создадим свою
/ip ipsec policy group
add name=l2tp
#какие алгоритмы шифрования поддерживает сервер (винда sha1-3des, android sha256-aes256cbc)
/ip ipsec proposal
set [ find default=yes ] auth-algorithms=sha1,sha256 enc-algorithms=\
3des,aes-128-cbc,aes-256-cbc pfs-group=none
#добавим пира, который будет ждать подключения по ipsec
/ip ipsec peer
add address=0.0.0.0/0 \ #можно подключиться с любого адреса ip
enc-algorithm=3des,aes-128,aes-192,aes-256 \ #по умолчанию, используется только во время подключения
exchange-mode=main-l2tp \
generate-policy=port-override \ #создавать политики автоматически (иногда создаются не правильно)
my-id=user-fqdn \
passive=yes \ #только слушать
policy-template-group=l2tp \
secret=<секретное слово>
#добавим политики ipsec
/ip ipsec policy
#добави стандартную политику шаблон в нашу группу
set 0 dst-address=0.0.0.0/0 group=l2tp src-address=0.0.0.0/0
#при подклчении политики для клиентов будут создаваться автоматически, но иногда
#они создаются с неправильныйми адресами, если так будет, надо добавить политику вручную
add dst-address=<белый ip клиента>/32 \
sa-dst-address=<белый ip клиента> \
src-address=<серый ip сервера, на внешнем интерфейсе>/32 \
sa-src-address=<серый ip сервера, на внешнем интерфейсе>
#если включен firewall, добавим правила
#используются порты 500 (для установки соединения ipsec), 4500 (через него передаются данные если включен nat-t), 1701 (l2tp)
/ip firewall filter
add chain=input dst-port=500 in-interface=eth1 protocol=udp
add chain=input dst-port=4500 in-interface=eth1 protocol=udp
add chain=input dst-port=1701 in-interface=eth1 protocol=udp
для клиента
#все, что касается l2tp
#создадим профиль подключения
/ppp profile
add name=vpnc use-compression=yes use-encryption=required use-mpls=yes
#создадим клиента используя наш профиль
/interface l2tp-client
add allow=mschap2 \
name=l2tp-c \
connect-to=<белый ip сервера> \
disabled=no \
keepalive-timeout=disabled \
max-mru=1300 \
max-mtu=1300 \
password=<пароль> \
profile=vpnc \
user=<юзер>
#все, что касается ipsec
#как и в случае с сервером создадим отдельную группу
/ip ipsec policy group
add name=l2tp
#какие алгоритмы шифрования поддерживает клиент (хотя бы 1 из них должен быть и на сервере)
/ip ipsec proposal
set [ find default=yes ] enc-algorithms=aes-128-cbc pfs-group=none
#создадим пира, который будет подключаться
/ip ipsec peer
add address=<белый ip сервера>/32 \
enc-algorithm=3des,aes-128,aes-192,aes-256 \ #это все по умолчанию, как и у пира на сервере
exchange-mode=main-l2tp \
generate-policy=port-override \ #может и не надо, все равно вручную создается
local-address=0.0.0.0 \
my-id=user-fqdn \
policy-template-group=l2tp \
secret=<секретное слово, как и на сервере>
#создадим политики
/ip ipsec policy
#как и на сервере, добавим стандартный шаблон в нашу группу
set 0 dst-address=0.0.0.0/0 group=l2tp src-address=0.0.0.0/0
#наша политика для подключения
add dst-address=<белый ip сервера>/32 \
dst-port=1701 \
src-address=<серый ip клиента, на внешнем интерфейсе>/32 \
src-port=1701
sa-dst-address=<белый ip сервера> \
sa-src-address=<белый ip клиента> \
#если планируется пускать весь траффик по vpn, оставим траффик к серверу через основной шлюз
/ip route
add distance=1 dst-address=<белый ip сервера>/32 gateway=<наш шлюз>