1/20 L2TP/IPSec na RouterBoard - Wprowadzenie
  • Celem tego przewodnika jest konfiguracja tunelu L2TP między dwoma routerami MikroTik RouterBoard.
  • Najpierw skonfigurujemy L2TP bez IPSec - ruch będzie przesyłany jako UDP 1701 w czystym tekście (dane widoczne dla obserwatora).
  • Następnie dodamy IPSec, co zapewni szyfrowanie (AES), uwierzytelnianie i integralność na poziomie pakietu IP.
  • Konfiguracja testowana na RouterOS v7.8 (stable) - komendy zweryfikowane na żywym urządzeniu.
Topologia: Router A (serwer L2TP) LAN: 192.168.10.0/24 WAN: 1.1.1.1 | (Internet) | Router B (klient L2TP) LAN: 192.168.20.0/24 WAN: 2.2.2.2 Tunel: 10.0.0.1/30 <-> 10.0.0.2/30

W tym przewodniku zakładamy, że oba routery mają już skonfigurowane interfejsy WAN i LAN oraz podstawowy dostęp przez WinBox/SSH. Router A pełni rolę serwera L2TP, Router B rolę klienta. W pierwszej części pomijamy IPSec, aby pokazać, że L2TP samo w sobie nie zapewnia poufności danych. Każdy, kto przechwyci pakiety UDP 1701, może odczytać zawartość ramek PPP. W drugiej części dodamy IPSec, który zaszyfruje pakiety L2TP wewnątrz ESP (IP proto 50).

2/20 Przygotowanie - Konfiguracja podstawowa Router A (serwer)
  • Zakładamy, że Router A ma skonfigurowane interfejsy i adresację.
  • Przykładowa konfiguracja początkowa:
# Router A - adresacja interfejsów
/ip address add address=1.1.1.1/24 interface=ether1 comment="WAN"
/ip address add address=192.168.10.1/24 interface=ether2 comment="LAN"
/ip route add dst-address=2.2.2.0/24 gateway=1.1.1.254
  • Upewnij się, że Router A ma trasę do sieci WAN Routera B (lub domyślną bramę do Internetu).
  • Sprawdź łączność przed dalszą konfiguracją: /ping 2.2.2.2
Router A (serwer L2TP) ether1 (WAN): 1.1.1.1/24 ether2 (LAN): 192.168.10.1/24

W środowisku produkcyjnym Router A posiada publiczny adres IP na interfejsie WAN. W laboratorium można użyć adresów z sieci pośredniej (np. 10.0.0.0/30 między routerami). Jeśli Router B znajduje się za NAT, konieczne będzie przekierowanie portów UDP 1701 (dla L2TP) oraz UDP 500 i 4500 (dla IPSec) na Router A.

3/20 Przygotowanie - Konfiguracja podstawowa Router B (klient)
  • Router B będzie inicjatorem tunelu (klient L2TP).
# Router B - adresacja interfejsów
/ip address add address=2.2.2.2/24 interface=ether1 comment="WAN"
/ip address add address=192.168.20.1/24 interface=ether2 comment="LAN"
/ip route add dst-address=1.1.1.0/24 gateway=2.2.2.1
  • Sprawdź łączność: /ping 1.1.1.1 z Routera B powinno odpowiadać.
Router B (klient L2TP) ether1 (WAN): 2.2.2.2/24 ether2 (LAN): 192.168.20.1/24

Router B w trybie klienta L2TP utworzy wirtualny interfejs l2tp-out, który otrzyma adres IP z puli serwera. W tym przewodniku chcemy, aby obie sieci LAN (192.168.10.0/24 i 192.168.20.0/24) mogły się ze sobą komunikować przez tunel. Po zestawieniu tunelu dodamy odpowiednie trasy statyczne po obu stronach.

4/20 Krok 1 - Pool adresów PPP i profil klienta
  • Na Routerze A (serwerze) tworzymy pulę adresów dla klientów L2TP oraz profil PPP.
