DevOps.Portfolio
Powrót
Projekt

Projekt 3 - OpenVPN

Instalacja oraz konfiguracja aplikacji OpenVPN w kontenerze dockerowym.

OpenVPN Networking

Etapy wdrażania projektu

01

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
02

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
03

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
04

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
05

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
06

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
07

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
08

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