GNU/Linux >> Znalost Linux >  >> Cent OS

Jak nastavit Wireguard VPN na CentOS 8

Wireguard je open-source multiplatformní implementace VPN, která využívá nejmodernější kryptografii. Je rychlejší, jednodušší a funkčnější než protokoly IPSec a OpenVPN. Je navržena jako univerzální VPN pro běh na vestavěných rozhraních a superpočítačích a běží na Linuxu, Windows, macOS, iOS, Androidu, BSD a různých dalších platformách.

Tento tutoriál se bude zabývat tím, jak nainstalovat Wireguard VPN na server založený na CentOS 8 a jak se k němu připojit pomocí klienta Linux (CentOS/Fedora/Ubuntu).

Krok 1 – Aktualizace systému

Než budete pokračovat, je nutné aktualizovat váš systém, abyste nainstalovali nejnovější aktualizace.

$ sudo dnf update

Krok 2 – Instalace a povolení EPEL repo

Požadované balíčky Wireguard lze nalézt v úložišti EPEL, takže jej musíme nainstalovat a povolit.

$ sudo dnf install epel-release
$ sudo dnf config-manager --set-enabled PowerTools

Povolili jsme také úložiště PowerTools, protože na něm závisí balíčky EPEL.

Krok 3 – Instalace Wireguard

Povolte úložiště Wireguard.

$ sudo dnf copr enable jdoss/wireguard

Nainstalujte Wireguard.

$ sudo dnf install wireguard-dkms wireguard-tools

Tento krok také nainstaluje kompilátor GNU GCC potřebný k sestavení modulů jádra Linuxu.

Krok 4 – Konfigurace serveru Wireguard

Vytvořte na serveru prázdný konfigurační soubor pro nastavení Wireguard se správnými oprávněními.

$ sudo mkdir /etc/wireguard
$ sudo sh -c 'umask 077; touch /etc/wireguard/wg0.conf'

Dotykový příkaz vytvoří soubor wg0-server.conf soubor v /etc/wireguard adresář.

Dále vytvořte pár soukromých/veřejných klíčů pro server Wireguard.

$ cd /etc/wireguard
$ sudo sh -c 'umask 077; wg genkey | tee privatekey | wg pubkey > publickey'

Tím se vytvoří veřejný i soukromý klíč pro Wireguard a zapíše je do příslušných souborů.

Zobrazit soukromý klíč, který jsme právě vytvořili.

$ sudo cat privatekey

Poznamenejte si klíč a zkopírujte jej, protože jej budeme potřebovat ke konfiguraci Wireguard.

Dále upravte konfigurační soubor.

$ sudo nano /etc/wireguard/wg0.conf

Přidejte následující kód.

[Interface]
## VPN server private IP address ##
Address = 192.168.10.1/24
 
## VPN server port - You can choose any port ##
ListenPort = 37822
 
## VPN server's private key i.e. /etc/wireguard/privatekey - the one from above ##
PrivateKey = GCEXafeZKqSsuLfvuHE+zLzMYwoH4qQyBh7MZ4f/3kM=
 
## Save and update this config file when a new peer (vpn client) added ##
SaveConfig = true

Každá konfigurace má jednu sekci nazvanou [Interface] kde je definována serverová část.

Obsahuje soukromý klíč místního serveru WireGuard, port UDP, na kterém by měl naslouchat příchozím připojením, a vlastní IP adresy VPN.

Také jsme nastavili SaveConfig true . Tím sdělíte službě Wireguard, aby při vypnutí automaticky uložila svou aktivní konfiguraci do tohoto souboru.

Stiskněte Ctrl + W zavřete soubor a zadejte Y až budete vyzváni k uložení souboru.

Krok 5 – Konfigurace brány firewall

Musíme otevřít port, který jsme vybrali pro Wireguard.

Nejprve musíme definovat službu Wireguard pro firewall. Chcete-li to provést, vytvořte soubor wireguard.xml pomocí editoru Nano.

$ sudo nano /etc/firewalld/services/wireguard.xml

Vložte následující kód do souboru.

<?xml version="1.0" encoding="utf-8"?>
<service>
  <short>wireguard</short>
  <description>WireGuard open UDP port 37822 for client connections</description>
  <port protocol="udp" port="37822"/>
</service>

Stiskněte Ctrl + W zavřete soubor a zadejte Y až budete vyzváni k uložení souboru.

Dále povolte službu Wireguard ve firewallu.