# Pula adresów IP dla klientów L2TP
/ip pool add name=l2tp-pool ranges=10.0.0.2-10.0.0.10

# Profil PPP z adresem lokalnym serwera i referencją do puli
/ppp profile add name=l2tp-profile \
    local-address=10.0.0.1 remote-address=l2tp-pool
  • local-address (10.0.0.1) - adres IP interfejsu tunelu po stronie serwera.
  • remote-address (l2tp-pool) - nazwa puli, z której klient otrzyma adres (10.0.0.2).
  • Parametr bridge (yes/no/default) - domyślnie default; gdy yes, wszyscy klienci są w jednej domenie L2.
Adresacja tunelu: serwer: 10.0.0.1/30 klient: 10.0.0.2/30 Pula: 10.0.0.2 - 10.0.0.10 (9 adresów dla klientów)

Pula adresów PPP definiuje zakres adresów IP przydzielanych klientom. Zakres 10.0.0.2-10.0.0.10 pozwala na 9 jednoczesnych połączeń. Parametr local-address to adres, jaki serwer nada swojemu wirtualnemu interfejsowi L2TP. W uproszczonej konfiguracji Site-to-Site wystarczy jeden adres kliencki.

5/20 Krok 2 - Konfiguracja serwera L2TP (bez IPSec)
  • Włączamy serwer L2TP na Routerze A, tym razem bez IPSec.
# Włączenie serwera L2TP bez IPSec
/interface l2tp-server server set enabled=yes \
    authentication=chap,mschap2 \
    default-profile=l2tp-profile \
    use-ipsec=no max-mru=1460 max-mtu=1460
  • use-ipsec=no - IPSec nie zostanie automatycznie skonfigurowany (kluczowe!).
  • authentication=chap,mschap2 - metody uwierzytelniania PPP (zalecane: CHAP + MS-CHAPv2).
  • default-profile - profil PPP dla klientów bez przypisanego profilu.
  • Uwaga: parametry logiczne w RouterOS v7 przyjmują wartości yes/no (nie 1/0).
UWAGA: L2TP bez IPSec = BRAK szyfrowania! Pakiety UDP 1701 zawierają ramki PPP w czystym tekście.

Po włączeniu serwera L2TP z opcją use-ipsec=no Router A zaczyna nasłuchiwać na porcie UDP 1701. Cały ruch w tunelu jest przesyłany w formie ramek PPP enkapsulowanych w UDP 1701 bez szyfrowania. Narzędzie Wireshark na dowolnym routerze pośrednim może bezproblemowo odczytać dane, w tym hasła uwierzytelniania PPP, jeśli używana jest metoda PAP.

6/20 Krok 3 - Konfiguracja klienta L2TP (bez IPSec)
  • Przed zestawieniem tunelu dodajemy użytkownika PPP na serwerze (Router A):
# Konto PPP dla klienta L2TP (tylko usługa l2tp)
/ppp secret add name=l2tp-user password=Haslo123 \
    profile=l2tp-profile service=l2tp
  • Następnie na Routerze B tworzymy interfejs klienta L2TP:
# Klient L2TP bez IPSec
/interface l2tp-client add name=l2tp-tun \
    connect-to=1.1.1.1 user=l2tp-user password=Haslo123 \
    profile=l2tp-profile add-default-route=no \
    use-ipsec=no disabled=no
  • connect-to - adres IP WAN serwera L2TP (Router A).
  • service=l2tp w secret - ogranicza konto tylko do L2TP (nie PPTP/SSTP/PPPoE).
  • add-default-route=no - nie zmieniamy domyślnej trasy na Routerze B.
Router B --(UDP 1701)--> Router A L2TP client ----> L2TP server Sekwencja: 1. Klient wysyła UDP 1701 2. Negocjacja IKE (pomijana) 3. PPP LCP + IPCP 4. Tunel gotowy (10.0.0.2)

