Konfiguracja tuneli VPN z wykorzystaniem StrongSwan – Kompletny przewodnik
StrongSwan to jedna z najpopularniejszych implementacji IPsec VPN na systemach Linux. Jest elastyczna, bezpieczna i wspiera różne metody uwierzytelniania oraz typy połączeń VPN.
W tym artykule pokażę:
✅ Jak skonfigurować tunel VPN IPsec za pomocą StrongSwan
✅ Jak utworzyć tunel site-to-site i road warrior
✅ Jak skonfigurować różne metody uwierzytelniania (PSK, certyfikaty)
1. Instalacja StrongSwan
sudo apt update
sudo apt install strongswan strongswan-pki libcharon-extra-plugins
📢 Na CentOS/RHEL:
sudo yum install strongswan
📌 Sprawdzamy wersję StrongSwan:
ipsec --version
2. Konfiguracja tunelu Site-to-Site (LAN ↔ LAN VPN)
Założenia:
🔹 Serwer A (192.168.1.1) – publiczny IP: 203.0.113.1
🔹 Serwer B (192.168.2.1) – publiczny IP: 203.0.113.2

Konfiguracja StrongSwan na Serwerze A
📢 Edytujemy /etc/ipsec.conf
:
config setup
charondebug="ike 2, knl 2, cfg 2"
conn site-to-site
auto=start
keyexchange=ikev2
left=203.0.113.1
leftsubnet=192.168.1.0/24
right=203.0.113.2
rightsubnet=192.168.2.0/24
authby=secret
ike=aes256-sha256-modp2048
esp=aes256-sha256
📢 Dodajemy klucz PSK do /etc/ipsec.secrets
:
203.0.113.1 203.0.113.2 : PSK "SilneHaslo123!"
📢 Restartujemy StrongSwan:
sudo systemctl restart strongswan
sudo systemctl enable strongswan
Konfiguracja StrongSwan na Serwerze B
📢 Edytujemy /etc/ipsec.conf
:
config setup
charondebug="ike 2, knl 2, cfg 2"
conn site-to-site
auto=start
keyexchange=ikev2
left=203.0.113.2
leftsubnet=192.168.2.0/24
right=203.0.113.1
rightsubnet=192.168.1.0/24
authby=secret
ike=aes256-sha256-modp2048
esp=aes256-sha256
📢 Dodajemy klucz PSK do /etc/ipsec.secrets
:
203.0.113.2 203.0.113.1 : PSK "SilneHaslo123!"
📢 Restartujemy StrongSwan:
sudo systemctl restart strongswan
sudo systemctl enable strongswan
📌 Testujemy tunel:
ipsec status
ping -c 4 192.168.2.1 # Z serwera A do serwera B
ping -c 4 192.168.1.1 # Z serwera B do serwera A
3. Konfiguracja VPN Road Warrior (Dostęp dla użytkowników zdalnych)
Uwierzytelnianie przy użyciu PSK
📢 Edytujemy /etc/ipsec.conf
:
config setup
charondebug="ike 2, knl 2, cfg 2"
conn roadwarrior
auto=add
keyexchange=ikev2
left=203.0.113.1
leftsubnet=0.0.0.0/0
right=%any
rightsourceip=10.10.10.0/24
authby=secret
ike=aes256-sha256-modp2048
esp=aes256-sha256
📢 Dodajemy klucz PSK do /etc/ipsec.secrets
:
203.0.113.1 %any : PSK "SilneHaslo123!"
📌 Restartujemy StrongSwan:
sudo systemctl restart strongswan
📌 Na kliencie (np. Linux) dodajemy połączenie VPN:
nmcli connection add type vpn vpn-type strongswan \
con-name roadwarrior-vpn \
ifname -- vpn.data username=myuser password=SilneHaslo123!
📢 Łączymy się:
nmcli connection up roadwarrior-vpn
📢 Testujemy tunel:
ip addr show
ping -c 4 10.10.10.1
4. Konfiguracja uwierzytelniania za pomocą certyfikatów
Generowanie certyfikatów
📢 Tworzymy katalog dla certyfikatów:
mkdir -p ~/pki/{cacerts,certs,private}
📢 Generujemy klucz CA:
pki --gen --type rsa --size 4096 --outform pem > ~/pki/private/ca-key.pem
pki --self --ca --lifetime 3650 --in ~/pki/private/ca-key.pem \
--dn "CN=VPN CA" --outform pem > ~/pki/cacerts/ca-cert.pem
📢 Generujemy certyfikat dla serwera:
pki --gen --type rsa --size 4096 --outform pem > ~/pki/private/server-key.pem
pki --req --in ~/pki/private/server-key.pem --dn "CN=203.0.113.1" --outform pem > ~/pki/certs/server-req.pem
pki --sign --ca ~/pki/cacerts/ca-cert.pem --cakey ~/pki/private/ca-key.pem \
--in ~/pki/certs/server-req.pem --outform pem > ~/pki/certs/server-cert.pem
📌 Przenosimy certyfikaty do /etc/ipsec.d/
sudo cp ~/pki/cacerts/ca-cert.pem /etc/ipsec.d/cacerts/
sudo cp ~/pki/certs/server-cert.pem /etc/ipsec.d/certs/
sudo cp ~/pki/private/server-key.pem /etc/ipsec.d/private/
📢 Restartujemy StrongSwan:
sudo systemctl restart strongswan
5. Podsumowanie
✔ StrongSwan umożliwia konfigurację elastycznych i bezpiecznych tuneli VPN
✔ Możemy skonfigurować zarówno połączenia site-to-site, jak i road warrior
✔ Obsługa różnych metod uwierzytelniania (PSK, certyfikaty)
✔ Dzięki IPsec, ruch VPN jest szyfrowany i odporny na ataki