Konfiguracja L2TP/IPsec VPN – Kompletny przewodnik
L2TP/IPsec to popularny protokół VPN, który łączy Layer 2 Tunneling Protocol (L2TP) z IPsec w celu zapewnienia szyfrowania i ochrony danych. W tym poradniku skonfigurujemy serwer VPN L2TP/IPsec na systemie Linux, wykorzystując xl2tpd oraz strongSwan.
Dowiesz się:
✅ Jak skonfigurować serwer L2TP/IPsec na Debian/Ubuntu
✅ Jak ustawić klucze pre-shared key (PSK) lub certyfikaty
✅ Jak skonfigurować klienta VPN
1. Instalacja wymaganych pakietów
sudo apt update
sudo apt install strongswan xl2tpd ppp
📢 Na CentOS/RHEL:
sudo yum install strongswan xl2tpd ppp
📌 Sprawdzamy wersję IPsec:
ipsec --version
2. Konfiguracja IPsec (strongSwan)
📢 Edytujemy główny plik konfiguracyjny IPsec:
sudo nano /etc/ipsec.conf
📌 Dodajemy konfigurację:
config setup
uniqueids=never
charondebug="ike 2, knl 2, cfg 2"
conn L2TP-IPsec
authby=secret
pfs=no
auto=add
keyexchange=ikev1
ike=aes256-sha1-modp1024
esp=aes256-sha1
rekey=no
left=%any
leftid=YOUR_SERVER_IP
leftfirewall=yes
leftprotoport=17/1701
right=%any
rightprotoport=17/%any
📌 Podmieniamy YOUR_SERVER_IP
na rzeczywisty adres IP serwera.

📢 Konfigurujemy klucz pre-shared key (PSK):
sudo nano /etc/ipsec.secrets
📌 Dodajemy linię:
YOUR_SERVER_IP %any: PSK "TWÓJ_SEKRETNY_KLUCZ"
📌 Restartujemy IPsec:
sudo systemctl restart strongswan
sudo systemctl enable strongswan
📌 Sprawdzamy status:
sudo ipsec status
3. Konfiguracja xl2tpd
📢 Edytujemy plik konfiguracyjny xl2tpd:
sudo nano /etc/xl2tpd/xl2tpd.conf
📌 Dodajemy konfigurację:
[global]
ipsec saref = yes
[lns default]
ip range = 192.168.100.10-192.168.100.100
local ip = 192.168.100.1
require chap = yes
refuse pap = yes
require authentication = yes
name = L2TP-VPN
pppoptfile = /etc/ppp/options.xl2tpd
length bit = yes
📌 Edytujemy opcje PPP:
sudo nano /etc/ppp/options.xl2tpd
📌 Dodajemy:
require-mschap-v2
ms-dns 8.8.8.8
ms-dns 8.8.4.4
asyncmap 0
auth
crtscts
lock
hide-password
modem
debug
proxyarp
lcp-echo-interval 30
lcp-echo-failure 4
📌 Dodajemy użytkownika:
sudo nano /etc/ppp/chap-secrets
📌 Wpisujemy:
vpnuser L2TP-VPN "haslo123" *
📌 Restartujemy xl2tpd:
sudo systemctl restart xl2tpd
sudo systemctl enable xl2tpd
4. Ustawienie przekazywania pakietów i reguł iptables
📢 Włączamy przekazywanie IP:
echo "net.ipv4.ip_forward = 1" | sudo tee -a /etc/sysctl.conf
sudo sysctl -p
📢 Konfigurujemy reguły iptables:
sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
sudo iptables -A INPUT -p udp --dport 500 -j ACCEPT
sudo iptables -A INPUT -p udp --dport 4500 -j ACCEPT
sudo iptables -A INPUT -p udp --dport 1701 -m policy --dir in --pol ipsec -j ACCEPT
sudo iptables -A FORWARD -s 192.168.100.0/24 -j ACCEPT
📌 Zapisujemy reguły iptables:
sudo apt install iptables-persistent
sudo netfilter-persistent save
5. Konfiguracja klienta VPN (Linux)
📢 Edytujemy plik /etc/ipsec.conf
na kliencie:
conn L2TP-IPsec
auto=add
keyexchange=ikev1
authby=secret
left=%defaultroute
right=YOUR_SERVER_IP
rightprotoport=17/1701
ike=aes256-sha1-modp1024
esp=aes256-sha1
📢 Dodajemy PSK do /etc/ipsec.secrets
:
YOUR_SERVER_IP %any: PSK "TWÓJ_SEKRETNY_KLUCZ"
📢 Uruchamiamy IPsec:
sudo ipsec restart
sudo ipsec up L2TP-IPsec
📢 Uruchamiamy xl2tpd:
sudo systemctl start xl2tpd
6. Testowanie i monitorowanie połączenia
📌 Sprawdzamy status połączenia:
sudo ipsec status
sudo journalctl -u strongswan -f
📌 Pingujemy serwer:
ping 192.168.100.1
📌 Sprawdzamy interfejsy:
ip a
📌 Sprawdzamy logi:
sudo tail -f /var/log/syslog
7. Podsumowanie
✔ L2TP/IPsec zapewnia stabilne i bezpieczne połączenie VPN
✔ Łatwe zarządzanie użytkownikami i połączeniami
✔ Kompatybilność z wieloma systemami operacyjnymi
✔ Wysokie bezpieczeństwo dzięki szyfrowaniu IPsec
🎯 Po zastosowaniu tego poradnika masz w pełni funkcjonalny serwer L2TP/IPsec VPN!