Użytkownika PPP dodajemy przed zestawieniem tunelu. Jeśli pominiemy service=l2tp, użytkownik będzie mógł uwierzytelniać się również w innych usługach (PPTP, SSTP, PPPoE). Gdy tunel zostanie zestawiony, interfejs l2tp-out na Routerze B otrzyma adres z puli (10.0.0.2), a na Routerze A pojawi się interfejs l2tp-in z adresem 10.0.0.1.

7/20 Krok 4 - Dodanie tras statycznych dla sieci LAN
  • Po zestawieniu tunelu dodajemy trasy, aby sieci LAN mogły się komunikować.

Na Routerze A (serwer):

/ip route add dst-address=192.168.20.0/24 \
    gateway=10.0.0.2 comment="do LAN B przez L2TP"

Na Routerze B (klient):

/ip route add dst-address=192.168.10.0/24 \
    gateway=10.0.0.1 comment="do LAN A przez L2TP"
  • Sprawdź łączność: /ping 192.168.10.1 z Routera B przez tunel.
Router A Router B 192.168.10.0/24 192.168.20.0/24 \ / \ L2TP tun / \ 10.0.0.0/30 / trasa -----------> trasa 192.168.20.0/24 192.168.10.0/24 via 10.0.0.2 via 10.0.0.1

Trasy statyczne są najprostszym rozwiązaniem dla połączenia Site-to-Site. W bardziej zaawansowanych konfiguracjach można uruchomić OSPF na interfejsach L2TP, co pozwoli na automatyczne wykrywanie tras przy zmianach topologii. Pamiętaj o dodaniu wyjątków NAT - jeśli Router A wykonuje masquerade dla ruchu wychodzącego na WAN, dodaj regułę NAT wyłączającą maskaradę dla ruchu do sieci LAN B.

8/20 Weryfikacja tunelu L2TP (bez IPSec)
  • Sprawdź stan interfejsów L2TP:
/interface l2tp-server server print
/interface l2tp-client print
/interface print where type=l2tp-server
/interface print where type=l2tp-client
  • Powinieneś zobaczyć interfejs l2tp-out (klient) i l2tp-in (serwer) z flagą R (running).
  • Sprawdź aktywnych użytkowników PPP:
/ppp active print
  • Wykonaj przechwycenie pakietów na interfejsie WAN Routera A:
/tool sniffer quick interface=ether1 port=1701
Przykładowy wynik sniffera: UDP 2.2.2.2:1701 --> 1.1.1.1:1701 Długość: 150 bajtów (payload widoczny jako czysty tekst!)

Sniffer pakietów to podstawowe narzędzie diagnostyczne. Uruchom /tool sniffer quick interface=ether1 port=1701 na Routerze A i wyślij ping z LAN B do LAN A. Zobaczysz pakiety UDP 1701 - ich zawartość to ramki PPP w czystym tekście. Aby potwierdzić brak szyfrowania, zapisz pakiety do pliku: /tool sniffer quick interface=ether1 port=1701 file=l2tp-test.pcap, pobierz plik i otwórz w Wireshark. Zobaczysz pełną zawartość L2TP i PPP.

9/20 Dlaczego L2TP potrzebuje IPSec?
  • Jak pokazaliśmy, L2TP samo w sobie NIE SZYFRUJE danych.
  • Pakiety UDP 1701 są wysyłane jawnym tekstem - każdy może je odczytać.
  • L2TP zapewnia jedynie enkapsulację (tunelowanie) ramek PPP.
  • Do zapewnienia poufności, integralności i uwierzytelniania potrzebny jest IPSec.
  • IPSec szyfruje cały pakiet L2TP (wraz z nagłówkami) wewnątrz protokołu ESP (IP proto 50).
  • Zewnętrzny obserwator widzi tylko ruch ESP, nie L2TP - zawartość tunelu jest nieczytelna.
