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

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

← Все разделы FAQ

Разделы FAQ:

Оглавление

Введение

В статье описана настройка туннеля L2TP с шифрованием IPSec между роутером с операционной системой OpenWrt (LT40, LT50, LT51) и роутером Mikrotik с RouterOS.

Схема подключения:

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

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


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

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

Создайте пул (Pool) выдаваемых клиентам IP-адресов:

Создайте профиль PPP. В поле Local Address укажите туннельный адрес сервера, в поле Remote Address — созданный ранее пул.

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

Включите сервер L2TP и укажите, что шифрование IPSec обязательно:

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

Откройте порты 500 (ISAKMP) и 4500 (NAT Traversal):

Разрешите прохождение протокола ESP. Правило для входящего трафика:

Правило для исходящего трафика:

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

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

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

Примечание: порядок правил в межсетевом экране Mikrotik имеет значение — правила обрабатываются сверху вниз. Если разрешающие правила окажутся ниже запрещающих, туннель не поднимется.

Настройка клиента 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 должен стоять один символ табуляции, иначе конфигурация работать не будет.

Назначение ключевых параметров:

  • right — WAN-адрес сервера L2TP (в примере 172.26.19.15);
  • auto=route — соединение будет установлено только тогда, когда на адрес 172.26.19.15 будет отправлен какой-либо пакет;
  • keyexchange=ikev1 — используется протокол IKEv1, совместимый с настройками L2TP/IPSec в RouterOS по умолчанию.

Задайте общий ключ в файле /etc/ipsec.secrets:

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

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

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

Проверьте доступность узлов командой ping. Пинг с сервера до туннельного адреса клиента:

[admin@Mikrotik] > 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@Mikrotik] > 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@Mikrotik] > 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

Заключение

В результате настройки роутер LT40 подключается как клиент к серверу L2TP на Mikrotik, а трафик туннеля шифруется средствами IPSec в транспортном режиме. Устройства из локальных сетей обоих роутеров доступны друг другу напрямую. Клиенту не требуется статический IP-адрес — достаточно статического адреса на стороне сервера. Правила межсетевого экрана Mikrotik разрешают подключение к порту L2TP только тем узлам, трафик которых прошёл проверку IPSec, поэтому туннель нельзя поднять без шифрования.