GNU/Linux >> Znalost Linux >  >> Panels >> Docker

Jak nainstalovat a hostovat server OpenVPN pomocí Dockeru

Přehled

Tento příspěvek popisuje postup, jak nainstalovat a hostovat server OpenVPN pomocí Docker. To znamená, že budeme moci použít Docker k instalaci serveru OpenVPN a jeho spuštění jako služby, generování konfigurací připojení klientů a certifikátů, které pak můžeme použít k připojení více klientů na náš server VPN. Tato metoda funguje na jakékoli distribuci Linuxu, která má nainstalovaný a spuštěný Docker.

POZNÁMKA – Toto nastavení je pro prostředí bez hesla, což znamená – klient nebude používat uživatelské jméno a heslo pro připojení k serveru, místo toho bude používat klientské certifikáty pro připojení.

Pokud se vám řešení nelíbí nebo dáváte přednost jiné metodě, stejný proces jsme pokryli také s Wireguard a Docker. Můžete se na to podívat v tomto příspěvku.

Předpoklady:

– Docker nainstalován a spuštěn – pokud není nainstalován, zkontrolujte tento příspěvek pro pokyny k instalaci Docker na Debian a Ubuntu

– Kontejner Docker, který přejdeme k uživateli – ODKAZ (podívejte se také na další informace, pokud je potřeba)

Instalace kontejneru Docker serveru OpenVPN

1. Prvním krokem je vytvoření kontejneru objemu dat pro OpenVPN, aby mohl ukládat všechna data, konfigurační soubory a certifikáty. Doporučuje se přidat předponu „ovpn-data-“ a na konec přidat další požadované slovo. Například by to mělo vypadat nějak takto – ovpn-data-example. A slovo příklad nahradíte čím chcete.

V terminálu tedy spusťte příkaz:

OVPN_DATA="ovpn-data-example"

Nyní vytvoříme kontejner objemu dat:

docker volume create --name $OVPN_DATA

Poznámka – pokud jste Dockeru nepřidali zvýšená oprávnění na hostitele Linuxu, budete muset přidat sudo pokaždé, když budete chtít spouštět příkazy dockeru.

2. Poté si stáhněte soubor obrázku dokovacího zařízení OpenVPN s argumentem pro jeho nastavení tak, aby používal veřejnou IP adresu vašeho serveru (hostitele) nebo název vaší domény prostřednictvím protokolu UDP (lze také použít protokol TCP):

docker run -v $OVPN_DATA:/etc/openvpn --log-driver=none --rm kylemanna/openvpn ovpn_genconfig -u udp://VPN.SERVERNAME.COM

Nahraďte VPN.SERVENAME.COM svou veřejnou IP adresou nebo názvem domény, který jste si zaregistrovali a nasměrovali na váš server. Toto je nastavení, pokud hostujete svůj server v cloudu (jako AWS, Azure, UpCloud, Digital Ocean, Linode atd.).

Pro možnost vlastního hostování doma – to platí také v případě, že máte statickou veřejnou IP adresu, a navíc budete muset provést přesměrování portů na vašem routeru (modemu), aby ukazoval na váš hostitel (server). Pokud nemáte statickou IP adresu, budete muset použít dynamický DNS.

Generování a načítání certifikátu CA a klientských certifikátů

3. Nyní musíme iniciovat náš systém PKI, abychom vygenerovali certifikát CA pro náš server a také klientské certifikáty:

docker run -v $OVPN_DATA:/etc/openvpn --log-driver=none --rm -it kylemanna/openvpn ovpn_initpki

Následuj instrukce. Pokud plánujete nainstalovat OpenVPN na cloudový server, který má omezené zdroje (například 1 CPU a 1 GB RAM), může vygenerování certifikátu serveru CA chvíli trvat (cca 15 minut).

Když spustíte PKI pro OpenVPN, nejprve vás požádá o zadání hesla pro certifikát CA.

DŮLEŽITÁ POZNÁMKA – Heslo CA si někam zapište, budete ho potřebovat později během procesu nastavení a pokaždé, když generujete klientský certifikát.

Dále vás požádá o zadání názvu CA. Můžete zadat cokoli.

Proces generování CA bude chvíli trvat.

Po dokončení vygeneruje soukromý klíč a znovu požádá o zadání přístupové fráze CA, kterou jste zadali dříve. Dvakrát vás vyzve k zadání hesla.

Vygenerovaný certifikát CA bude platný po dobu následujících 3 let.

Spusťte službu serveru OpenVPN

4. Spuštěním příkazu Docker spusťte kontejner OpenVPN:

docker run -v $OVPN_DATA:/etc/openvpn -d -p 1194:1194/udp --cap-add=NET_ADMIN kylemanna/openvpn

Poznámka – argument v příkazu -p 1194:1194/udp – také důležitá součást tohoto nastavení. Tento argument nastaví naše OpenVNP, na kterém portu naslouchat a používat k navázání komunikace mezi serverem a klientem. V příkazu výše je nastaveno použití portu 1194 (levé číslo pro kontejner Docker a pravé číslo pro hostitelský server), protože OpenVPN ve výchozím nastavení používá číslo portu 1194 přes protokol UDP. Změňte toto číslo, pokud plánujete použít jiné číslo portu.