Bez IPSec: [IP][UDP 1701][L2TP][PPP][dane] -- wszystko jawne Z IPSec: [IP][ESP][szyfrowany L2TP+PPP+dane] -- dane nieczytelne

Wielu początkujących administratorów zakłada, że L2TP jest bezpieczny, ponieważ w nazwie występuje "VPN". Tymczasem L2TP to wyłącznie protokół tunelowania warstwy 2, który enkapsuluje ramki PPP. Bezpieczeństwo zapewnia dopiero IPSec. RouterOS oferuje uproszczoną konfigurację - wystarczy ustawić use-ipsec=yes w serwerze i kliencie L2TP, a polityki IPSec zostaną wygenerowane automatycznie. W dalszej części skonfigurujemy to zarówno automatycznie (one-click), jak i ręcznie.

10/20 Krok 5 - Konfiguracja serwera L2TP z IPSec (automatyczna)
  • Na Routerze A włączamy serwer L2TP z opcją IPSec (one-click):
# Serwer L2TP z automatycznym IPSec
/interface l2tp-server server set enabled=yes \
    authentication=chap,mschap2 \
    default-profile=l2tp-profile \
    use-ipsec=yes ipsec-secret="MojeHasloIPSec"
  • use-ipsec=yes - włącza automatyczne generowanie polityk IPSec.
  • ipsec-secret - wspólny klucz wstępny (PSK) używany do uwierzytelnienia IPSec.
  • RouterOS automatycznie utworzy wpisy w /ip ipsec peer, /ip ipsec identity i /ip ipsec policy.
"One-click IPSec" - RouterOS sam generuje polityki bezpieczeństwa: - Peer (0.0.0.0/0 - akceptuje każdego) - Identity (PSK) - Policy (szyfrowane sieci) Wystarczy ustawić use-ipsec=yes!

Automatyczna konfiguracja IPSec w RouterOS to ogromne ułatwienie. Po ustawieniu use-ipsec=yes serwer L2TP tworzy obiekt peera z adresem 0.0.0.0/0 (akceptuje każdego klienta), ustawia PSK i definiuje politykę dla ruchu. W środowisku produkcyjnym warto dostosować proposal (algorytmy szyfrowania) w menu /ip ipsec proposal, aby używać wyłącznie silnych algorytmów i usunąć słabe (np. 3DES).

11/20 Krok 6 - Konfiguracja klienta L2TP z IPSec
  • Na Routerze B edytujemy lub tworzymy nowego klienta L2TP z IPSec:
# Klient L2TP z IPSec
/interface l2tp-client add name=l2tp-tun-sec \
    connect-to=1.1.1.1 user=l2tp-user password=Haslo123 \
    profile=l2tp-profile \
    use-ipsec=yes ipsec-secret="MojeHasloIPSec" \
    add-default-route=no disabled=no
  • use-ipsec=yes - wymusza szyfrowanie IPSec po stronie klienta.
  • ipsec-secret - ten sam klucz PSK co na serwerze (musi być identyczny!).
  • Automatycznie utworzy się wpis w /ip ipsec policy na Routerze B.
Router B Router A | | |--- UDP 500 (IKE) --------->| Faza 1 |<--- UDP 500 (IKE) ---------| |--- UDP 4500 (NAT-T) ------>| (jeśli za NAT) |--- ESP (IP proto 50) ----->| Faza 2 |<--- ESP (IP proto 50) -----| | | |---- szyfrowany tunel ------>| | L2TP wewnątrz ESP |

Po włączeniu klienta z use-ipsec=yes Router B inicjuje negocjację IKE z serwerem na UDP 500. Jeśli serwer znajduje się za NAT-em, negocjacja przełącza się na UDP 4500 (NAT-Traversal). Kolejność: najpierw negocjowany jest IPSec (tworzący bezpieczny kanał), a dopiero potem w jego wnętrzu nawiązywane jest połączenie L2TP (PPP). Uwierzytelnianie PPP odbywa się już wewnątrz szyfrowanego tunelu.

12/20 Krok 7 - Dodanie tras dla tunelu z IPSec
  • Trasy dodajemy tak samo jak dla tunelu bez IPSec - przez interfejs L2TP.

Na Routerze A:

/ip route add dst-address=192.168.20.0/24 \
    gateway=10.0.0.2 comment="do LAN B przez L2TP/IPSec"

Na Routerze B:

/ip route add dst-address=192.168.10.0/24 \
    gateway=10.0.0.1 comment="do LAN A przez L2TP/IPSec"
  • Sprawdź łączność - ping między sieciami LAN powinien działać.
  • Tym razem ruch na interfejsie WAN jest zaszyfrowany (ESP, nie UDP 1701).
Weryfikacja szyfrowania: /tool sniffer quick interface=ether1 - Czy widzisz pakiety ESP? - Czy NIE ma pakietów UDP 1701? Jeśli ESP=OK, brak UDP 1701 => tunel jest szyfrowany!

Trasy są identyczne jak w przypadku tunelu bez IPSec. Różnica polega na tym, że pakiety wychodzące na interfejs WAN są szyfrowane przez IPSec przed wysłaniem. RouterOS automatycznie kojarzy interfejs L2TP z odpowiednią polityką IPSec. Aby potwierdzić szyfrowanie, wykonaj: /tool sniffer quick interface=ether1. Powinieneś zobaczyć pakiety ESP (IP proto 50) lub UDP 4500 (NAT-T), a nie UDP 1701.

13/20 Krok 8 - Reguły firewalla dla L2TP/IPSec
  • Na serwerze (Router A) dodaj reguły firewall akceptujące ruch IPSec i L2TP.
# 1. IKE - negocjacja parametrów IPSec
/ip firewall filter add chain=input protocol=udp \
    dst-port=500 action=accept comment="IKE (IPSec)"

# 2. NAT-T - enkapsulacja IPSec przez NAT
/ip firewall filter add chain=input protocol=udp \
    dst-port=4500 action=accept comment="NAT-T (IPSec)"

# 3. ESP - właściwy ruch szyfrowany (IP proto 50)
/ip firewall filter add chain=input protocol=ipsec-esp \
    action=accept comment="ESP (IPSec)"

# 4. Port sterujący L2TP (UDP 1701)
/ip firewall filter add chain=input protocol=udp \
    dst-port=1701 action=accept comment="L2TP sterowanie"
Wymagane otwarcia w firewall: UDP 500 - IKE (negocjacja) UDP 4500 - NAT-T (opcjonalnie) IP proto 50 (ESP) - dane szyfrowane UDP 1701 - L2TP (sterowanie)

Reguły w łańcuchu INPUT są niezbędne, aby serwer L2TP/IPSec mógł odbierać ruch przychodzący. W łańcuchu FORWARD dodaj reguły dla ruchu między sieciami LAN: /ip firewall filter add chain=forward src-address=192.168.10.0/24 dst-address=192.168.20.0/24 action=accept comment="Ruch LAN A - LAN B". Pamiętaj też o wyjątkach NAT - jeśli Router A wykonuje masquerade dla WAN, dodaj regułę srcnat wyłączającą maskaradę dla ruchu do sieci LAN B. W przeciwnym razie NAT zmieni adres źródłowy przed szyfrowaniem IPSec.

14/20 Krok 9 - Ręczna konfiguracja IPSec (Faza 1)
  • Zamiast automatyki, możemy ręcznie skonfigurować IPSec dla pełnej kontroli.
  • Definiujemy profil IKE (Faza 1) i peera:
# Profil IKE - parametry Fazy 1 (ISAKMP SA)
/ip ipsec profile add name=l2tp-ike \
    enc-algorithm=aes-256 hash-algorithm=sha256 \
    dh-group=modp2048 lifetime=1d

