GNU/Linux >> Linux Esercitazione >  >> Cent OS

Come configurare Wireguard VPN su CentOS 8

Wireguard è un'implementazione VPN multipiattaforma open source che utilizza una crittografia all'avanguardia. È più veloce, più semplice e più funzionale dei protocolli IPSec e OpenVPN. È progettata come VPN per uso generico per l'esecuzione su interfacce e supercomputer incorporati e funziona su Linux, Windows, macOS, iOS, Android, BSD e varie altre piattaforme.

Questo tutorial tratterà come installare Wireguard VPN su un server basato su CentOS 8 e come connettersi ad esso utilizzando un client Linux (CentOS/Fedora/Ubuntu).

Passaggio 1 - Aggiorna sistema

Prima di procedere oltre, è indispensabile aggiornare il sistema per installare gli ultimi aggiornamenti.

$ sudo dnf update

Passaggio 2:installazione e abilitazione del repository EPEL

I pacchetti Wireguard richiesti possono essere trovati nel repository EPEL, quindi è necessario installarlo e abilitarlo.

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

Abbiamo anche abilitato il repository PowerTools poiché i pacchetti EPEL dipendono da esso.

Fase 3 - Installa Wireguard

Abilita il repository Wireguard.

$ sudo dnf copr enable jdoss/wireguard

Installa Wireguard.

$ sudo dnf install wireguard-dkms wireguard-tools

Questo passaggio installa anche il compilatore GNU GCC necessario per creare i moduli del kernel Linux.

Passaggio 4:configurazione del server Wireguard

Crea un file di configurazione vuoto sul server per le impostazioni di Wireguard con le autorizzazioni appropriate.

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

Il comando Touch crea il file wg0-server.conf nel /etc/wireguard directory.

Quindi, crea una coppia di chiavi privata/pubblica per il server Wireguard.

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

Questo crea sia la chiave pubblica che quella privata per Wireguard e le scrive nei rispettivi file.

Visualizza la chiave privata che abbiamo appena creato.

$ sudo cat privatekey

Prendi nota della chiave e copiala perché ci servirà per configurare Wireguard.

Quindi, modifica il file di configurazione.

$ sudo nano /etc/wireguard/wg0.conf

Aggiungi il seguente codice.

