WireGuard je univerzální VPN (Virtual Private Network), která využívá nejmodernější kryptografii. Ve srovnání s jinými oblíbenými řešeními VPN, jako jsou IPsec a OpenVPN, je WireGuardis obecně rychlejší, snadněji konfigurovatelný a má menší rozměry. Je multiplatformní a lze jej spustit téměř kdekoli, včetně Linuxu, Windows, Androidu a macOS.
Wireguard je peer-to-peer VPN; nepoužívá model klient-server. V závislosti na konfiguraci může peer fungovat jako tradiční server nebo klient. Funguje tak, že na každém peer zařízení vytvoří síťové rozhraní, které funguje jako tunel. Peers se navzájem ověřují výměnou a ověřováním veřejných klíčů, napodobováním modelu SSH. Veřejné klíče jsou mapovány se seznamem IP adres, které jsou povoleny v tunelu. Provoz VPN je zapouzdřen v UDP.
Tento článek vysvětluje, jak nainstalovat a nakonfigurovat WireGuard na Debian 10, který bude fungovat jako server VPN. Ukážeme vám také, jak nakonfigurovat WireGuard jako klienta v systémech Linux, Windows a macOS. Provoz klienta bude směrován přes server Debian 10.
Toto nastavení lze použít jako ochranu proti útokům Man in the Middle, anonymnímu surfování na webu, obcházení geograficky omezeného obsahu nebo umožnění vašim kolegům, kteří pracují z domova, bezpečně se připojit k firemní síti.
Předpoklady #
Abyste mohli postupovat podle tohoto průvodce, budete potřebovat počítač s nainstalovaným Debianem 10. K instalaci balíčků a provádění změn v systému také potřebujete root nebo [sudo přístup](https://linuxize.com/post/how-to-create-a-sudo-user-on-debian/.
Nastavení serveru WireGuard #
Začneme instalací balíčku WireGuard na stroj Debian a jeho nastavením, aby fungoval jako server. Nakonfigurujeme také systém tak, aby přes něj směroval provoz klientů.
Instalovat WireGuard na Debian 10 #
WireGuard je k dispozici v repozitářích Debian backports. Chcete-li přidat úložiště do systému, spusťte:
echo 'deb http://ftp.debian.org/debian buster-backports main' | sudo tee /etc/apt/sources.list.d/buster-backports.list
Jakmile je úložiště povoleno, aktualizujte mezipaměť apt a nainstalujte modul a nástroje WireGuard:
WireGuard běží jako modul jádra.sudo apt update
sudo apt install wireguard
Konfigurace WireGuard #
Rozhraní WireGuard můžete konfigurovat a spravovat pomocí wg
a wg-quick
nástroje příkazového řádku.
Každé zařízení v síti WireGuard VPN musí mít soukromý a veřejný klíč. Spuštěním následujícího příkazu vygenerujte pár klíčů:
wg genkey | sudo tee /etc/wireguard/privatekey | wg pubkey | sudo tee /etc/wireguard/publickey
Soubory jsou generovány v /etc/wireguard
adresář. Použijte cat
nebo less
příkazy pro zobrazení obsahu souborů. Soukromý klíč by nikdy neměl být s nikým sdílen a měl by být vždy zabezpečen.
Wireguard také podporuje předsdílený klíč, který přidává další vrstvu kryptografie se symetrickým klíčem. Tento klíč je volitelný a musí být jedinečný pro každý partnerský pár.
Dalším krokem je konfigurace tunelového zařízení, které bude směrovat provoz VPN.
Zařízení lze nastavit buď z příkazového řádku pomocí ip
a wg
příkazy nebo ručním vytvořením konfiguračního souboru. Konfiguraci vytvoříme pomocí textového editoru.
Otevřete svůj editor a vytvořte nový soubor s názvem wg0.conf
s následujícím obsahem:
sudo nano /etc/wireguard/wg0.conf
/etc/wireguard/wg0.conf[Interface]
Address = 10.0.0.1/24
SaveConfig = true
ListenPort = 51820
PrivateKey = SERVER_PRIVATE_KEY
PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -t nat -A POSTROUTING -o ens3 -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -t nat -D POSTROUTING -o ens3 -j MASQUERADE
Rozhraní si můžete pojmenovat, jak chcete. Doporučuje se však použít něco jako wg0
nebo wgvpn0
.
Nastavení v sekci rozhraní mají následující význam:
-
Adresa – čárkami oddělený seznam IP adres v4 nebo v6 pro
wg0
rozhraní. Můžete získat IP adresu z rozsahu, který je vyhrazen pro privátní sítě (10.0.0.0/8, 172.16.0.0/12 nebo 192.168.0.0/16). -
ListenPort – port pro naslouchání.
-
PrivateKey – Soukromý klíč generovaný
wg genkey
příkaz. (Chcete-li zobrazit obsah typu souboru:sudo cat /etc/wireguard/privatekey
) -
SaveConfig – Při nastavení na hodnotu true se aktuální stav rozhraní při vypnutí uloží do konfiguračního souboru.
-
PostUp – Příkaz nebo skript, který se provede před spuštěním rozhraní. V tomto příkladu používáme iptables k povolení maskování. To umožňuje provozu opustit server, což klientům VPN umožňuje přístup k Internetu.
Nezapomeňte nahradit
ens3
po-A POSTROUTING
aby odpovídal názvu vašeho veřejného síťového rozhraní. Rozhraní můžete snadno najít pomocí:ip -o -4 route show to default | awk '{print $5}'
-
PostDown – Příkaz nebo skript, který se provede před spuštěním rozhraní. Pravidla iptables budou odstraněna, jakmile bude rozhraní vypnuto.
Soubor wg0.conf
a privatekey
soubory by neměly být čitelné pro normální uživatele. Použijte chmod
nastavte oprávnění souborů na 600
:
sudo chmod 600 /etc/wireguard/{privatekey,wg0.conf}
Po dokončení přineste wg0
rozhraní pomocí atributů uvedených v konfiguračním souboru:
sudo wg-quick up wg0
Výstup bude vypadat nějak takto:
[#] ip link add wg0 type wireguard
[#] wg setconf wg0 /dev/fd/63
[#] ip -4 address add 10.0.0.1/24 dev wg0
[#] ip link set mtu 1420 up dev wg0
[#] iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o ens3 -j MASQUERADE
Chcete-li zkontrolovat stav a konfiguraci rozhraní, spusťte:
sudo wg show wg0
interface: wg0
public key: +Vpyku+gjVJuXGR/OXXt6cmBKPdc06Qnm3hpRhMBtxs=
private key: (hidden)
listening port: 51820
Stav rozhraní můžete také ověřit pomocí ip a show wg0
:
ip a show wg0
4: wg0: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1420 qdisc noqueue state UNKNOWN group default qlen 1000
link/none
inet 10.0.0.1/24 scope global wg0
valid_lft forever preferred_lft forever
WireGuard lze spravovat pomocí Systemd. Chcete-li přenést rozhraní WireGuard při spouštění, spusťte následující příkaz:
sudo systemctl enable wg-quick@wg0
Konfigurace sítě serveru a brány firewall #
Aby NAT fungoval, musí být povoleno předávání IP. Otevřete /etc/sysctl.conf
soubor a přidejte nebo odkomentujte následující řádek:
sudo nano /etc/sysctl.conf
/etc/sysctl.confnet.ipv4.ip_forward=1
Uložte soubor a použijte změnu:
sudo sysctl -p
net.ipv4.ip_forward = 1
Pokud ke správě firewallu používáte UFW, musíte otevřít UDP provoz na portu 51820
:
sudo ufw allow 51820/udp
A je to. Debian peer, který bude fungovat jako server, byl nastaven.
Nastavení klientů Linuxu a macOS #
Pokyny k instalaci pro všechny podporované platformy jsou k dispozici na adrese https://wireguard.com/install/. V systémech Linux můžete balíček nainstalovat pomocí správce distribučních balíčků a v systému macOS pomocí brew
.
Po instalaci nakonfigurujte klientské zařízení podle následujících kroků.
Proces nastavení klienta pro Linux a macOS je v podstatě stejný jako u serveru. Nejprve vygenerujte veřejný a soukromý klíč:
wg genkey | sudo tee /etc/wireguard/privatekey | wg pubkey | sudo tee /etc/wireguard/publickey
Vytvořte soubor wg0.conf
a přidejte následující obsah:
sudo nano /etc/wireguard/wg0.conf
/etc/wireguard/wg0.conf[Interface]
PrivateKey = CLIENT_PRIVATE_KEY
Address = 10.0.0.2/24
[Peer]
PublicKey = SERVER_PUBLIC_KEY
Endpoint = SERVER_IP_ADDRESS:51820
AllowedIPs = 0.0.0.0/0
Nastavení v sekci rozhraní mají stejný význam jako při nastavování serveru:
- Adresa – čárkami oddělený seznam IP adres v4 nebo v6 pro
wg0
rozhraní. - PrivateKey – Chcete-li zobrazit obsah souboru na klientském počítači, spusťte:
sudo cat /etc/wireguard/privatekey
Sekce peer obsahuje následující pole:
- PublicKey – Veřejný klíč partnera, ke kterému se chcete připojit. (Obsah
/etc/wireguard/publickey
serveru soubor). - Koncový bod – IP nebo název hostitele partnera, ke kterému se chcete připojit, následovaný dvojtečkou a poté číslem portu, na kterém vzdálený peer naslouchá.
- AllowedIPs – čárkami oddělený seznam IP adres v4 nebo v6, ze kterých je povolen příchozí provoz pro peer a na který je směrován odchozí provoz pro tohoto peer. Používáme 0.0.0.0/0, protože směrujeme provoz a chceme, aby partner na serveru posílal pakety s jakoukoli zdrojovou IP.
Pokud potřebujete nakonfigurovat další klienty, opakujte stejné kroky s jinou privátní IP adresou.
Nastavení klientů Windows #
Stáhněte a nainstalujte balíček Windows msi z webu WireGuard.
Po instalaci otevřete aplikaci WireGuard a klikněte na „Přidat tunel“ -> „Přidat prázdný tunel…“, jak je znázorněno na obrázku níže:
Automaticky se vytvoří pár veřejného klíče a zobrazí se na obrazovce.
Zadejte název tunelu a upravte konfiguraci následovně:
[Interface]
PrivateKey = CLIENT_PRIVATE_KEY
Address = 10.0.0.2/24
[Peer]
PublicKey = SERVER_PUBLIC_KEY
Endpoint = SERVER_IP_ADDRESS:51820
AllowedIPs = 0.0.0.0/0
V sekci rozhraní přidejte nový řádek pro definování adresy tunelu klienta.
V části peer přidejte následující pole:
- PublicKey – Veřejný klíč serveru Debian (
/etc/wireguard/publickey
soubor). - Koncový bod – IP adresa serveru Debian následovaná dvojtečkou a portem WireGuard (51820).
- Povolené IP – 0.0.0.0/0
Po dokončení klikněte na tlačítko „Uložit“.
Přidat klientského partnera na server #
Posledním krokem je přidání veřejného klíče a IP adresy klienta na server. Chcete-li to provést, spusťte na serveru Debian následující příkaz:
sudo wg set wg0 peer CLIENT_PUBLIC_KEY allowed-ips 10.0.0.2
Nezapomeňte změnit CLIENT_PUBLIC_KEY
s veřejným klíčem, který jste vygenerovali na klientském počítači (sudo cat /etc/wireguard/publickey
) a upravte IP adresu klienta, pokud se liší. Uživatelé Windows mohou zkopírovat veřejný klíč z aplikace WireGuard.
Po dokončení se vraťte na klientský počítač a vyvolejte rozhraní tunelování.
Klienti Linux a macOS #
Spusťte následující příkaz pro vyvolání rozhraní:
sudo wg-quick up wg0
Nyní byste měli být připojeni k serveru Debian a provoz z vašeho klientského počítače by měl být směrován přes něj. Připojení můžete zkontrolovat pomocí:
sudo wg
interface: wg0
public key: gFeK6A16ncnT1FG6fJhOCMPMeY4hZa97cZCNWis7cSo=
private key: (hidden)
listening port: 53527
fwmark: 0xca6c
peer: r3imyh3MCYggaZACmkx+CxlD6uAmICI8pe/PGq8+qCg=
endpoint: XXX.XXX.XXX.XXX:51820
allowed ips: 0.0.0.0/0
latest handshake: 53 seconds ago
transfer: 3.23 KiB received, 3.50 KiB sent
Můžete také otevřít svůj prohlížeč, napsat „what is my ip“ a měli byste vidět IP adresu vašeho serveru Debian.
Chcete-li zastavit tunelování, snižte wg0
rozhraní:
sudo wg-quick down wg0
Klienti Windows #
Pokud jste nainstalovali WireGuard na Windows, klikněte na tlačítko „Aktivovat“. Po připojení peerů se stav tunelu změní na Aktivní: