GNU/Linux >> Znalost Linux >  >> Debian

Nastavte si svůj vlastní WireGuard VPN server na Debianu 11 a Debianu 10

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 =25  

Kde:

  • 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:

[rozhraní] Adresa =10.10.10.1/24PrivateKey =uifh+xxjj0g0uazj6vpqsbb/o68syvqdmyjpy/flgfA =poslousteport =51820 [peer] publicKey =avoltics12gzjt/kra =krals62gzjtcjt/kra =yolIts12gzjt/kra =yowtzjt/kra =yrowlgzjt/kra =yrowlgzjt/kra =yolIps12gjxjt/kra =yrowngjt/kra =yrowlgzjt/kra =yolIps. 1Z/3rtl0i7cJorcinB7T4UOIzScifPNEIESFD8=PovolenéIPs =10.10.10.3/32[Peer]PublicKey =EVstHZc6QamzPgefDGPLFEjGyedJk6SZbC832=prez10.IP3Allow=prez1.

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 =Persistent25prepalive 

Ulož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-amd64

Chcete-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-amd64

Poté restartujte svůj box Debian 10.

sudo shutdown -r now

Zkontrolujte verzi svého linuxového jádra.

uname -r

Ukázkový výstup

5.10.0-0.bpo.7-cloud-amd64

I když už nepotřebujeme wireguard-dkms balíček, je to závislost pro wireguard balíček, takže jej nemůžeme ze systému odstranit. Při upgradu wireguard 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 postaven

To znamená wireguard-dkms se pokouší vytvořit wireguard 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.


Debian
  1. Jak nastavit SFTP server na Debian 11 Server

  2. Jak nastavit server OpenVPN na Debianu 10

  3. Nastavte poštovní server pomocí PostfixAdmin na Debianu 9

  1. Nastavte VPN server na vašem počítači se systémem Linux

  2. Jak nastavit WireGuard VPN na Ubuntu 18.04

  3. Jak nastavit WireGuard VPN na Ubuntu (průvodce krok za krokem)

  1. Jak nastavit WireGuard VPN na Ubuntu 20.04

  2. Jak nastavit WireGuard VPN na Debianu 10

  3. Jak nastavit server OpenVPN na Debianu 9