Proxmox – Install WireGuard server

By | 15/11/2024

Last Updated on 08/08/2025 by administrator

Proxmox – Install WireGuard server

Proxmox – Install WireGuard server

Motivace:

WireGuard je moderní, jednoduchý a efektivní protokol pro VPN, který se stal velmi populárním díky své nízké složitosti a vysoké bezpečnosti.

WireGuard má několik klíčových výhod oproti OpenVPN a IPsec (StrongSwan), které ho činí atraktivní volbou pro různé VPN nasazení. Ačkoli všechny tři technologie mají své silné stránky, WireGuard vyniká především v těchto oblastech:

Zde je zkrácený přehled výhod WireGuard oproti OpenVPN a IPsec (StrongSwan):

1. Výkon a efektivita

2. Jednoduchost a konfigurace

  • WireGuard je snadnější na konfiguraci a má jednoduchý kód (4000 řádků), což usnadňuje nasazení a auditování.
  • OpenVPN a IPsec mají složitější konfigurace a více možností, což může být náročné na správu.

3. Bezpečnost

  • WireGuard používá moderní šifrovací algoritmy a má jednodušší auditovatelnost, což zvyšuje bezpečnost.
  • OpenVPN a IPsec mají silnou bezpečnost, ale mohou používat starší šifrovací algoritmy a jsou složitější na auditování.

4. Nízké nároky na hardware

  • WireGuard je efektivní a má nízké nároky na hardware, což je ideální pro mobilní zařízení a zařízení s nízkým výkonem.
  • OpenVPN a IPsec mají vyšší režii a větší nároky na procesor a paměť.

5. Kompatibilita a podpora

  • WireGuard je podporován na všech hlavních platformách (Linux, Windows, macOS, iOS, Android) a je často integrován přímo v jádru Linuxu.
  • OpenVPN a IPsec mají širší historii, ale vyžadují často externí software a složitější nastavení.

6. Mobilita a připojení

  • WireGuard je ideální pro mobilní zařízení, protože používá statické klíče a má nižší režii, což je výhodné pro časté změny IP adres.
  • OpenVPN a IPsec mají složitější metody správy dynamických IP adres.

OS:

Implementace byla prakticky prováděna na open-source platformě Proxmox verze 8.2-7.

Implementace [1]:

Instalace WireGuard na Proxmox (Proxmox – Install WireGuard server):

Pro vytvoření nového CT LXC v Proxmox VE, je nutné zadat příkaz níže přímo pod Proxmox VE serverem. Nevytvářet nový CT (script Vám to „nesežere“) Ten bude vytvořen právě tímto scriptem níže:

bash -c "$(wget -qLO - https://github.com/tteck/Proxmox/raw/main/ct/wireguard.sh)"

Pozn. Je doporučeno script výše přímo přes shell v prohlížeči Proxmox mod, než použít SSH, mohou vzniknout potencionální komplikace viz. se ukáže hláška – It’s advisable to utilize the Proxmox shell rather than SSH, as there may be potential complications with variable retrieval.

Proxmox - Install Wireguard server

Zobrazí průvodce instalací, kliknout na Yes:

Proxmox - Install Wireguard server

Zde bude zvoleno Advanced, jelikož si chci CT kontejner customizovat (zvolit si statickou IP adresu, zvolit si distribuci, a číslo CT), nicméně je možné ponechat nastavení v defaultním módu:

Proxmox - Install Wireguard server

Jako distribuce byla použita Ubuntu 24.04. Bude se jednat o privilegovaný kontejner (Container Type 0) s číslem ID 104 a jeho jméno bude wireguard.  Doporučuje se použít 4 GB diskové kapacity 1 CPU a 512 MB RAM. Jako IP adresa byla použita 192.168.0.104/24 s defaultní branou 192.168.0.1, DNS serverem 192.168.0.103 a doménovým jménem lan. Všechno info je viz níže:

