Proxmox – Install WireGuard server

By | 15/11/2024

Last Updated on 15/11/2024 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.10/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

Ř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.

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

Dobrovolný dar

Ahoj čtenáři, rád bych tě poprosil aby ses zamyslel, co je vše potřeba ke vzniku článku.
Jakožto amatérský softwarový kutil musím:

1) Nejdříve vše nastudovat v cizích jazycích.
2) Vše následně prakticky vyzkoušet.
3) Svoje poznatky a zkušenosti napsat do článku který si právě přečetl v jazyku kterému rozumíš.
4) Dát článku hlavu a patu a publikovat.

Každý článek zabere několik hodin práce, za kterou mi nikdo neplatí.
Prosím zvaž, kolik času jsem ti právě ušetřil.
Pokud ti to stojí aspoň za cenu jedné kávy, tak mi ji kup.
Předem moc děkuji.

Příspěvek tak můžeš provést zasláním libovolné částky na mé číslo účtu 1558701011/3030 Nebo můžeš dar poslat kliknutím na tento odkaz Podpořit tento WEB , který tě přesměruje na mou platební bránu Revolut.

Dar je také možné poslat ve formě Bitcoinu na BTC peněženku bc1qqdf5fp42a7srwwhh2rut8zr9x4jm5c8fqc9qw6

Veškeré peněžní prostředky budu také používat na zlepšení kvality své webové tvorby a na psaní nových technických návodů. Za každý dar předem děkuji.

Napsat komentář

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