# Peer - definicja drugiego routera
/ip ipsec peer add name=peer-B address=2.2.2.2/32 \
    profile=l2tp-ike exchange-mode=ike2
  • enc-algorithm=aes-256 + hash-algorithm=sha256 + dh-group=modp2048 - silne bezpieczeństwo.
  • exchange-mode=ike2 - nowoczesny tryb negocjacji (IKEv2). Dozwolone wartości: ike2, main, aggressive.
  • lifetime=1d - czas życia ISAKMP SA (24h).
Ręczna konfiguracja IPSec daje pełną kontrolę nad: - algorytmami szyfrowania - grupami DH - czasem życia kluczy - trybem wymiany (IKEv1/v2)

Ręczna konfiguracja pozwala precyzyjnie dobrać parametry. W przeciwieństwie do automatyki, gdzie RouterOS używa domyślnego proposalu z wieloma algorytmami (w tym słabymi takimi jak 3DES), ręczne ustawienie konkretnych algorytmów eliminuje ryzyko ataku downgrade. W przypadku połączeń między RouterBoardami możemy śmiało używać wyłącznie silnych algorytmów. Profil IKE definiuje parametry Fazy 1 (ISAKMP SA).

15/20 Krok 10 - Identity i Policy (ręczna konfiguracja)
  • Definiujemy tożsamość (PSK dla peera) i politykę (który ruch szyfrować).
# Identity - klucz PSK dla peera (musi być identyczny po obu stronach)
/ip ipsec identity add peer=peer-B \
    secret="MojeHasloIPSec"

# Policy - definicja ruchu do szyfrowania (Faza 2)
/ip ipsec policy add src-address=192.168.10.0/24 \
    dst-address=192.168.20.0/24 \
    peer=peer-B tunnel=yes proposal=l2tp-prop
  • src-address / dst-address - sieci LAN podlegające ochronie.
  • peer - referencja do wcześniej zdefiniowanego peera.
  • tunnel=yes - tryb tunelowy (enkapsulacja całego pakietu IP).
  • proposal - referencja do propozycji algorytmów Fazy 2 (zdefiniowana w kroku 11).
Polityka IPSec określa: JAKI ruch szyfrować (src/dst) JAK szyfrować (proposal) GDZIE kierować (peer) Bez polityki IPSec nie wie, które pakiety chronić!

Polityka IPSec (policy) definiuje, które pakiety podlegają szyfrowaniu. W trybie tunelowym (tunnel=yes) cały oryginalny pakiet IP jest enkapsulowany w nowy pakiet IPSec z adresami WAN routerów. W trybie transportowym (tunnel=no) szyfrowana jest tylko zawartość, nagłówek IP pozostaje oryginalny. Dla L2TP/IPSec Site-to-Site zaleca się tryb tunelowy. W policy podajemy adresy sieci LAN (nie WAN). RouterOS sam zadba o właściwą enkapsulację. Parametry protocol=esp i action=encrypt są w RouterOS v7 sugerowane przez sam typ polityki - nie trzeba ich podawać jawnie.

16/20 Krok 11 - Proposal IPSec (algorytmy Fazy 2)
  • Proposal definiuje algorytmy dla Fazy 2 (IPSec SA - właściwe szyfrowanie danych).
# Proposal - algorytmy Fazy 2
/ip ipsec proposal add name=l2tp-prop \
    enc-algorithms=aes-256-cbc \
    auth-algorithms=sha256 \
    pfs-group=modp2048 lifetime=4h
  • enc-algorithms - algorytm szyfrowania (AES-256 w trybie CBC).
  • auth-algorithms - algorytm integralności (SHA-256). Uwaga: w RouterOS v7 parametr nazywa się auth-algorithms, nie hash-algorithms.
  • pfs-group - Perfect Forward Secrecy (modp2048 = DH-14).
  • lifetime - czas życia kluczy sesji IPSec (4 godziny).
  • Proposal musi być identyczny po obu stronach tunelu.