Vygenerujte klientský certifikát a extrahujte konfigurační soubor klienta z kontejneru na hostitele

5. Spuštěním tohoto příkazu vygenerujete certifikát pro klientské zařízení:

docker run -v $OVPN_DATA:/etc/openvpn --log-driver=none --rm -it kylemanna/openvpn easyrsa build-client-full CLIENTNAME nopass

Argument CLIENTNAME v příkazu výše můžete nahradit tím, co chcete. To je pro název souboru certifikátu a pro identifikaci klienta. Příkaz také vygeneruje certifikát bez hesla. Certifikát bude umístěn v domovském adresáři uživatele v souborovém systému hostitelů (uživatelské jméno, které používáte k přihlášení k hostiteli prostřednictvím SSH), NIKOLI v kontejneru Docker.

Při generování klientských certifikátů vás OpenVPN vyzve k zadání přístupového hesla CA.

POZNÁMKA – Vygenerované certifikáty, jak je vidět na obrázcích, vydrží 3 roky od doby, kdy jste je vytvořili.

6. Spuštěním tohoto příkazu zkompilujte konfigurační soubor připojení OpenVPN a načtěte jej z kontejneru Docker na hostitelský server

docker run -v $OVPN_DATA:/etc/openvpn --log-driver=none --rm kylemanna/openvpn ovpn_getclient CLIENTNAME > CLIENTNAME.ovpn

Poté budete potřebovat klienta FTP, SFTP nebo SCP pro připojení k hostitelskému serveru a stažení souboru OpenVPN a jeho použití pro připojení k serveru VPN.

Připojte se k serveru OpenVPN

Abyste se mohli připojit k vašemu serveru VPN, budete muset nainstalovat klienta OpenVPN. Existují klientské aplikace pro Windows a Android – OpenVPN connect. V aplikaci stačí importovat soubor openvpn jako nový profil a připojit se.

Samozřejmě existuje klient pro linux. Správce sítě na Linuxu podporuje OpenVPN, ale požaduje import všech certifikátů samostatně. Pro jednoduchost tedy doporučuji nainstalovat i klienta aplikace. V distribucích Debian a Ubuntu:

$ sudo apt install openvpn

Jakmile je nainstalován, přejděte do umístění, kde je umístěn soubor certifikátu, a spusťte příkaz:

$ sudo openvpn ./CLIENTNAME.ovpn

Výsledek úspěšného připojení by měl vypadat takto

Ujistěte se, že máte otevřené vhodné porty pro váš server

Také důležitá poznámka, aby to fungovalo. Pokud to plánujete hostit v cloudu nebo pokud jste na svůj server nainstalovali bránu firewall, musíte otevřít a povolit porty, které jste svému OpenVPN serveru přiřadili.

V tomto případě je server v cloudu a potřeboval jsem otevřít porty 1194 pro protokol UDP na firewallu.

Připojit více klientů

Pomocí tohoto nastavení můžete připojit více klientů. Jednou z metod je použití jednoho certifikátu na více zařízeních, ale tato metoda je méně bezpečná. K tomu budete potřebovat přístup ke konfiguračnímu souboru serveru OpenVPN umístěného v kontejneru Docker a přidat argument:

duplicate-cn

Doporučuji vystavit/vygenerovat nový samostatný certifikát pro každého klienta. Abyste toho dosáhli, musíte zopakovat několik příkazů:

Znovu spusťte svazek dockeru pro OpenVPN.

OVPN_DATA="ovpn-data-example"
docker volume create --name $OVPN_DATA

Poté vygenerujte nový klientský certifikát, ale místo CLIENTNAME:

použijte jiný název
docker run -v $OVPN_DATA:/etc/openvpn --log-driver=none --rm -it kylemanna/openvpn easyrsa build-client-full CLIENTNAME nopass

a samozřejmě načtěte konfigurační soubor OpenVPN a stáhněte si soubor:

docker run -v $OVPN_DATA:/etc/openvpn --log-driver=none --rm kylemanna/openvpn ovpn_getclient CLIENTNAME > CLIENTNAME.ovpn

Shrnutí

Zabývali jsme se procesem instalace OpenVPN pomocí Dockeru, hostováním OpenVPN pomocí Dockeru, spuštěním systému PKI, generováním certifikátu CA a klientského certifikátu a postupem připojení. Osobně se mi toto nastavení líbí, zaprvé kvůli snadnému použití, správě a tomu, jak má nastavení docela vysokou bezpečnost na straně serveru i klienta. Všechny rekvizity a uznání patří KyleMannovi za vybudování tak úžasné image Dockeru.


Docker
  1. Jak nainstalovat a nastavit Debian 8 minimalistický Docker Host

  2. Jak nainstalovat klienta a server NFS na Ubuntu 20.04

  3. Jak a proč používat vzdáleného hostitele dockeru

  1. Jak nainstalovat a nakonfigurovat OpenVPN Server na Debian 10

  2. Nainstalujte server Wireguard VPN pomocí Docker

  3. Jak nainstalovat Jenkins pomocí Docker

  1. Jak nainstalovat a používat Docker Compose na CentOS

  2. Jak nainstalovat Nextcloud s Dockerem na váš Linux Server

  3. Jak nainstalovat OpenVPN na Ubuntu 18.04