Настройка L2TP/IPSec между роутером LT40 / LT50 / LT51 и Mikrotik

Настройка L2TP/IPSec между роутером LT40 / LT50 / LT51 и Mikrotik

В данной статье будет описана настройка L2TP/IPSec между роутерами с операционной системой OpenWrt и RouterOS


На данной схеме представлены два роутера, один из которых - клиент LT40 и имеет динамический IP-адрес, и роутер Mikrotik - имеет статический IP-адрес и будет сервером.

Задача: объединить две подсети роутеров посредством L2TP, шифрованным IPSec.


Настройка сервера Mikrotik

1. Настройка L2TP

Создаём Pool, выдаваемых IP-адресов:


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


В пункте local указываем туннельный адрес сервера

В пункте remote address указываем созданный нами pool

Прописываем логин и пароль клиента, а также маршрут до него:


Включаем сервер L2TP:


Указываем, что шифрование IPSec обязательно.


2. Настройка Межсетевого экрана

  • Откроем порты 500 и 4500 для протоколов ISAKMP и NAT_Traversal соответственно:


  • Разрешим прохождение протокола ESP:

Входящий трафик:


Исходящий трафик:


  • Разрешаем подключаться на порт 1701 с шифрованием IPSec:

\


  • Запрещаем подключаться без шифрования:



  • Поднимаем правила в верх списка:



Настройка клиента LT40

1. Настройка L2TP

  • Создадим интерфейс L2TP, для этого перейдём в раздел "Сеть - Интерфейсы - "Добавить новый интерфейс"

Интерфейс L2TP

Добавление интерфейса L2TP


  • Прописываем параметры подключения:

Настройка параметров подключения

Конфигурация подключения


  • Создаём и добавляем интерфейс в зону

Добавление интерфейса в зону


  • Редактируем созданную зону в межсетевом экране:

Редактирование зоны в межсетевом экране


  • Указываем следующие параметры для зоны:

Параметры зоны


2. Настройка IPSec

Настроим IPSec из консоли:

nano /etc/ipsec.conf

conn L2TP/IPSec
    left=%any
    right=172.26.19.15
    leftfirewall=yes
    authby=secret
    closeaction=restart
    type=transport
    ikelifetime=8h
    keylife=8h
    keyingtries=%forever
    dpdaction=restart
    dpddelay=60s
    leftsubnet=%dynamic
    rightsubnet=%dynamic
    ike=aes128-sha1-modp1024
    esp=aes128-sha1-modp1024
    leftauth=psk
    rightauth=psk
    auto=route
    leftid=%any
    rightid=%any
    keyexchange=ikev1


Важно, перед параметрами после "conn L2TP/IPSec" должен быть 1 TAB, иначе конфигурация работать не будет!

  • В пункте right укажем WAN-адрес сервера L2TP
  • В пункте auto укажем route, что означает, что соединение будет запущено только в том случае, если на iP-адрес 172.26.19.15 будет отправлен какой-либо пакет.
  • Указываем общий ключ:
nano /etc/ipsec.secrets
   # /etc/ipsec.secrets - strongSwan IPsec secrets file
   %any %any : PSK "YourKey"
   include /var/ipsec/ipsec.secrets

3. Проверка соединения

  • Просмотреть лог подключения можно с помощью команды logread -f

Лог подключения на клиенте:

Mon Jul 15 11:51:04 2024 daemon.notice xl2tpd[1310]: Connecting to host 172.26.19.15, port 1701
Mon Jul 15 11:51:04 2024 authpriv.info ipsec: 11[IKE] initiating Main Mode IKE_SA L2TP/IPSec[1] to 172.26.19.15
Mon Jul 15 11:51:04 2024 daemon.info ipsec: 11[IKE] initiating Main Mode IKE_SA L2TP/IPSec[1] to 172.26.19.15
Mon Jul 15 11:51:05 2024 authpriv.info ipsec: 05[IKE] IKE_SA L2TP/IPSec[1] established between 172.26.19.13[172.26.19.13]...172.26.19.15[172.26.19.15]
Mon Jul 15 11:51:05 2024 daemon.info ipsec: 05[IKE] IKE_SA L2TP/IPSec[1] established between 172.26.19.13[172.26.19.13]...172.26.19.15[172.26.19.15]
Mon Jul 15 11:51:05 2024 authpriv.info ipsec: 06[IKE] CHILD_SA L2TP/IPSec{2} established with SPIs cdbebca5_i 0a3a3c73_o and TS 172.26.19.13/32 === 172.26.19.15/32
Mon Jul 15 11:51:05 2024 daemon.info ipsec: 06[IKE] CHILD_SA L2TP/IPSec{2} established with SPIs cdbebca5_i 0a3a3c73_o and TS 172.26.19.13/32 === 172.26.19.15/32
Mon Jul 15 11:51:05 2024 local0.notice vpn: + 172.26.19.15 172.26.19.15 -- 172.26.19.13
Mon Jul 15 11:51:06 2024 daemon.notice xl2tpd[1310]: Connection established to 172.26.19.15, 1701. Local: 4493, Remote: 4 (ref=0/0).
Mon Jul 15 11:51:06 2024 daemon.notice xl2tpd[1310]: Calling on tunnel 4493
Mon Jul 15 11:51:06 2024 daemon.notice xl2tpd[1310]: Call established with 172.26.19.15, Local: 63331, Remote: 1, Serial: 4 (ref=0/0)
Mon Jul 15 11:51:06 2024 daemon.debug xl2tpd[1310]: start_pppd: I'm running:
Mon Jul 15 11:51:06 2024 daemon.debug xl2tpd[1310]: "/usr/sbin/pppd"
Mon Jul 15 11:51:06 2024 daemon.debug xl2tpd[1310]: "plugin"
Mon Jul 15 11:51:06 2024 daemon.debug xl2tpd[1310]: "pppol2tp.so"
Mon Jul 15 11:51:06 2024 daemon.debug xl2tpd[1310]: "pppol2tp"
Mon Jul 15 11:51:06 2024 daemon.debug xl2tpd[1310]: "10"
Mon Jul 15 11:51:06 2024 daemon.debug xl2tpd[1310]: "passive"
Mon Jul 15 11:51:06 2024 daemon.debug xl2tpd[1310]: "nodetach"
Mon Jul 15 11:51:06 2024 daemon.debug xl2tpd[1310]: ":"
Mon Jul 15 11:51:06 2024 daemon.debug xl2tpd[1310]: "file"
Mon Jul 15 11:51:06 2024 daemon.debug xl2tpd[1310]: "/tmp/l2tp/options.L2TP"
Mon Jul 15 11:51:06 2024 daemon.info pppd[17969]: Plugin pppol2tp.so loaded.
Mon Jul 15 11:51:06 2024 daemon.notice pppd[17969]: pppd 2.4.7 started by root, uid 0
Mon Jul 15 11:51:06 2024 kern.info kernel: [ 7379.574591] l2tp-L2TP: renamed from ppp1
Mon Jul 15 11:51:06 2024 daemon.info pppd[17969]: Renamed interface ppp1 to l2tp-L2TP
Mon Jul 15 11:51:06 2024 daemon.info pppd[17969]: Using interface l2tp-L2TP
Mon Jul 15 11:51:06 2024 daemon.notice pppd[17969]: Connect: l2tp-L2TP <-->
Mon Jul 15 11:51:06 2024 daemon.notice pppd[17969]: CHAP authentication succeeded
Mon Jul 15 11:51:06 2024 daemon.notice pppd[17969]: local IP address 10.0.0.8
Mon Jul 15 11:51:06 2024 daemon.notice pppd[17969]: remote IP address 10.0.0.1
Mon Jul 15 11:51:06 2024 daemon.notice pppd[17969]: primary DNS address 10.0.0.1
Mon Jul 15 11:51:06 2024 daemon.notice pppd[17969]: secondary DNS address 85.26.158.187
Mon Jul 15 11:51:06 2024 daemon.notice netifd: Network device 'l2tp-L2TP' link is up
Mon Jul 15 11:51:06 2024 daemon.notice netifd: Interface 'L2TP' is now up
Mon Jul 15 11:51:06 2024 daemon.info dnsmasq[2211]: reading /tmp/resolv.conf.auto
Mon Jul 15 11:51:06 2024 daemon.info dnsmasq[2211]: using local addresses only for domain lan
Mon Jul 15 11:51:06 2024 daemon.info dnsmasq[2211]: using nameserver 10.0.0.1#53
Mon Jul 15 11:51:06 2024 daemon.info dnsmasq[2211]: using nameserver 85.26.158.187#53
Mon Jul 15 11:51:06 2024 daemon.info dnsmasq[2211]: using nameserver 85.26.158.187#53
Mon Jul 15 11:51:06 2024 daemon.info dnsmasq[2211]: using nameserver 85.26.146.139#53
Mon Jul 15 11:51:06 2024 user.notice firewall: Reloading firewall due to ifup of L2TP (l2tp-L2TP)
Mon Jul 15 11:51:08 2024 daemon.info ntpd[1322]: Listen normally on 15 l2tp-L2TP 10.0.0.8:123
Mon Jul 15 11:51:08 2024 daemon.debug ntpd[1322]: new interface(s) found: waking up resolver

