Konfiguracja tunelu VPN IPsec na systemie Linux

W poniższym wpisie został przedstawiony sposób w jaki można skonfigurować połączenie VPN IPsec między dwoma serwerami z systemem Linux Ubuntu

Po skonfigurowaniu i nawiązaniu Tunelu VPN, obydwa serwery będą w stanie komunikować się ze sobą w sposób bezpieczny poprzez szyfrowany tunel oraz zyskają miały dostęp do swoich sieci prywatnych.

Przed skonfigurowaniem tunelu VPN należy dokonać aktualizacji systemu oraz zainstalować wymagane pakiety do obsługi połączenia VPN IPsec(strongswan)

sudo apt update && sudo apt upgrade -y

sudo apt install strongswan -y

Po zainstalowaniu wymaganych pakietów należy ustawić parametr jądra odpowiedzialny ze przekazywanie pakietów IP w wersji 4, można to wykonać poprzez poniższe polecenie:

echo net.ipv4.ip_forward = 1 | sudo tee -a /etc/sysctl.conf

Po dodaniu powyższego parametru możemy sprawdzić poprawność jego dodania poprzez poniższe polecenie:

cat /etc/sysctl.conf |grep net.ipv4.ip_forward

Aby zmiany zostały zastosowane należy wydać następujące polecenie:

sudo sysctl -p

Po wprowadzeniu wymaganych parametrów do jądra należy wygenerować klucz psk oraz dodać go do konfiguracji VPN.

openssl rand -base64 48

Otrzymany ciąg znaków dodajemy do pliku /etc/ipsec.secrets

echo 192.168.1.250 192.168.1.254 : PSK qsO1mdYz+RZegxnoIkSg1awTBTgeq8HgBCCZn9u1FvzKCCsG298Jz8Kk0psPhVTN | sudo tee -a /etc/ipsec.secrets

Gdzie 192.168.1.250 to publiczny adres IP naszej strony a 192.168.1.254 publiczny adres IP zdalnej strony.

Podstawowe dane dotyczące konfiguracji sieci na obydwu serwerach.

Strona A
WAN IP 192.168.1.250
LAN SUBNET 172.168.17.1/24


Strona B
WAN IP 192.168.1.254
LAN SUBNET 172.168.16.1/24

Następnie na hoście A dodany został następujący wpis do pliku /etc/ipsec.conf

conn vpn-przyjazneit_siteA
	authby=secret
	left=192.168.1.250
	leftid=192.168.1.250
	leftsubnet=172.168.17.1/24
	right=192.168.1.254
        right_id=192.168.1.254
	rightsubnet=172.168.16.1/24
	ike=aes256-sha512-curve448
	esp=aes256-sha512-curve448
	ikelifetime=20m
	lifetime=1h
	auto=start
	keyexchange=ikev2

Konfiguracja strony A wygląda następująco:

Konfiguracja strony B:

Po zakończeniu konfiguracji na obydwu serwerach zostało wykonane poniższe polecenie, celem zastosowania wprowadzonych zmian i aktywacji połączenia VPN.

sudo ipsec restart

Po aktywacji tunelu VPN na obydwu serwerach został sprawdzony status tego połączenia poprzez polecenie.

sudo ipsec status
Security Associations (1 up, 0 connecting):
vpn-przyjazneit_siteA[195]: ESTABLISHED 44 seconds ago, 192.168.1.250[192.168.1.250]...192.168.1.254[192.168.1.254]
vpn-przyjazneit_siteA{195}:  INSTALLED, TUNNEL, reqid 195, ESP SPIs: c3e77422_i
c54c78ec_o
vpn-przyjazneit_siteA{195}:   172.168.17.0/24 === 172.168.16.0/24

Następie wykonano diagnostykę czy połączenie działa poprawnie.

Jak widać na powyżej załączonym obrazku konfiguracja połączenia przebiegła poprawnie.

Poniżej znajdują się przydatne komendy służące do sprawdzenia zatrzymania/wznowienia połączenia, restartu usługi, pokazania statusu wszystkich połączeń VPN.

sudo ipsec up nazwa_połączenia
sudo ipsec down nazwa_połączenia 

sudo ipsec restart

sudo ipsec status
sudo ipsec statusall

Tak skonfigurowane połączenie VPN może służyć do celów zarządzania lub połączenia dwóch lokalizacji ze sobą w takich sposób że użytkownicy sieci zyskują dostęp do zasobów drugiej strony bez użycia dodatkowych programów jakby byli fizycznie podłączeni do tej sieci.

Dodaj komentarz