Projekt 3 - OpenVPN
Instalacja oraz konfiguracja aplikacji OpenVPN w kontenerze dockerowym.
Etapy wdrażania projektu
Krok 1 - Ustawienie pliku docker-compose.yml
Konfiguracja ustawień OpenVPN: - UDP 1194 – domyślny port połączeń VPN. - /dev/net/tun – urządzenie umożliwiające tworzenie interfejsu tunelowego. - NET_ADMIN – uprawnienie do zarządzania interfejsami i routingiem. - Włączone przekazywanie IPv4 (ip_forward), jeśli klienci VPN mają korzystać z innych sieci lub Internetu przez VPS.
services:
openvpn:
image: kylemanna/openvpn
container_name: openvpn
restart: unless-stopped
cap_add:
- NET_ADMIN
devices:
- /dev/net/tun:/dev/net/tun
ports:
- "1194:1194/udp"
volumes:
- ./openvpn-data:/etc/openvpn
Krok 2 - Odblokowanie portu na firewallu
Odblokowanie portu na jakim działa OpenVPN 1194, a następnie przeładowanie projektu. Można sprawdzić czy port faktycznie jest odblokowany poleceniem "ss -ulnp | grep 1194"
firewall-cmd --permanent --add-port=1194/udp firewall-cmd --reload
Krok 3 - Utworzenie Wolumenu
Użycie dedykowanego wolumenu Dockera jest najbezpieczniejszą metodą dla tego obrazu, ponieważ eliminuje problemy z uprawnieniami systemowymi.
docker volume create openvpn-data
Krok 4 - Wygenerowanie konfiguracji serwera
Uruchomienie kontenera, aby wygenerować konfiguracje serwera.
docker run -v openvpn-data:/etc/openvpn -it --rm kylemanna/openvpn ovpn_genconfig -u udp://vpn.sieklucki-dev.pl:1194
Krok 5 - Inicjalizacja kluczy i certyfikatów (PKI)
Teraz zainicjuj urząd certyfikacji. Skrypt poprosi Cię o podanie hasła (oraz jego powtórzenie) oraz o zatwierdzenie wpisania hasła klucza głównego (wpisz yes, gdy zapyta o Common Name lub Enter pass phrase)
docker run -v openvpn-data:/etc/openvpn -it --rm kylemanna/openvpn ovpn_initpki
Krok 6 - Uruchomienie kontenera z aplikacją
Należy załadować moduły jądra odpowiedzialne za obsługę NAT, można to zrobić przy użyciu polecenia echo. Dzięki temu będą one automatycznie po restarcie serwera się uruchamiać. Wykonanie komendy docker run z odpowiednimi parametrami.
echo -e "ip_tables\niptable_nat\nnf_nat" | sudo tee /etc/modules-load.d/openvpn.conf docker run -d \ --name openvpn \ --cap-add=NET_ADMIN \ -p 1194:1194/udp \ -v openvpn-data:/etc/openvpn \ --restart unless-stopped \ kylemanna/openvpn
Wygenerowanie certyfikatu dla użytkownika
Co robi to polecenie: Tworzy certyfikat i klucz dla nowego użytkownika. nopass na końcu: Oznacza, że profil nie będzie wymagał wpisywania hasła przy każdym połączeniu (jeśli wolisz, aby profil był chroniony hasłem, usuń słowo nopass). Uwaga: Skrypt może zapytać Cię o podanie hasła głównego PKI (tego, które wpisywałeś w Kroku 5 podczas inicjalizacji serwera).
docker run -v openvpn-data:/etc/openvpn -it --rm kylemanna/openvpn easyrsa build-client-full nazwa_urzadzenia nopass
Wyciągnięcie gotowego pliku konfiguracyjnego (.ovpn)
Aby połączyć się z VPN, potrzebujesz pliku z rozszerzeniem .ovpn, który zawiera w sobie wszystkie niezbędne certyfikaty i konfigurację.
docker run -v openvpn-data:/etc/openvpn --rm kylemanna/openvpn ovpn_getclient nazwa_urzadzenia > nazwa_urzadzenia.ovpn