Интерфейс после подключения:

Интерфейс после подключения


Пинг с сервера до туннельного адреса клиента:

[admin@GTX400-912GM-WiFi] > ping 10.0.0.8
SEQ HOST SIZE TTL TIME STATUS
0 10.0.0.8 56 64 686ms
1 10.0.0.8 56 64 194ms
2 10.0.0.8 56 64 260ms
3 10.0.0.8 56 64 118ms
sent=4 received=4 packet-loss=0% min-rtt=118ms avg-rtt=314ms max-rtt=686ms

Пинг с сервера до локального адреса клиента:

[admin@GTX400-912GM-WiFi] > ping 192.168.88.1 
SEQ HOST SIZE TTL TIME STATUS 0 192.168.88.1 56 64 85ms 1 192.168.88.1 56 64 110ms 2 192.168.88.1 56 64 101ms 3 192.168.88.1 56 64 100ms
sent=4 received=4 packet-loss=0% min-rtt=85ms avg-rtt=99ms max-rtt=110ms

Пинг с сервера до устройства с адресом 192.168.88.25 (за клиентом):

[admin@GTX400-912GM-WiFi] > ping 192.168.88.25
SEQ HOST SIZE TTL TIME STATUS             
0 192.168.88.25 56 254 346ms
1 192.168.88.25 56 254 77ms 
2 192.168.88.25 56 254 57ms 
3 192.168.88.25 56 254 101ms
sent=4 received=4 packet-loss=0% min-rtt=57ms avg-rtt=145ms max-rtt=346ms

Пинг с клиента до туннельного адреса роутера:

root@LT40:~# ping 10.0.0.1
PING 10.0.0.1 (10.0.0.1): 56 data bytes
64 bytes from 10.0.0.1: seq=0 ttl=64 time=223.782 ms
64 bytes from 10.0.0.1: seq=1 ttl=64 time=81.302 ms
64 bytes from 10.0.0.1: seq=2 ttl=64 time=117.578 ms
64 bytes from 10.0.0.1: seq=3 ttl=64 time=81.150 ms
^C
--- 10.0.0.1 ping statistics ---
4 packets transmitted, 4 packets received, 0% packet loss
round-trip min/avg/max = 81.150/125.953/223.782 ms

Пинг с клиента до локального адреса сервера:

root@LT40:~# ping 192.168.89.1
PING 192.168.89.1 (192.168.89.1): 56 data bytes
64 bytes from 192.168.89.1: seq=0 ttl=64 time=230.330 ms
64 bytes from 192.168.89.1: seq=1 ttl=64 time=87.924 ms
64 bytes from 192.168.89.1: seq=2 ttl=64 time=121.082 ms
64 bytes from 192.168.89.1: seq=3 ttl=64 time=94.882 ms
^C
--- 192.168.89.1 ping statistics ---
4 packets transmitted, 4 packets received, 0% packet loss
round-trip min/avg/max = 87.924/133.554/230.330 ms

Пинг с клиента до устройства с адресом 192.168.89.5 (за сервером):

root@LT40:~# ping 192.168.89.5
PING 192.168.89.5 (192.168.89.5): 56 data bytes
64 bytes from 192.168.89.5: seq=0 ttl=254 time=185.867 ms
64 bytes from 192.168.89.5: seq=1 ttl=254 time=77.129 ms
64 bytes from 192.168.89.5: seq=2 ttl=254 time=102.513 ms
64 bytes from 192.168.89.5: seq=3 ttl=254 time=115.261 ms
^C
--- 192.168.89.5 ping statistics ---
4 packets transmitted, 4 packets received, 0% packet loss
round-trip min/avg/max = 77.129/120.192/185.867 ms