PFS (Perfect Forward Secrecy): Nawet jeśli klucz prywatny zostanie skompromitowany, poprzednie sesje pozostaną bezpieczne - każda sesja ma unikalny klucz!

W RouterOS v7 proposal Fazy 2 używa parametru auth-algorithms (nie hash-algorithms). Jest to różnica w stosunku do profilu IKE (Faza 1), gdzie parametr nazywa się hash-algorithm (liczba pojedyncza). AES-256 w trybie CBC zapewnia wysoki poziom bezpieczeństwa. W nowszych wersjach RouterOS dostępny jest również AES-GCM (tryb łączony). PFS (pfs-group) wymusza dodatkową wymianę kluczy Diffie-Hellmana dla każdej sesji - nawet po kompromitacji klucza prywatnego poprzednie sesje pozostają bezpieczne.

17/20 Weryfikacja L2TP/IPSec - narzędzia diagnostyczne
  • Sprawdź stan IPSec:
/ip ipsec active-peers print detail
/ip ipsec policy print
/ip ipsec installed-sa print
  • Sprawdź stan interfejsów L2TP i aktywnych użytkowników PPP:
/interface l2tp-server server print
/ppp active print
/interface print where type=l2tp-server
  • Diagnostyka logów:
/log print where topics=ipsec
/log print where topics=l2tp
  • Sniffer - sprawdź czy widzisz ESP (zamiast UDP 1701):
/tool sniffer quick interface=ether1
Przykład poprawnego stanu: /ip ipsec installed-sa print DST-ADDRESS PROTO SPI 2.2.2.2 ESP 0x1234... 1.1.1.1 ESP 0x5678... => SAs aktywne w obie strony!

/ip ipsec installed-sa print pokazuje aktualnie zainstalowane stowarzyszenia bezpieczeństwa (SA). Dla poprawnego tunelu zobaczysz co najmniej dwie SA - przychodzącą i wychodzącą. Jeśli SA nie są widoczne (lub mają status "waiting"), problem leży w negocjacji IKE. W logach IPSec znajdziesz komunikaty: "no acceptable proposal" (niezgodność algorytmów - sprawdź profile/proposal), "peer not responding" (brak łączności/firewall blokuje porty), "authentication failed" (nieprawidłowy PSK).

18/20 Porównanie - L2TP bez IPSec vs z IPSec
CechaL2TP (bez IPSec)L2TP/IPSec
Szyfrowanie danychBrak (jawny tekst)AES-128/256
UwierzytelnianieTylko PPP (CHAP/MSCHAP)PPP + IPSec (PSK/Certyfikat)
IntegralnośćBrak (tylko CRC PPP)SHA-256/HMAC
Anti-ReplayBrakTak (numery sekwencyjne ESP)
Protokół na WANUDP 1701ESP (IP 50) lub UDP 4500
Widoczność danychPełna (Wireshark dekoduje L2TP)Zaszyfrowane (niewidoczne)
Narzut wydajnościNiski (~10 bajtów)Wyższy (~50-70 bajtów + kryptografia)
BezpieczeństwoNiskie - NIE UŻYWAĆ w produkcjiWysokie - standard korporacyjny
Kiedy NIE używać IPSec? - Tylko w laboratorium edukacyjnym - W sieci MPLS (bezpieczeństwo na niższej warstwie) - Gdy szyfrowanie zapewnione przez aplikację We WSZYSTKICH innych przypadkach: L2TP ZAWSZE z IPSec!

L2TP bez IPSec nie powinno być używane w środowisku produkcyjnym. Brak szyfrowania oznacza, że każde urządzenie pośredniczące (router ISP, przełącznik, AP WiFi) może odczytać przesyłane dane. Uwierzytelnianie PPP (nawet MS-CHAPv2) może być podsłuchane. Jedynym uzasadnionym przypadkiem użycia L2TP bez IPSec jest laboratorium edukacyjne, gdzie celem jest demonstracja protokołu tunelowania.

