Tento tutoriál vám ukáže, jak nastavit svůj vlastní server WireGuard VPN na Debian 11 bullseye a Debian 10 Buster. WireGuard je vyroben speciálně pro linuxové jádro. Běží uvnitř linuxového jádra a umožňuje vám vytvořit rychlý, moderní a bezpečný tunel VPN.
Funkce WireGuard VPN
- Lehký a super rychlý, vyfoukne OpenVPN z vody.
- Více platforem. WireGuard lze spustit na systémech Linux, BSD, macOS, Windows, Android, iOS a OpenWRT.
- Autentizace uživatele se provádí výměnou veřejných klíčů, podobně jako klíče SSH.
- Přiděluje klientům VPN statické adresy IP tunelu. Někomu se to nemusí líbit, ale v některých případech to může být užitečné.
- Mobilní zařízení mohou plynule přepínat mezi Wi-Fi a mobilní sítí, aniž by došlo k přerušení připojení.
- Jeho cílem je nahradit OpenVPN a IPSec ve většině případů použití.
Požadavky
Abyste mohli postupovat podle tohoto návodu, budete potřebovat VPS (virtuální privátní server), který může volně přistupovat k blokovaným webovým stránkám (mimo vaši zemi nebo systém filtrování internetu). Doporučuji Kamatera VPS, která obsahuje:
- 30denní bezplatná zkušební verze.
- Začíná na 4 USD měsíčně (1 GB RAM)
- Vysoce výkonný VPS založený na KVM
- 9 datových center po celém světě, včetně Spojených států, Kanady, Spojeného království, Německa, Nizozemska, Hong Kongu a Isrealu.
Podle níže uvedeného návodu vytvořte svůj Linux VPS server na Kamatera.
- Jak vytvořit Linux VPS server na Kamateře
Jakmile máte VPS se systémem Debian, postupujte podle pokynů níže.
Tento tutoriál předpokládá, že server VPN i klient VPN používají Debian operační systém.
Krok 1:Nainstalujte WireGuard na Debian Server a Desktop
Přihlaste se na svůj server Debian. WireGuard je součástí Debian 11 (Bullseye) úložiště, takže jej můžete nainstalovat spuštěním následujících příkazů.
sudo apt updatesudo apt install wireguard wireguard-tools linux-headers-$(uname -r)
Debian 10 uživatelé potřebují přidat úložiště backport pomocí následujícího příkazu.
echo "deb http://deb.debian.org/debian buster-backports main" | sudo tee /etc/apt/sources.list.d/buster-backports.list
Poté nainstalujte WireGuard.
sudo apt updatesudo apt -t buster-backports install wireguard wireguard-tools wireguard-dkms linux-headers-$(uname -r)
Pomocí stejných příkazů nainstalujte WireGuard na místní počítač Debian (klient VPN). Všimněte si, že je také nutné nainstalovat openresolv
balíček na klientovi pro konfiguraci serveru DNS.
sudo apt install openresolv
Krok 2:Vygenerujte veřejný/soukromý klíčový pár
Server
Spusťte následující příkaz na serveru Debian a vytvořte pár veřejného/soukromého klíče, který bude uložen pod /etc/wireguard/
adresář.
wg genkey | sudo tee /etc/wireguard/server_private.key | wg pubkey | sudo tee /etc/wireguard/server_public.key
Klient
Spusťte následující příkaz k vytvoření páru veřejného/soukromého klíče na místním počítači Debian (klient VPN).
wg genkey | sudo tee /etc/wireguard/client_private.key | wg pubkey | sudo tee /etc/wireguard/client_public.key
Krok 3:Vytvořte konfigurační soubor WireGuard
Server
Pomocí textového editoru příkazového řádku, jako je Nano, vytvořte konfigurační soubor WireGuard na serveru Debian. wg0
bude název síťového rozhraní.
sudo nano /etc/wireguard/wg0.conf
Zkopírujte následující text a vložte jej do konfiguračního souboru. Musíte použít svůj vlastní soukromý klíč serveru a veřejný klíč klienta.
[Rozhraní] Adresa =10.10.10.1/24ListenPort =51820PrivateKey =CD + ZjXiVIX + 0iSX1PNijl4a + 88lCbDgw7kO78oXXLEc =[Peer] PublicKey =AYQJf6HbkQ0X0Xyt + cTMTuJe3RFwbuCMF46LKgTwzz4 =AllowedIPs =10.10.10.2/32
Kde:
- Adresa :Zadejte soukromou IP adresu serveru VPN. Zde používám síťový rozsah 10.10.10.0/24, takže nebude v konfliktu s dosahem vaší domácí sítě. (Většina domácích routerů používá 192.168.0.0/24 nebo 192.168.1.0/24). 10.10.10.1 je soukromá IP adresa serveru VPN.
- Soukromý klíč :Soukromý klíč serveru VPN, který lze nalézt v
/etc/wireguard/server_private.key
soubor na serveru. - ListenPort :Server WireGuard VPN bude naslouchat na portu UDP 51820, což je výchozí nastavení.
- PublicKey :Veřejný klíč klienta VPN, který lze nalézt v
/etc/wireguard/client_public.key
soubor na klientském počítači. - Povolené adresy IP :IP adresy, které může klient VPN používat. V tomto příkladu může klient použít pouze IP adresu 10.10.10.2 uvnitř tunelu VPN.
Uložte a zavřete soubor. (Chcete-li uložit soubor v textovém editoru Nano, stiskněte Ctrl+O
a poté stiskněte Enter pro potvrzení. Stiskněte Ctrl+X
pro ukončení.)
Změňte režim oprávnění k souboru tak, aby soubory mohl číst pouze uživatel root.
sudo chmod 600 /etc/wireguard/ -R
Klient
Pomocí textového editoru příkazového řádku, jako je Nano, vytvořte konfigurační soubor WireGuard na místním počítači Debian. wg-client0
bude název síťového rozhraní.
sudo nano /etc/wireguard/wg-client0.conf
Zkopírujte následující text a vložte jej do konfiguračního souboru. Musíte použít svůj vlastní soukromý klíč klienta a veřejný klíč serveru.
[Rozhraní] Adresa =10.10.10.2/24DNS =10.10.10.1PrivateKey =Cofa + x5UvHF + a3xJ6enLatG + DoE3I5PhMgKrMKkUyXI =[Peer] PublicKey =kQvxOJI5Km4S1c7WXu2UZFpB8mHGuf3Gz8mmgTIF2U0 =AllowedIPs =0.0.0.0/0Endpoint =12.34.56.78:51820PersistentKeepalive =25Kde:
- Adresa :Zadejte soukromou IP adresu klienta VPN.
- DNS :zadejte 10.10.10.1 (server VPN) jako server DNS. Nakonfiguruje se pomocí
resolvconf
příkaz. Můžete také zadat více serverů DNS pro redundanci takto:DNS = 10.10.10.1 8.8.8.8
- Soukromý klíč :Soukromý klíč klienta, který lze nalézt v
/etc/wireguard/client_private.key
soubor na klientském počítači. - PublicKey :Veřejný klíč serveru, který lze nalézt v
/etc/wireguard/server_public.key
soubor na serveru. - Povolené adresy IP :0.0.0.0/0 představuje celý internet, což znamená, že veškerý provoz na internetu by měl být směrován přes VPN.
- Koncový bod :Veřejná IP adresa a číslo portu serveru VPN. Nahraďte 12.34.56.78 skutečnou veřejnou IP adresou vašeho serveru.
- PersistentKeepalive :Odešlete ověřený prázdný paket peeru každých 25 sekund, aby spojení zůstalo živé. Pokud PersistentKeepalive není povoleno, server VPN nemusí být schopen pingnout klienta VPN.
Uložte a zavřete soubor.
Změňte režim souborů tak, aby soubory mohl číst pouze uživatel root.
sudo chmod 600 /etc/wireguard/ -R
Krok 4:Povolte předávání IP na serveru
Aby server VPN směroval pakety mezi klienty VPN a internetem, musíme povolit předávání IP. Upravte sysctl.conf
soubor.
sudo nano /etc/sysctl.conf
Přidejte následující řádek na konec tohoto souboru.
net.ipv4.ip_forward =1
Uložte a zavřete soubor. Poté aplikujte změny pomocí níže uvedeného příkazu. Klávesa -p možnost načte nastavení sysctl z /etc/sysctl.conf soubor. Tento příkaz zachová naše změny po restartování systému.
sudo sysctl -p
Krok 5:Nakonfigurujte maskování IP na serveru
Musíme nastavit maskování IP ve firewallu serveru, aby se server stal virtuálním routerem pro klienty VPN. Budu používat UFW, což je frontend k firewallu iptables. Nainstalujte UFW na Debian pomocí:
sudo apt install ufw
Nejprve musíte povolit provoz SSH.
sudo ufw allow 22/tcp
Dále najděte název hlavního síťového rozhraní vašeho serveru.
adresa IP
Jak vidíte, jmenuje se ens3
na mém serveru Debian.
Abychom nakonfigurovali maskování IP adres, musíme přidat příkaz iptables do konfiguračního souboru UFW.
sudo nano /etc/ufw/before.rules
Ve výchozím nastavení existují určitá pravidla pro filter
stůl. Přidejte následující řádky na konec tohoto souboru. Nahraďte ens3
s vaším vlastním názvem síťového rozhraní.
# pravidla tabulky NAT*nat:POSTROUTING ACCEPT [0:0]-A POSTROUTING -o ens3 -j MASQUERADE# Ukončete každou tabulku řádkem 'COMMIT', jinak tato pravidla nebudou zpracovánaCOMMIT
V textovém editoru Nano můžete přejít na konec souboru stisknutím Ctrl+W
a poté stiskněte Ctrl+V
.
Výše uvedené řádky se připojí (-A ) pravidlo do konce POSTROUTING řetězec nat stůl. Propojí vaši virtuální privátní síť s internetem. A také skryjte svou síť před vnějším světem. Internet tedy vidí pouze IP vašeho VPN serveru, ale nevidí IP vašeho VPN klienta, stejně jako váš domácí router skrývá vaši soukromou domácí síť.
Ve výchozím nastavení UFW zakazuje předávání paketů. Můžeme povolit přeposílání pro naši privátní síť. Najděte ufw-before-forward
řetězec v tomto souboru a přidejte následující 3 řádky, které budou akceptovat předávání paketů, pokud je zdrojová IP nebo cílová IP v 10.10.10.0/24
rozsah.
# povolit přesměrování pro důvěryhodnou síť-A ufw-before-forward -s 10.10.10.0/24 -j ACCEPT-A ufw-before-forward -d 10.10.10.0/24 -j ACCEPT
Uložte a zavřete soubor. Poté povolte UFW.
povolit sudo ufw
Pokud jste již dříve povolili UFW, můžete k restartování UFW použít systemctl.
sudo systemctl restart ufw
Pokud nyní vypíšete pravidla v řetězci POSTROUTING tabulky NAT pomocí následujícího příkazu:
sudo iptables -t nat -L POSTROUTING
Můžete vidět pravidlo maškarády.
Krok 6:Nainstalujte DNS Resolver na server
Protože jsme zadali server VPN jako server DNS pro klienta, musíme na serveru VPN spustit překladač DNS. Můžeme nainstalovat server bind9 DNS.
sudo apt install bind9
Jakmile je nainstalován, BIND se automaticky spustí. Jeho stav můžete zkontrolovat pomocí:
systemctl status bind9
Ukázkový výstup:
● named.service - BIND Domain Name Server Načten:načten (/lib/systemd/system/named.service; povoleno; přednastaveno dodavatelem:povoleno) Aktivní:aktivní (běží) od Ne 2020-05-17 08:11 :26 UTC; Před 37s Dokumenty:muž:pojmenovaný(8) Hlavní PID:13820 (pojmenovaný) Úkoly:5 (limit:1074) Paměť:14,3M CGroup:/system.slice/named.service └─13820 /usr/sbin/named -f -u vázat
Pokud neběží, spusťte jej:
sudo systemctl start bind9
Upravte konfigurační soubor serveru BIND DNS.
sudo nano /etc/bind/named.conf.options
Přidejte následující řádek, aby klienti VPN mohli odesílat rekurzivní dotazy DNS.
allow-recursion { 127.0.0.1; 10.10.10.0/24; };
Uložte a zavřete soubor. Restartujte BIND9, aby se změny projevily.
sudo systemctl restart bind9
Poté musíte spustit následující příkaz, aby se klienti VPN mohli připojit k portu 53.
sudo ufw insert 1 povolit od 10.10.10.0/24
Krok 7:Otevřete port WireGuard v bráně firewall
Spuštěním následujícího příkazu otevřete port UDP 51820 na serveru.
sudo ufw povolit 51820/udp
Krok 8:Spusťte WireGuard
server
Spuštěním následujícího příkazu na serveru spusťte WireGuard.
sudo wg-quick up /etc/wireguard/wg0.conf
Chcete-li to zastavit, spusťte
sudo wg-quick down /etc/wireguard/wg0.conf
Ke spuštění WireGuard můžete také použít službu systemd.
sudo systemctl start [email protected]
Povolte automatické spouštění při spouštění systému.
povolení sudo systemctl [chráněno e-mailem]
Zkontrolujte jeho stav pomocí následujícího příkazu. Jeho stav by měl být active (exited)
.
stav systemctl [e-mail chráněn]
Nyní je server WireGuard připraven přijímat klientská připojení.
Klient
Spusťte WireGuard.
sudo systemctl start [email protected]
Povolte automatické spouštění při spouštění systému.
povolení sudo systemctl [chráněno e-mailem]
Zkontrolujte jeho stav:
stav systemctl [e-mail chráněn]
Nyní přejděte na tento web:http://icanhazip.com/
pro kontrolu vaší veřejné IP adresy. Pokud vše proběhlo v pořádku, měla by zobrazovat veřejnou IP adresu vašeho VPN serveru namísto veřejné IP adresy vašeho klientského počítače.
Pro získání aktuální veřejné IP adresy můžete také spustit následující příkaz.
curl https://icanhazip.com
Tipy pro odstraňování problémů
Test ping
Můžete pingnout ze serveru VPN na klienta VPN (ping 10.10.10.2
), abyste zjistili, zda tunel funguje. Pokud v příkazu ping uvidíte následující chybovou zprávu,
ping:sendmsg:Požadovaný klíč není k dispozici
může to být tím, že AllowedIPs
parametr je chybný, jako překlep.
Pokud je chybová zpráva ping
ping:sendmsg:Je vyžadována cílová adresa
může se stát, že soukromý/veřejný klíč je ve vašich konfiguračních souborech chybný.
Nelze procházet internet
Pokud je tunel VPN úspěšně vytvořen, ale veřejná IP adresa klienta se nezmění, je to proto, že pravidlo maskování nebo předávání ve vašem konfiguračním souboru UFW nefunguje. Jednou jsem měl překlep v /etc/ufw/before.rules
soubor, což způsobilo, že můj počítač nemohl procházet internet.
Všimněte si, že nedoporučuji používat SaveConfig=true
v [Interface]
části konfiguračního souboru WireGuard. SaveConfig
řekne WireGuard, aby při vypnutí uložil konfiguraci runtime. Pokud tedy přidáte další [Peer]
v konfiguračním souboru a poté restartujte WireGuard, vaše nově přidané konfigurace budou přepsány.
Povolit protokolování ladění v jádře Linux
Pokud používáte Linux kernel 5.6+, můžete povolit protokolování ladění pro WireGuard pomocí následujícího příkazu.
sudo su -echo module wireguard +p> /sys/kernel/debug/dynamic_debug/control
Poté můžete zobrazit protokoly ladění pomocí
sudo dmesg -wH
nebo
sudo journalctl -kf
Restartovat
Pokud vaše VPN stále nefunguje, zkuste restartovat server VPN.
restart sudo systemctl [chráněno e-mailem]
Poté zastavte klienta VPN.
sudo systemctl stop [e-mail chráněn]
A upgradujte softwarové balíčky na klientovi VPN.
aktualizace sudo apt; upgrade sudo apt
Dále restartujte klienta VPN.
sudo shutdown -r nowsudo systemctl start [chráněno e-mailem]
Přidání dalších klientů VPN
WireGuard je navržen tak, aby přidružil jednu IP adresu k jednomu VPN klientovi. Chcete-li přidat další klienty VPN, musíte pro každého klienta vytvořit jedinečný pár soukromých/veřejných klíčů a poté přidat veřejný klíč každého klienta VPN do konfiguračního souboru serveru (/etc/wireguard/wg0.conf
) takto:
Každý klient VPN bude mít statickou privátní IP adresu (10.10.10.2, 10.10.10.3, 10.10.10.4 atd.). Restartujte server WireGuard, aby se změny projevily.
restart sudo systemctl [chráněno e-mailem]
Poté přidejte konfiguraci WireGuard na každého klienta VPN jako obvykle.
Policy Routing, Split Tunneling &VPN Kill Switch
Nyní vám ukážu, jak používat směrování zásad , rozdělené tunelování a Přepínač deaktivace VPN s WireGuard VPN. Poznámka že se nedoporučuje používat je ve vzájemném spojení. Pokud používáte směrování zásad, neměli byste povolit rozdělené tunelování ani přepínač zabíjení VPN a naopak.
Směrování zásad
Ve výchozím nastavení bude veškerý provoz na klientovi VPN směrován přes server VPN. Někdy můžete chtít směrovat pouze určitý typ provozu na základě protokolu transportní vrstvy a cílového portu. Toto je známé jako směrování zásad.
Směrování zásad je nakonfigurováno na klientském počítači a my musíme zastavit klientský proces WireGuard.
sudo systemctl stop [e-mail chráněn]
Poté upravte konfigurační soubor klienta.
sudo nano /etc/wireguard/wg-client0.conf
Pokud například přidáte následující 3 řádky do [interface]
poté WireGuard vytvoří směrovací tabulku s názvem „1234“ a přidá do směrovací tabulky pravidlo ip. V tomto příkladu bude provoz směrován přes server VPN pouze v případě, že se jako protokol transportní vrstvy použije TCP a cílový port je 25, tj. když klientský počítač odesílá e-maily.
Tabulka =1234PostUp =pravidlo ip přidat tabulku ipproto tcp dport 25 1234PreDown =odstranit pravidlo ip ipproto tcp dport 25 tabulku 1234
Uložte a zavřete soubor. Poté znovu spusťte klienta WireGuard.
sudo systemctl start [email protected]
Rozdělené tunelování
Ve výchozím nastavení bude veškerý provoz na klientovi VPN směrován přes server VPN. Zde je návod, jak povolit rozdělené tunelování, takže provoz pouze na 10.10.10.0/24
Rozsah IP adres bude tunelován prostřednictvím WireGuard VPN. To je užitečné, když chcete vybudovat privátní síť pro několik cloudových serverů, protože klienti VPN poběží na cloudových serverech a pokud používáte úplný VPN tunel, pravděpodobně ztratíte připojení ke cloudovým serverům.
Upravte konfigurační soubor klienta.
sudo nano /etc/wireguard/wg-client0.conf
Změnit
AllowedIPs =0.0.0.0/0
Komu
PovolenéIPs =10.10.10.0/24
Provoz bude tedy směrován přes VPN pouze tehdy, když je cílová adresa v rozsahu IP 10.10.10.0/24. Uložte a zavřete soubor. Poté restartujte klienta WireGuard.
restart sudo systemctl [chráněno e-mailem]
VPN Kill Switch
Ve výchozím nastavení má váš počítač v případě přerušení připojení VPN přístup k internetu přes normální bránu. Možná budete chtít povolit funkci kill switch, která zabrání toku nešifrovaných paketů přes rozhraní bez WireGuard.
Zastavte proces klienta WireGuard.
sudo systemctl stop [e-mail chráněn]
Upravte konfigurační soubor klienta.
sudo nano /etc/wireguard/wg-client0.conf
Přidejte následující dva řádky do [interface]
sekce.
PostUp =iptables -I OUTPUT! -o %i -m značka ! --mark $(wg show %i fwmark) -m addrtype ! --dst-type LOCAL -j REJECTPreDown =iptables -D VÝSTUP ! -o %i -m značka ! --mark $(wg show %i fwmark) -m addrtype ! --dst-type LOCAL -j REJECT
Takhle:
[Rozhraní]Adresa =10.10.10.2/24DNS =10.10.10.1PrivateKey =cOFA+x5UvHF+a3xJ6enLatG+DoE3I5PhMgKrMKkUyXI=PostUp =OUTPUTables -I iptables! -o %i -m značka ! --mark $(wg show %i fwmark) -m addrtype ! --dst-type LOCAL -j REJECTPreDown =iptables -D VÝSTUP ! -o %i -m značka ! --mark $(wg show %i fwmark) -m addrtype ! --dst-type LOCAL -j ODMÍTNUTí [Peer]Veřejný klíč =kQvxOJI5Km4S1c7WXu2UZFpB8mHGuf3Gz8mmgTIF2U0=PovolenéIPs =0.0.0.0/0Koncový bod =12.34.56.78:51820Persistent25prepalive =Persistent25prepaliveUložte a zavřete soubor. Poté spusťte klienta WireGuard.
sudo systemctl start [email protected]Instalace Linux Kernel 5.x na Debian 10
Aktuální verze linuxového jádra na Debianu 10 je 4.19. V kroku 1 jsme přidali úložiště backport na Debian 10. úložiště backport zahrnuje linuxové jádro 5.10 v době psaní tohoto článku. Možná víte, že modul wireguard je součástí linuxového jádra od verze 5.4. Pokud nainstalujeme linuxové jádro 5.10 na Debian 10, nemusíme vytvářet modul wireguard, když systém upgraduje linuxové jádro. Ve skutečnosti měl můj server Debian 10 jednou problém se sestavením modulu wireguard pomocí wireguard-dkms.
Všimněte si, že v době, kdy čtete tento článek, úložiště backport Debian 10 možná odstranilo jádro 5.10 a obsahovalo jádro 5.11. Jednoduše nahraďte 5.8 za 5.9 v následujících příkazech.
Chcete-li nainstalovat jádro Linuxu 5.8 na cloudové servery Debian 10, spusťte následující příkaz.
sudo apt install linux-image-5.10.0-0.bpo.7-cloud-amd64 linux-headers-5.10.0-0.bpo.7-cloud-amd64Chcete-li nainstalovat jádro Linuxu 5.8 na počítač s Debianem 10, spusťte následující příkaz.
sudo apt install linux-image-5.10.0-0.bpo.7-amd64 linux-headers-5.10.0-0.bpo.7-amd64Poté restartujte svůj box Debian 10.
sudo shutdown -r nowZkontrolujte verzi svého linuxového jádra.
uname -rUkázkový výstup
5.10.0-0.bpo.7-cloud-amd64I když už nepotřebujeme
wireguard-dkms
balíček, je to závislost prowireguard
balíček, takže jej nemůžeme ze systému odstranit. Při upgraduwireguard
pravděpodobně uvidíte následující chybu balíček.Chyba! dkms.conf pro tento modul obsahuje direktivu BUILD_EXCLUSIVE, která neodpovídá tomuto jádru/archu. To znamená, že by neměl být postavenTo znamená
wireguard-dkms
se pokouší vytvořitwireguard
modul do linuxového jádra, ale Linux 5.10 obsahuje nativníwireguard
modul, takže operace sestavení je zabráněna a tuto chybu můžete ignorovat.
Nastavte zónu zásad odezvy (RPZ) v BIND Resolver na Debian/Ubuntu Jak snadno nastavit poštovní server na Debian 10 Buster s iRedMailDebian