В  данной статье будет описана настройка 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 c шифрованием IPSec


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


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


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


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


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


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


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


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


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

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


Настроим 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

Проверяем соединение


Просмотреть лог подключения можно с помощью команды 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