Using Advanced Settings
Using Distribution: ubuntu
Using ubuntu Version: 24.04
Using Container Type: 0
Using Root Password: nejakeheslo
Container ID: 104
Using Hostname: wireguard
Using Disk Size: 4
Allocated Cores: 1
Allocated RAM: 512
Using Bridge: vmbr0
Using IP Address: 192.168.0.104/24
Using Gateway IP Address: 192.168.0.1
Using APT-Cacher IP Address: Default
Disable IPv6: yes
Using Interface MTU Size: Default
Using DNS Search Domain: lan
Using DNS Server IP Address: 192.168.0.103
Using Vlan: Default
Enable Root SSH Access: yes
Enable Verbose Mode: no

Pozn. WireGuard potřebuje přístup k síťovým rozhraním a potřebuje provádět operace na úrovni jádra, jako je konfigurace tunelů a manipulace s IP tabulkami a síťovým rozhraním. Tyto operace vyžadují root oprávnění a přístup k síťovým zařízením v rámci hostitelského systému, proto je potřeba použit privilegovaný kontejner. Osobně se mi CT nevytvořil, když jsem použil neprivilegovaný kontejner.

Vybrat příslušný disk pro instalaci WireGuard:

Proxmox - Install Wireguard server

Proces vytváření WireGuard LXC kontejneru:

Creating a Wireguard LXC using the above advanced settings
✓ Using local for Template Storage.
✓ Using local-lvm for Container Storage.
✓ Updated LXC Template List
✓ LXC Container 104 was successfully created.
✓ Started LXC Container
✓ Set up Container OS
✓ Network Connected: 192.168.0.104
✓ IPv4 Internet Connected
✗ IPv6 Internet Not Connected
✓ DNS Resolved github.com to 140.82.121.3
✓ Updated Container OS
✓ Installed Dependencies
✓ Installed WireGuard
✓ Installed WGDashboard
✓ Created Service
✓ Cleaned
✓ Completed Successfully!

WGDashboard should be reachable by going to the following URL.
http://192.168.0.104:10086 admin|admin

Konfigurace Wireguard:

WireGuard management probíhá přes webový prohlížeč a to v tomto případě na adrese a portu: http://192.168.0.104:10086

wireguard dashboard

Při přihlášení pod admin/admin bude vyzváno k vytvoření uživatelskému jménu a heslu:

dashboard password

Volitelně je možné použít multifaktorovou autentizaci. Nicméně tento krok bude přeskočen kliknutím níže na I don’t need MFA:

MFA dashboard

V rubrice Settings > Peers Settings se konfigurují všechny parametry, které se budou používat pro VPN klienty. Jelikož používám svůj vlastní DNS server měním IP adresu na 192.168.0.103.

V poli Peer Remote Endpoint je potřeba vyplnit Vaši veřejnou IP adresu či doménové na kterém bude zvenku WireGuard dostupný:

configure wireguard server

Pro vytvoření nového Wireguard VPN serveru kliknout na tlačítko plus:

configure wireguard server

Zvolit jakékoliv jméno nového VPN serveru (může jich být více vytvořeno později), v tomto případě to bude VPN1. Veřejný klíč (Public key) a privátní klíč (Private key) se vytvoří automaticky. Pro VPN klienty bude použitý subnet 10.10.10.0/24. Oficiální port pro Wireguard je UDP/51820. Nicméně bude nastaven např. na UDP/52799, čímž bude zlepšeno bezpečností opatření.

Vše ostatní je ponecháno v defaultním nastavení. Pro dokončení kliknout dole na Save:

configure wireguard server

V rubrice Settings > WireGuard Configuration Setings > Toggle When Start Up zakliknout tuto možnost, aby se po rebootu kontejneru spustil VPN server automaticky a nebyla ho potřeba manuálně nahazovat:

configure wireguard server
Pod rubrikou Home byl tedy vytvořen VPN server s názvem VPN1. Nahoře vpravo pod Status aktivovat VPN server. Pro vytvoření nového VPN klienta kliknout dole na Peer:

Proxmox - Install Wireguard server

Přístup k Wireguard VPN serveru z internetu:

Pro přístup z internetu na VPN server je potřeba mít veřejnou IP adresu (zeptat se svého poskytovatele připojení). Tuto veřejnou IP adresu je potřeba namapovat k VPN serveru. To se nejčastěji provádí na routeru přes port forwarding (přesměrování portů), kde je potřeba povolit – v tomto případě port UDP/52799. Každý router má ve svém nastavení port forwarding jinde. Např. TP-Link ma tuto funkci pod Forwarding > Virtual Servers. Obecný průvodce pro několik routerů, kde nastavit port forwarding je možné najít zde:

https://www.noip.com/support/knowledgebase/general-port-forwarding-guide/

Vytvoření VPN klientů (VPN peers):

WireGuard klient má podporu pro mnoho OS a to např. Windows, Linux, Android či macOS, ….

Budou vytvořeni 3 VPN klienti pro různá OS:

  • Windows (s názvem profilu: peer1-windows)
  • Ubuntu (s názvem profilu: peer2-ubuntu)
  • Android (s názvem profilu: peer3-android)

Pro vytvoření VPN klienta kliknout níže na Peer:

add peer wireguard

Stačí vyplnit pouze libovolné jméno, což je v tomto případě peer1-windows. Pokud je potřeba vybrat jen určitý provoz, který se bude směrovat do VPN tunelu (Split-Tunneling) definují se v parametru Endpoint Allowed IP všechny IP adresy a subnety. V tomto případě je použito 0.0.0.0/0 čili tunelu se všechen provoz přes VPN tunel. Kliknutím na Add bude přídán nový VPN klient.

Pozn: Pokud se použije Split-Tunneling a je ještě potřeba aby se VPN klienti mezi sebou „viděli“ je nutné ještě přidat VPN IP subnet což je v tomto případě 10.10.10.0/24 v poli Endpoint Allowed IP. Pokud se použije Full-Tunneling (0.0.0.0/0) jak je ukázáno na obrázku níže, není potřeba nic přidávat.

add peer

Takto byly vytvoření další dva VPN klienti s názvem peer2-ubuntu a peer3-android stejně jako peer1-windows:

VPN peers wireguardPod VPN konfiguraci se objeví vytvořený VPN peer. Kliknutím na tři tečky lze konfiguraci pro VPN klienta stáhnout několika způsoby viz níže:

  • Stažením souboru .conf souboru
  • QR kódem
  • Zobrazením Peer konfiguračního souboru
  • Join linkem

configure file wireguard

Instalace WireGuard klienta na Windows 11:

Stáhnout WireGuard klienta a po instalaci a spuštění kliknout na Add Tunnel a importovat .conf soubor:

wireguard windows

Tlačítkem Activate dojde k připojení na WireGuard server:

wireguard windows

Došlo k úspěšnému připojení:

wireguard windows

 

Instalace WireGuard klienta na Ubuntu 24.04 LTS [2]:

Aktualizace seznamu balíčků z repozitářů:

sudo apt update

Instalace Wireguard:

sudo apt install wireguard

Zkopírovat konfiguraci pro VPN klienta do souboru wg0.conf ve složce /etc/wireguard/:

sudo vi /etc/wireguard/wg0.conf

Připojení na WireGuard server:

sudo wg-quick up wg0

Výpis po aplikaci sudo wg-quick up wg0 příkazu:

[#] ip link add wg0 type wireguard
[#] wg setconf wg0 /dev/fd/63
[#] ip -4 address add 10.10.10.2/32 dev wg0
[#] ip link set mtu 1420 up dev wg0
[#] resolvconf -a wg0 -m 0 -x
[#] wg set wg0 fwmark 51820
[#] ip -4 rule add not fwmark 51820 table 51820
[#] ip -4 rule add table main suppress_prefixlength 0
[#] ip -4 route add 0.0.0.0/0 dev wg0 table 51820
[#] sysctl -q net.ipv4.conf.all.src_valid_mark=1
[#] nft -f /dev/fd/63

Ověření navázaného připojení:

sudo wg show

Výpis příkazu sudo wg show bude vypadat podobně jako níže:

interface: wg0
  public key: HRm2rFtfn9jBRCr3pLJ/fNJGIMc+KqOyVBJq9x8L7x0=
  private key: (hidden)
  listening port: 35086
  fwmark: 0xca6c

peer: lz8+Be8emkufMH80iRoO+qdPcsFO46ACSuoZpOiH5V4=
  endpoint: 1.2.3.4:52799
  allowed ips: 0.0.0.0/0
  latest handshake: 9 seconds ago
  transfer: 92 B received, 180 B sent
  persistent keepalive: every 21 seconds

Pro odpojení k WireGuard serveru, aplikovat příkaz níže:

sudo wg-quick down wg0

Instalace WireGuard klienta na Android:

Stáhnout WireGuard klienta a po instalaci a spuštění kliknout na „plusko“:

wireguard android

Opět ja na výběr několik možností jak importovat .conf file, viz níže:

wireguard android

Libovolně pojmenovat jméno tunelu a kliknout na Create Tunnel:

wireguard android

Pro připojení k VPN serveru kliknout na přepínač:

wireguard android

 

Nyní došlo k připojení na VPN server. Pro ověření připojení kliknout na profil VPN tunelu:

wireguard android

V profilu lze vidět všechny parametry a statistiky:

wireguard android

Ve WG Dasboard WireGuard serveru lze vidět, že statistiky i to, že se všichni 3 VPN klienti úspěšně připojili:

wireguard statistics

Proxmox – Install WireGuard server

Aktualizace WireGuard Dashboardu:

Pro provedení aktualizace WireGuard dashboardu (ne WireGuard verze server) je potřeba spustit script níže přímo pod LXC kontejnerem (ne na Proxmox VE jako při instalaci):

bash -c "$(wget -qLO - https://github.com/tteck/Proxmox/raw/main/ct/wireguard.sh)"

Výstup příkazu bash -c „$(wget -qLO – https://github.com/tteck/Proxmox/raw/main/ct/wireguard.sh)“ vypadá následovně při upgradu WireGuard dashboardu:


Průběh aktualizace Wireguard dashboardu, potvrdit Y:

 _       ___           ______                     __
| |     / (_)_______  / ____/_  ______ __________/ /
| | /| / / / ___/ _ \/ / __/ / / / __ `/ ___/ __  /
| |/ |/ / / /  /  __/ /_/ / /_/ / /_/ / /  / /_/ /
|__/|__/_/_/   \___/\____/\__,_/\__,_/_/   \__,_/

Loading...
Hit:1 http://archive.ubuntu.com/ubuntu noble InRelease
Get:2 http://archive.ubuntu.com/ubuntu noble-updates InRelease [126 kB]
Get:3 http://archive.ubuntu.com/ubuntu noble-security InRelease [126 kB]
Fetched 252 kB in 1s (235 kB/s)
Reading package lists... Done
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
Calculating upgrade... Done
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
[WGDashboard] OS: ubuntu
[WGDashboard] ✔ Python is installed
[WGDashboard] ✔ Python Virtual Environment is installed
[WGDashboard] ✔ Python Package Manager (PIP) is installed
------------------------------------------------------------
[WGDashboard] Are you sure you want to update to the v4.2.5? (Y/N): Y

Stisknout Enter:

[WGDashboard] Shutting down WGDashboard
[WGDashboard] Downloading v4.2.5 from GitHub...remote: Enumerating objects: 5644, done.
remote: Counting objects: 100% (2366/2366), done.
remote: Compressing objects: 100% (347/347), done.
remote: Total 5644 (delta 2214), reused 2021 (delta 2019), pack-reused 3278 (from 2)
Receiving objects: 100% (5644/5644), 6.27 MiB | 2.79 MiB/s, done.
Resolving deltas: 100% (4440/4440), completed with 118 local objects.
From https://github.com/donaldzou/WGDashboard
 * tag               v4.2.5     -> FETCH_HEAD
=================================================================================
+           by Donald Zou - https://github.com/donaldzou           +
=================================================================================
[WGDashboard] Starting to install WGDashboard
[WGDashboard] OS: ubuntu
[WGDashboard] ✅ Found existing ./log folder
[WGDashboard] ✅ Created ./download folder
[WGDashboard] ✅ Found existing ./db folder
[WGDashboard] ✅ Python is installed
[WGDashboard] 💿 Pinging list of recommended Python Package Index mirror
              ---------------------------------------------------------
              [1] 15ms https://pypi.org/simple/
              [2] 312ms https://pypi.tuna.tsinghua.edu.cn/simple/
              [3] [FAILED] https://pypi.mirrors.ustc.edu.cn/simple/
              [4] 23ms https://mirrors.aliyun.com/pypi/simple/
              [5] 316ms https://pypi.douban.com/simple/
              ---------------------------------------------------------
              Which mirror you would like to use (Hit enter to use default)
              Default is https://pypi.org/simple/ : [ENTER]

Aktualizace Wireguard dashboardu hotova:

[WGDashboard] ✅ Will download Python packages from https://pypi.org/simple/
[WGDashboard] ✅ Found compatible version of Python. Will be using Python 3.12.3 to install WGDashboard.
[WGDashboard] 💿 Installing Python Virtual Environment
[WGDashboard] ✅ Python Virtual Environment is installed
[WGDashboard] ✅ Python Package Manager (PIP) is installed
[WGDashboard] ✅ WireGuard is already installed.
[WGDashboard] 💿 Upgrading Python Package Manage (PIP)
[WGDashboard] 💿 Installing latest Python dependencies
[WGDashboard] ✅ Created ssl-tls.ini
[WGDashboard] ✅ WGDashboard installed successfully!
[WGDashboard] Enter ./wgd.sh start to start the dashboard
---------------------------------------------------------------------------------
[WGDashboard] Update completed!
------------------------------------------------------------

Nyní je potřeba provést restart WireGuard LXC kontejneru. Důvodem je, že se mi nešlo přihlásit po upgradu do Dashboardu.

Řešení problémů:

1) Při po připojení k WireGuard nelze přistoupit na IP adresy v LAN síti – General failure [3]

Pokud se WireGuard server nachází ve stejném subnetu jako VPN klient na OS Windows, nelze přistoupit k žádné IP adrese na subnetu. Při „pingnutí“ na jakoukoliv IP adresu v podsíti ze zobrazí zpráva General failure.

C:\Windows\System32>ping 192.168.0.100 -t

Pinging 192.168.0.100 with 32 bytes of data:
General failure.
General failure.
General failure.
General failure.

Při zkoumání tento problém nastával jen z OS Windows, Ubuntu 24.04 LTS či Android nevykazovaly tyto známky chyby

Řešení problému [3]:

Pro VPN klienta běžící pod OS Windows je potřeba přidat k 0.0.0.0/0 ještě navíc lokální subnet, což je v tomto případě 192.168.0.0/24. Pro úpravu .conf souboru kliknout v WGdashboardu na tři tečky a Peer Settings:

wireguard peer settings

a přidat požadovaný subnet a uložit:

Nový konfigurační soubor je potřeba znovu naimportovat do WireGuard klienta na OS Windows.

Věřím, že článek Proxmox – Install WireGuard server pomohl.

Zdroj:

[1] https://www.xda-developers.com/host-vpn-on-proxmox-guide/

[2] https://serverspace.io/support/help/how-to-install-wireguard-vpn-client-on-ubuntu-linux/

[3] https://www.reddit.com/r/WireGuard/comments/cpn158/wireguard_windows_general_failure_on_ping_to/?rdt=53135

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *