Konfiguracja tuneli VPN z wykorzystaniem OpenSwan – Kompletny przewodnik
OpenSwan to popularna implementacja IPsec VPN na systemach Linux, często stosowana w starszych systemach lub tam, gdzie wymagane jest zachowanie kompatybilności ze starszymi rozwiązaniami. Chociaż obecnie OpenSwan jest stopniowo zastępowany przez StrongSwan, nadal znajduje zastosowanie w wielu środowiskach.
W tym artykule omówimy:
✅ Jak skonfigurować tunel VPN IPsec za pomocą OpenSwan
✅ Jak skonfigurować pliki konfiguracyjne OpenSwan
✅ Jak zarządzać kluczami i transformacjami IPsec
1. Instalacja OpenSwan
sudo apt update
sudo apt install openswan
📢 Na CentOS/RHEL:
sudo yum install openswan
📌 Sprawdzamy wersję OpenSwan:
ipsec --version
📌 Upewniamy się, że moduły IPsec są włączone:
lsmod | grep af_key
Jeśli nie są załadowane, dodajemy je ręcznie:
sudo modprobe af_key
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 OpenSwan na Serwerze A
📢 Edytujemy /etc/ipsec.conf
:
config setup
protostack=netkey
nat_traversal=yes
virtual_private=%v4:10.0.0.0/8,%v4:192.168.0.0/16
oe=off
interfaces=%defaultroute
conn site-to-site
authby=secret
auto=start
left=203.0.113.1
leftsubnet=192.168.1.0/24
right=203.0.113.2
rightsubnet=192.168.2.0/24
ike=aes256-sha1;modp1024
esp=aes256-sha1
pfs=yes
📢 Dodajemy klucz PSK do /etc/ipsec.secrets
:
203.0.113.1 203.0.113.2 : PSK "SilneHaslo123!"
📢 Restartujemy OpenSwan:
sudo systemctl restart ipsec
sudo systemctl enable ipsec
Konfiguracja OpenSwan na Serwerze B
📢 Edytujemy /etc/ipsec.conf
:
config setup
protostack=netkey
nat_traversal=yes
virtual_private=%v4:10.0.0.0/8,%v4:192.168.0.0/16
oe=off
interfaces=%defaultroute
conn site-to-site
authby=secret
auto=start
left=203.0.113.2
leftsubnet=192.168.2.0/24
right=203.0.113.1
rightsubnet=192.168.1.0/24
ike=aes256-sha1;modp1024
esp=aes256-sha1
pfs=yes
📢 Dodajemy klucz PSK do /etc/ipsec.secrets
:
203.0.113.2 203.0.113.1 : PSK "SilneHaslo123!"
📢 Restartujemy OpenSwan:
sudo systemctl restart ipsec
sudo systemctl enable ipsec
📌 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
:
conn roadwarrior
authby=secret
auto=add
keyexchange=ikev2
left=203.0.113.1
leftsubnet=0.0.0.0/0
right=%any
rightsourceip=10.10.10.0/24
ike=aes256-sha256;modp2048
esp=aes256-sha256
dpdaction=clear
📢 Dodajemy klucz PSK do /etc/ipsec.secrets
:
203.0.113.1 %any : PSK "SilneHaslo123!"
📢 Restartujemy OpenSwan:
sudo systemctl restart ipsec
📌 Na kliencie (np. Linux) dodajemy połączenie VPN:
nmcli connection add type vpn vpn-type openswan \
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 certyfikatów dla uwierzytelniania
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 OpenSwan:
sudo systemctl restart ipsec
5. Podsumowanie
✔ OpenSwan umożliwia konfigurację tuneli VPN IPsec
✔ Obsługuje połączenia site-to-site i road warrior
✔ Wspiera uwierzytelnianie PSK i certyfikaty
✔ Dobrze sprawdza się w starszych systemach Linux