[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

Ogni configurazione ha una sezione chiamata [Interface] dove è definita la parte server.

Contiene la chiave privata del server WireGuard locale, la porta UDP su cui dovrebbe ascoltare le connessioni in entrata e i propri indirizzi IP VPN.

Abbiamo anche impostato SaveConfig su true . Questo dirà al servizio Wireguard di salvare automaticamente la sua configurazione attiva su questo file allo spegnimento.

Premi Ctrl + W per chiudere il file e immettere Y quando viene richiesto di salvare il file.

Passaggio 5:configurazione del firewall

Dobbiamo aprire la porta che abbiamo scelto per Wireguard.

Innanzitutto, dobbiamo definire il servizio Wireguard per il firewall. Per farlo, crea un file wireguard.xml con l'editor Nano.

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

Incolla il codice seguente nel file.

<?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>

Premi Ctrl + W per chiudere il file e immettere Y quando viene richiesto di salvare il file.

Quindi, abilita il servizio Wireguard nel firewall.

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

Attiva il mascheramento in modo che tutto il traffico in entrata e in uscita da 192.168.10.0/24 instradato tramite il nostro indirizzo IP pubblico del server 203.1.114.98/24 .

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

Infine, ricarica il firewall per attivare le regole.

$ sudo firewall-cmd --reload

Elenca le regole firewall correnti per confermare.

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

Passaggio 6:attiva l'inoltro IPv4

Crea /etc/sysctl.d/99-custom.conf file.

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

Incolla il codice seguente nel file.

## 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

Premi Ctrl + W per chiudere il file e immettere Y quando viene richiesto di salvare il file.

L'ambito del codice nel file sopra non rientra nell'ambito di questo tutorial, quindi per ora, usalo così com'è.

Ricarica le modifiche.

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

Per impostazione predefinita, il firewall non consente wg0 e eth0 le interfacce parlano tra loro. Quindi dobbiamo aggiungere l'interfaccia Wireguard alla rete interna e attivare il masquerading.

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

Passaggio 7 - Abilita e avvia il servizio Wireguard

Successivamente, dobbiamo abilitare e avviare il servizio Wireguard.

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

Puoi verificare se l'interfaccia Wireguard, wg0 è attivo e funzionante utilizzando il comando seguente.

$ 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

Passaggio 8:installazione e configurazione del client WireGuard

Puoi trovare le istruzioni di installazione per il client Wireguard per la tua distribuzione Linux dalla loro pagina di installazione ufficiale.

Una volta installato il client, è necessario creare il file di configurazione del client.

$ 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

Prendi nota della chiave privata che ottieni alla fine. Successivamente, dobbiamo modificare il file di configurazione che abbiamo appena creato.

$ sudo nano /etc/wireguard/wg0.conf

Aggiungi le seguenti direttive al file.

[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

Tieni presente che abbiamo assegnato l'IP privato 192.168.10.1 al server e 192.168.10.2 al cliente. Abbiamo anche aggiunto la chiave privata del cliente al file.

Il [Peer] la sezione è dove si inserisce la configurazione del server a cui si connetterà il client. Qui abbiamo aggiunto la chiave pubblica, l'IP pubblico e un insieme di IP consentiti che contiene l'IP privato del nostro server. PersistentKeepalive dice a WireGuard di inviare un pacchetto UDP ogni 15 secondi, questo è utile se sei dietro un NAT e vuoi mantenere viva la connessione.

Premi Ctrl + W per chiudere il file e immettere Y quando viene richiesto di salvare il file.

Ora è il momento di abilitare e avviare il client VPN.

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

Passaggio 9 - Configura il server per aggiungere il client

Ora, dobbiamo aggiungere di nuovo la configurazione del client al server per fargli sapere del client.

Interrompi prima il servizio Wireguard.

$ sudo systemctl stop [email protected]

Apri il file wg0.conf per la modifica.

$ sudo nano /etc/wireguard/wg0.conf

Aggiungi il codice seguente alla fine del file.

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

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

Premi Ctrl + W per chiudere il file e immettere Y quando viene richiesto di salvare il file.

Il [Peer] le sezioni definiscono gli altri membri della rete VPN. Puoi aggiungerne quanti ne desideri.

Contengono la loro chiave pubblica, che deve corrispondere alla chiave privata del peer nel suo [Interface] sezione.

Si noti che qualsiasi connessione in entrata viene prima autenticata su una delle chiavi pubbliche. Se la connessione non proviene da un peer verificato, i pacchetti in arrivo vengono semplicemente ignorati silenziosamente. Poiché le connessioni da host che non possiedono una chiave privata corrispondente non ricevono alcuna risposta, una VPN WireGuard non solo fornisce comunicazioni crittografate, ma rimane anche nascosta agli estranei.

Riavvia il servizio Wireguard.

$ sudo systemctl start [email protected]

Fase 10:verifica

Verifichiamo se sia il client che il server sono connessi in modo sicuro tramite VPN. Per testare la connessione, esegui i seguenti comandi sul tuo client.

$ 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

Conclusione

Questo è tutto ciò che c'è in questo tutorial. Ora dovresti avere un server VPN basato su Wireguard basato su un server CentOS 8. Se hai domande, chiedile nei commenti qui sotto.


Cent OS
  1. Come impostare/modificare un nome host su CentOS 7 Linux

  2. Come configurare WireGuard VPN su Ubuntu 20.04

  3. Come configurare WireGuard VPN su Ubuntu (una guida passo passo)

  4. Configura il server DHCP su CentOS 8 - Come farlo?

  5. Come configurare le impostazioni internazionali del sistema su CentOS 7

Come installare VPN PPTP su CentOS 6

Come configurare il server DHCP su CentOS 8

Come installare Wireguard su CentOS 8

Come configurare una VPN basata su IPsec con Strongswan su CentOS/RHEL 8

Come configurare WireGuard VPN su Debian 11

Come configurare WireGuard VPN su Linux