Оглавление
Введение
В статье описана настройка туннеля 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:
Запретите подключения без шифрования:
Поднимите созданные правила в верх списка:
Настройка клиента LT40
1. Настройка 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, поэтому туннель нельзя поднять без шифрования.