19/20 Częste problemy i rozwiązywanie (troubleshooting)
ProblemPrzyczynaRozwiązanie
"no acceptable proposal"Niezgodność algorytmów Fazy 1 lub 2Sprawdź profile/proposal po obu stronach. W proposal użyj auth-algorithms (nie hash-algorithms).
"peer not responding"Firewall blokuje UDP 500/4500 lub ESPSprawdź reguły na serwerze. Dodaj accept dla UDP 500, 4500, ESP.
"authentication failed"Nieprawidłowy klucz PSKSprawdź ipsec-secret po obu stronach. Upewnij się, że identyczne.
L2TP connects but no trafficBrak tras lub NAT modyfikuje pakietyDodaj trasy statyczne. Dodaj wyjątek NAT dla sieci VPN.
FastTrack blokuje IPSecFastTrack pomija polityki IPSecDodaj regułę RAW: action=notrack dla ruchu między sieciami LAN.
Problem z NAT (NAT-T)Klient za NAT-em, brak UDP 4500Upewnij się, że nat-traversal=yes w profilu IPSec (domyślnie włączone).
Złote zasady debugowania: 1. Sprawdź łączność IP (ping) 2. Sprawdź firewall (porty otwarte) 3. Sprawdź logi (/log print) 4. Sprawdź active-peers 5. Sprawdź installed-sa 6. Wykonaj sniff na WAN

Problem z FastTrack jest szczególnie podstępny - tunel IPSec wydaje się działać (SA zainstalowane), ale ruch nie jest szyfrowany. FastTrack przyspiesza pakiety pomijając polityki IPSec. Rozwiązanie: reguła RAW wyłączająca FastTrack dla ruchu VPN: /ip firewall raw add chain=prerouting src-address=192.168.10.0/24 dst-address=192.168.20.0/24 action=notrack. Bez tej reguły pakiety między sieciami LAN nie zostaną zaszyfrowane.

20/20 Podsumowanie i dobre praktyki
  • L2TP bez IPSec - używać wyłącznie w laboratorium edukacyjnym.
  • L2TP z IPSec - standard korporacyjny dla Site-to-Site i Remote Access.
  • Zawsze stosuj silne algorytmy: AES-256, SHA-256, PFS z grupą modp2048 lub wyższą.
  • Używaj IKEv2 (exchange-mode=ike2) zamiast starszego IKEv1 (main/aggressive).
  • W miarę możliwości stosuj certyfikaty zamiast PSK dla lepszego bezpieczeństwa.
  • Pamiętaj o wyjątkach NAT i FastTrack dla ruchu VPN.
  • Używaj yes/no dla parametrów logicznych (nie 1/0).

Przydatne polecenia do monitorowania:

/ip ipsec active-peers print detail
/ip ipsec installed-sa print
/ppp active print
/interface print where type=l2tp-server
/log print where topics=ipsec
Bezpieczny tunel L2TP/IPSec: [LAN A] --- [Router A] =====ESP===== [Router B] --- [LAN B] | | szyfrowane AES-256 szyfrowane AES-256 uwierzytelnione SHA-256 uwierzytelnione SHA-256 PFS DH-modp2048 PFS DH-modp2048 Dane bezpieczne nawet na niezaufanej sieci publicznej!

Regularnie przeglądaj używane algorytmy kryptograficzne i aktualizuj je zgodnie z zaleceniami. RouterOS regularnie otrzymuje aktualizacje z nowymi algorytmami - utrzymuj system w najnowszej stabilnej wersji. W środowiskach korporacyjnych rozważ serwer RADIUS do centralnego zarządzania uwierzytelnianiem użytkowników L2TP - umożliwia integrację z AD/LDAP i MFA.