$ sudo firewall-cmd --permanent --add-service=wireguard

Zapněte maskování, aby veškerý provoz přicházel a odcházel z 192.168.10.0/24 směrováno přes naši veřejnou IP adresu serveru 203.1.114.98/24 .

$ sudo firewall-cmd --permanent --add-masquerade

Nakonec znovu načtěte firewall, aby se pravidla aktivovala.

$ sudo firewall-cmd --reload

Seznam aktuálních pravidel brány firewall pro potvrzení.

$ sudo firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: eth0
  sources: 
  services: wireguard ssh
  ports: 
  protocols: 
  masquerade: yes
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 

Krok 6 – Zapnutí přesměrování IPv4

Vytvořte /etc/sysctl.d/99-custom.conf soubor.

$ sudo nano /etc/sysctl.d/99-custom.conf

Vložte následující kód do souboru.

## Turn on bbr ##
net.core.default_qdisc = fq
net.ipv4.tcp_congestion_control = bbr
 
## for IPv4 ##
net.ipv4.ip_forward = 1
 
## Turn on basic protection/security ##
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.all.rp_filter = 1
net.ipv4.tcp_syncookies = 1

## for IPv6 ##
net.ipv6.conf.all.forwarding = 1

Stiskněte Ctrl + W zavřete soubor a zadejte Y až budete vyzváni k uložení souboru.

Rozsah kódu ve výše uvedeném souboru je mimo rozsah tohoto tutoriálu, takže jej zatím používejte tak, jak je.

Znovu načtěte změny.

$ sudo sysctl -p /etc/sysctl.d/99-custom.conf

Ve výchozím nastavení firewall nedovolí wg0 a eth0 rozhraní spolu mluví. Musíme tedy do vnitřní sítě přidat rozhraní Wireguard a zapnout maskování.

$ sudo firewall-cmd --add-interface=wg0 --zone=internal
$ sudo firewall-cmd --permanent --zone=internal --add-masquerade

Krok 7 – Povolení a spuštění služby Wireguard

Dále musíme povolit a spustit službu Wireguard.

$ sudo systemctl enable [email protected]
$ sudo systemctl start [email protected]

Můžete ověřit, zda je rozhraní Wireguard wg0 je spuštěn a spuštěn pomocí následujícího příkazu.

$ sudo wg
interface: wg0
  public key: VWndJ4oB7ZJwC/7UOm++OLDrbAxMPsR2yd0cl3sEkUI=
  private key: (hidden)
  listening port: 37822

$ sudo ip a show wg0
3: wg0: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1420 qdisc noqueue state UNKNOWN group default qlen 1000
    link/none
    inet 192.168.10.1/24 scope global wg0
       valid_lft forever preferred_lft forever

Krok 8 – Instalace a konfigurace klienta WireGuard

Pokyny k instalaci klienta Wireguard pro vaši distribuci Linuxu naleznete na jejich oficiální instalační stránce.

Jakmile nainstalujete klienta, musíte vytvořit konfigurační soubor klienta.

$ sudo mkdir /etc/wireguard
$ sudo sh -c 'umask 077; touch /etc/wireguard/wg0.conf'
$ cd /etc/wireguard/
$ sudo sh -c 'umask 077; wg genkey | tee privatekey | wg pubkey > publickey'
$ sudo cat privatekey

Poznamenejte si soukromý klíč, který získáte na konci. Dále musíme upravit konfigurační soubor, který jsme právě vytvořili.

$ sudo nano /etc/wireguard/wg0.conf

Přidejte do souboru následující direktivy.

[Interface]
## client private key ##
PrivateKey = OEM6D/zt2fVWOepVv3iEDD430V0gAshKp4+5oVVt5EE=
 
## client ip address ##
Address = 192.168.10.2/24
 
[Peer]
## CentOS 8 server public key ##
PublicKey = VWndJ4oB7ZJwC/7UOm++OLDrbAxMPsR2yd0cl3sEkUI=
 
## set ACL ##
AllowedIPs = 192.168.10.0/24
 
## Your CentOS 8 server's public IPv4/IPv6 address and port ##
Endpoint = 203.1.114.98:37822
 
##  Key connection alive ##
PersistentKeepalive = 15

Všimněte si, že jsme přiřadili soukromou IP 192.168.10.1 na server a 192.168.10.2 klientovi. Do souboru jsme také přidali soukromý klíč klienta.

[Peer] sekce je místo, kde zadáváte konfiguraci serveru, ke kterému se klient připojí. Zde jsme přidali veřejný klíč, veřejnou IP a sadu povolených IP, která obsahuje privátní IP našeho serveru. PersistentKeepalive říká WireGuard, aby každých 15 sekund posílal paket UDP, což je užitečné, pokud jste za NAT a chcete udržet připojení naživu.

Stiskněte Ctrl + W zavřete soubor a zadejte Y až budete vyzváni k uložení souboru.

Nyní je čas povolit a spustit klienta VPN.

$ sudo systemctl enable [email protected]
$ sudo systemctl start [email protected]
$ sudo systemctl status [email protected]

Krok 9 – Konfigurace serveru pro přidání klienta

Nyní musíme znovu přidat konfiguraci klienta na server, abychom mu dali vědět o klientovi.

Nejprve zastavte službu Wireguard.

$ sudo systemctl stop [email protected]

Otevřete soubor wg0.conf pro úpravy.

$ sudo nano /etc/wireguard/wg0.conf

Připojte následující kód na konec souboru.

[Peer] 
## client VPN public key ## 
PublicKey = dmfO9pirB315slXOgxXtmrBwAqPy07C57EvPks1IKzA=  

## client VPN IP address (note /32 subnet) ## 
AllowedIPs = 192.168.10.2/32

Stiskněte Ctrl + W zavřete soubor a zadejte Y až budete vyzváni k uložení souboru.

[Peer] sekce definují ostatní členy sítě VPN. Můžete jich přidat tolik, kolik potřebujete.

Obsahují svůj veřejný klíč, který se musí shodovat se soukromým klíčem protějšku v jeho [Interface] sekce.

Všimněte si, že každé příchozí připojení je nejprve ověřeno pomocí jednoho z veřejných klíčů. Pokud připojení nepochází od ověřeného peer, příchozí pakety jsou pouze tiše ignorovány. Vzhledem k tomu, že připojení od hostitelů, kteří nevlastní odpovídající soukromý klíč, nejsou vůbec zodpovězena, WireGuard VPN neposkytuje pouze šifrovanou komunikaci, ale také zůstává skryta před cizinci.

Znovu spusťte službu Wireguard.

$ sudo systemctl start [email protected]

Krok 10 – Test

Pojďme zkontrolovat, zda jsou klient i server bezpečně připojeny pomocí VPN. Chcete-li připojení otestovat, spusťte na svém klientovi následující příkazy.

$ ping -c 192.168.10.1
PING 192.168.10.1 (192.168.10.1) 56(84) bytes of data.
64 bytes from 192.168.10.1: icmp_seq=1 ttl=64 time=44.2 ms
64 bytes from 192.168.10.1: icmp_seq=2 ttl=64 time=45.8 ms
64 bytes from 192.168.10.1: icmp_seq=3 ttl=64 time=46.7 ms
64 bytes from 192.168.10.1: icmp_seq=4 ttl=64 time=44.1 ms

--- 192.168.10.1 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 2800ms
rtt min/avg/max/mdev = 41.729/47.829/48.953/5.046 ms

$ sudo wg
interface: wg0
  public key: dmfO9pirB315slXOgxXtmrBwAqPy07C57EvPks1IKzA= 
  private key: (hidden)
  listening port: 
 
peer: VWndJ4oB7ZJwC/7UOm++OLDrbAxMPsR2yd0cl3sEkUI=
  endpoint: 203.1.114.98:37822
  allowed ips: 192.168.10.0/24
  latest handshake: 1 minute, 40 seconds ago
  transfer: 938 B received, 45.67 KiB sent
  persistent: keepalive: every 15 seconds

Závěr

To je vše, co je v tomto tutoriálu. Nyní byste měli mít server VPN založený na Wireguard založený na serveru CentOS 8. Pokud máte nějaké dotazy, zeptejte se je v komentářích níže.


Cent OS
  1. Jak nastavit/změnit název hostitele na CentOS 7 Linux

  2. Jak nastavit WireGuard VPN na Ubuntu 20.04

  3. Jak nastavit WireGuard VPN na CentOS 8

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

  2. Nastavení serveru DHCP na CentOS 8 – Jak na to?

  3. Jak nastavit národní prostředí systému na CentOS 7

  1. Jak nastavit WireGuard VPN na Ubuntu 18.04

  2. Jak nastavit WireGuard VPN na Ubuntu 20.04

  3. Jak nastavit WireGuard VPN na CentOS 8