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

Configura il tuo server VPN WireGuard su CentOS/RHEL

Questo tutorial ti mostrerà come configurare il tuo server VPN WireGuard su CentOS/RHEL. WireGuard è realizzato appositamente per il kernel Linux. Funziona all'interno del kernel Linux e ti consente di creare tunnel VPN veloci, moderni e sicuri.

Caratteristiche di WireGuard VPN

  • Leggero e velocità super veloce, che soffia OpenVPN fuori dall'acqua.
  • Multipiattaforma. WireGuard può essere eseguito su Linux, BSD, macOS, Windows, Android, iOS e OpenWRT.
  • L'autenticazione dell'utente avviene tramite lo scambio di chiavi pubbliche, in modo simile alle chiavi SSH.
  • Assegna indirizzi IP tunnel statici ai client VPN. Ad alcune persone potrebbe non piacere, ma in alcuni casi può essere utile.
  • I dispositivi mobili possono passare dalla rete Wi-Fi a quella mobile senza interruzioni senza interrompere la connettività.
  • Mira a sostituire OpenVPN e IPSec nella maggior parte dei casi d'uso.

Requisiti

Per seguire questo tutorial, avrai bisogno di un VPS (Virtual Private Server) che possa accedere liberamente ai siti web bloccati (fuori dal tuo paese o sistema di filtraggio Internet). Raccomando Kamatera VPS, che include:

  • 30 giorni di prova gratuita.
  • A partire da $ 4 al mese (1 GB di RAM)
  • VPS basato su KVM ad alte prestazioni
  • 9 data center in tutto il mondo, inclusi Stati Uniti, Canada, Regno Unito, Germania, Paesi Bassi, Hong Kong e Israele.

Segui il tutorial collegato di seguito per creare il tuo server VPS Linux su Kamatera.

  • Come creare un server VPS Linux su Kamatera

Una volta che hai un VPS che esegue CentOS/Alma Linux/Rocky Linux, segui le istruzioni seguenti.

Questo tutorial presuppone che il server VPN e il client VPN eseguano entrambi CentOS/RHEL sistema operativo.

Passaggio 1:installa WireGuard su server e desktop CentOS/RHEL

Accedi al tuo server CentOS/RHEL, quindi esegui i seguenti comandi per installare WireGuard.

CentOS 8

sudo dnf install elrepo-release epel-release -ysudo dnf install kmod-wireguard wireguard-tools -y

RHEL 8

sudo dnf install https://www.elrepo.org/elrepo-release-8.el8.elrepo.noarch.rpmsudo dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest -8.noarch.rpmsudo dnf install kmod-wireguard wireguard-tools -y

CentOS/RHEL 7

sudo yum install epel-release https://www.elrepo.org/elrepo-release-7.el7.elrepo.noarch.rpmsudo yum install yum-plugin-elreposudo yum install kmod-wireguard wireguard-tools -y

Quindi usa gli stessi comandi per installare WireGuard sul tuo computer CentOS/RHEL locale (il client VPN).

Fase 2:genera una coppia di chiavi pubblica/privata

Server

Crea una directory per WireGuard.

sudo mkdir -p /etc/wireguard/

Eseguire il comando seguente sul server CentOS/RHEL per creare una coppia di chiavi pubblica/privata, che verrà salvata in /etc/wireguard/ directory.

wg genkey | sudo tee /etc/wireguard/server_private.key | wg pubkey | sudo tee /etc/wireguard/server_public.key

Cliente

Crea una directory per WireGuard.

sudo mkdir -p /etc/wireguard/

Esegui il comando seguente per creare una coppia di chiavi pubblica/privata sul computer CentOS/RHEL locale (il client VPN).

wg genkey | sudo tee /etc/wireguard/client_private.key | wg pubkey | sudo tee /etc/wireguard/client_public.key

Fase 3:crea il file di configurazione WireGuard

Server

Usa un editor di testo da riga di comando come Nano per creare un file di configurazione WireGuard sul server CentOS/RHEL. wg0 sarà il nome dell'interfaccia di rete.

sudo dnf install nanosudo nano /etc/wireguard/wg0.conf

Copia il testo seguente e incollalo nel tuo file di configurazione. Devi utilizzare la tua chiave privata del server e la chiave pubblica del client.

[Interfaccia]Indirizzo =10.10.10.1/24ListenPort =51820PrivateKey =cD+ZjXiVIX+0iSX1PNijl4a+88lCbDgw7kO78oXXLEc=[Peer]PublicKey =AYQJf6HbkQ0X0Xyt+cTMTuJe3RFwbuCMF46LKgTwzz4 =10.2=Consentito> 

Dove:

  • Indirizzo :Specificare l'indirizzo IP privato del server VPN. Qui sto usando l'intervallo di rete 10.10.10.0/24, quindi non entrerà in conflitto con l'intervallo di rete domestica. (La maggior parte dei router domestici utilizza 192.168.0.0/24 o 192.168.1.0/24). 10.10.10.1 è l'indirizzo IP privato per il server VPN.
  • Chiave privata :La chiave privata del server VPN, che può essere trovata in /etc/wireguard/server_private.key file sul server.
  • ListenPort :il server VPN WireGuard sarà in ascolto sulla porta UDP 51820, che è l'impostazione predefinita.
  • Chiave pubblica :la chiave pubblica del client VPN, che può essere trovata in /etc/wireguard/client_public.key file sul computer client.
  • IP consentiti :indirizzi IP che il client VPN può utilizzare. In questo esempio, il client può utilizzare solo l'indirizzo IP 10.10.10.2 all'interno del tunnel VPN.

Salva e chiudi il file. (Per salvare un file nell'editor di testo Nano, premi Ctrl+O , quindi premere Invio per confermare. Premi Ctrl+X per uscire.)

Modifica la modalità di autorizzazione dei file in modo che solo l'utente root possa leggere i file.

sudo chmod 600 /etc/wireguard/ -R

Cliente

Usa un editor di testo da riga di comando come Nano per creare un file di configurazione WireGuard sul tuo computer CentOS/RHEL locale. wg-client0 sarà il nome dell'interfaccia di rete.

sudo nano /etc/wireguard/wg-client0.conf

Copia il testo seguente e incollalo nel tuo file di configurazione. È necessario utilizzare la chiave privata del client e la chiave pubblica del server.

 [Interface] Indirizzo =10.10.10.2/24DNS =10.10.10.1PrivateKey =COFA + x5UvHF + a3xJ6enLatG + DoE3I5PhMgKrMKkUyXI =[Peer] =PublicKey vxyo4l4I3jWK + KZquNIDJF / hzQq29DOIxSUOrfNZZCs =AllowedIPs =0.0.0.0/0Endpoint =12.34.56.78:51820PersistentKeepalive =25

Dove:

  • Indirizzo :Specifica l'indirizzo IP privato del client VPN.
  • DNS :specificare 10.10.10.1 (il server VPN) come server DNS. Sarà configurato tramite resolvconf comando. Puoi anche specificare più server DNS per la ridondanza in questo modo:DNS = 10.10.10.1 8.8.8.8
  • Chiave privata :La chiave privata del client, che può essere trovata in /etc/wireguard/client_private.key file sul computer client.
  • Chiave pubblica :la chiave pubblica del server, che può essere trovata in /etc/wireguard/server_public.key file sul server.
  • IP consentiti :0.0.0.0/0 rappresenta l'intera Internet, il che significa che tutto il traffico verso Internet deve essere instradato tramite la VPN.
  • Endpoint :l'indirizzo IP pubblico e il numero di porta del server VPN. Sostituisci 12.34.56.78 con il vero indirizzo IP pubblico del tuo server.
  • PersistentKeepalive :invia un pacchetto vuoto autenticato al peer ogni 25 secondi per mantenere attiva la connessione. Se PersistentKeepalive non è abilitato, il server VPN potrebbe non essere in grado di eseguire il ping del client VPN.

Salva e chiudi il file.

Modifica la modalità file in modo che solo l'utente root possa leggere i file.

sudo chmod 600 /etc/wireguard/ -R

Fase 4:abilita l'inoltro IP sul server

Affinché il server VPN instrada i pacchetti tra i client VPN e Internet, è necessario abilitare l'inoltro IP. Modifica sysctl.conf file.

sudo nano /etc/sysctl.conf

Aggiungi la seguente riga alla fine di questo file.

net.ipv4.ip_forward =1

Salva e chiudi il file. Quindi applica le modifiche con il comando seguente. Il -p l'opzione caricherà le impostazioni di sysctl da /etc/sysctl.conf file. Questo comando conserverà le nostre modifiche durante i riavvii del sistema.

sudo sysctl -p

Fase 5:Configura IP Masquerading sul server

Esegui il comando seguente per abilitare il mascheramento IP per 10.10.10.0/24 sottorete nel firewall del server.

sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" indirizzo sorgente="10.10.10.0/24" masquerade'sudo systemctl reload firewalld

Questo nasconderà la tua rete VPN dal mondo esterno. Quindi Internet può vedere solo l'IP del tuo server VPN, ma non può vedere l'IP del tuo client VPN, proprio come il tuo router domestico nasconde la tua rete domestica privata.

Se il tuo CentOS/RHEL non riesce a trovare firewall-cmd comando, è necessario installare firewalld e avviare il servizio.

sudo dnf install firewalldsudo systemctl start firewalld

Fase 6:installa un risolutore DNS sul server

Poiché specifichiamo il server VPN come server DNS per il client, è necessario eseguire un risolutore DNS sul server VPN. Possiamo installare il server DNS bind9.

sudo dnf install bind

Avvia BIND 9 con:

sudo systemctl start named

E abilita l'avvio automatico all'avvio:

sudo systemctl enable named

Puoi verificarne lo stato con:

stato systemctl denominato

Esempio di output:

● named.service - Berkeley Internet Name Domain (DNS) Caricato:caricato (/usr/lib/systemd/system/named.service; abilitato; preimpostazione del fornitore:disabilita> Attivo:attivo (in esecuzione) da Sun 2020-05 -17 11:07:34 EDT; 9 secondi fa Processo:7203 ExecStop=/bin/sh -c /usr/sbin/rndc stop>
 /dev/null 2>&1 || /bin/kill -TE> Processo:7218 ExecStart =/usr/sbin/named -u named -c ${NAMEDCONF} $OPTIONS (code=exited,> Processo:7215 ExecStartPre=/bin/bash -c if [ ! "$DISABLE_ZONE_CHECKING" =="yes" ]; il> PID principale:7220 (nome) Attività:4 (limite:5045) Memoria:55,5 M CGroup:/system.slice/named.service └─7220 /usr/sbin/named -u named -c /etc/named.conf -4

Suggerimento:se il comando precedente non si chiude immediatamente, premi Q.

Modifica il file di configurazione principale di BIND /etc/named.conf .

sudo nano /etc/named.conf

Nelle options clausola, puoi trovare le due righe seguenti.

porta di ascolto 53 { 127.0.0.1; };ascolta su v6 porta 53 { ::1; };

Questo rende named ascolta solo su localhost. Se vuoi consentire ai client nella stessa rete di interrogare i nomi di dominio, commenta queste due righe. (aggiungi doppie barre all'inizio di ogni riga)

// porta in ascolto 53 { 127.0.0.1; };// ascolta su v6 porta 53 { ::1; };

Trova la riga seguente.

consenti-query { localhost; };

Aggiungi l'intervallo di rete 10.10.10.0/24 in modo che i client VPN possano inviare query DNS. Tieni presente che devi terminare ogni intervallo di rete con un punto e virgola.

consenti-query { localhost; 10.10.10.0/24; };

Salva e chiudi il file. Riavvia BIND9 per rendere effettive le modifiche.

sudo systemctl restart denominato

Quindi devi eseguire il comando seguente per consentire ai client VPN di connettersi alla porta 53.

sudo firewall-cmd --zone=public --permanent --add-rich-rule='rule family="ipv4" source address="10.10.10.0/24" accept'

Passaggio 7:apri la porta WireGuard nel firewall

Esegui il comando seguente per aprire la porta UDP 51820 sul server.

sudo firewall-cmd --permanent --add-port=51820/udpsudo systemctl ricarica firewalld

Fase 8:avvia WireGuard

server

Esegui il seguente comando sul server per avviare WireGuard.

sudo wg-quick up /etc/wireguard/wg0.conf

Per fermarlo, esegui

sudo wg-quick down /etc/wireguard/wg0.conf

Puoi anche utilizzare il servizio systemd per avviare WireGuard.

sudo systemctl start [email protetta]

Se l'avvio non è riuscito, dovresti controllare il registro per scoprire cosa c'è che non va.

sudo journalctl -eu [email protetta]

Abilita l'avvio automatico all'avvio del sistema con il comando seguente.

sudo systemctl enable [email protected]

Controlla il suo stato con il seguente comando. Il suo stato dovrebbe essere active (exited) .

stato systemctl [email protetta]

Ora il server WireGuard è pronto per accettare connessioni client.

Cliente

Avvia WireGuard.

sudo systemctl start [email protetta]

Se l'avvio non è riuscito, dovresti controllare il registro per scoprire cosa c'è che non va.

sudo journalctl -eu [email protetta]

Se vedi il seguente errore nel registro, puoi provare a riavviare il sistema operativo.

Risposte RTNETLINK:operazione non supportata

Abilita l'avvio automatico all'avvio del sistema.

sudo systemctl enable [email protected]

Controlla il suo stato:

stato systemctl [email protetta]

Ora vai su questo sito web:http://icanhazip.com/ per controllare il tuo indirizzo IP pubblico. Se tutto è andato bene, dovrebbe visualizzare l'indirizzo IP pubblico del tuo server VPN invece dell'indirizzo IP pubblico del tuo computer client.

Puoi anche eseguire il comando seguente per ottenere l'indirizzo IP pubblico corrente.

curl https://icanchazip.com

Suggerimenti per la risoluzione dei problemi

Puoi eseguire il ping dal server VPN al client VPN (ping 10.10.10.2 ) per vedere se il tunnel funziona. Se vedi il seguente messaggio di errore nel ping,

ping:sendmsg:chiave richiesta non disponibile

potrebbe essere che il AllowedIPs parametro è sbagliato, come un errore di battitura.

Se il tunnel VPN viene stabilito correttamente, ma l'indirizzo IP pubblico del client non cambia, è perché il mascheramento nel firewall non funziona. Una volta ho avuto un errore di battitura nelle regole del firewall, che ha impedito al mio computer di navigare in Internet.

Tieni presente che non consiglio di utilizzare SaveConfig=true nel [Interface] sezione del file di configurazione di WireGuard. SaveConfig dice a WireGuard di salvare la configurazione di runtime allo spegnimento. Quindi, se aggiungi ulteriori [Peer] nel file di configurazione e quindi riavvia WireGuard, le tue configurazioni appena aggiunte verranno sovrascritte.

Se la tua VPN continua a non funzionare, prova a riavviare il server VPN.

sudo systemctl restart [email protetta]

Quindi arresta il client VPN.

sudo systemctl stop [email protetta]

E aggiorna i pacchetti software sul client VPN.

aggiornamento sudo dnf

Quindi, riavvia il client VPN.

sudo shutdown -r nowsudo systemctl start [email protected]

Aggiunta di client VPN aggiuntivi

WireGuard è progettato per associare un indirizzo IP a un client VPN. Per aggiungere più client VPN, devi creare una coppia di chiavi privata/pubblica univoca per ciascun client, quindi aggiungere la chiave pubblica di ciascun client VPN nel file di configurazione del server (/etc/wireguard/wg0.conf ) in questo modo:

 [Interface] Indirizzo =10.10.10.1/24PrivateKey =UIFH + XXjJ0g0uAZJ6vPqsbb / o68SYVQdmYJpy / FlGFA =ListenPort =51820 [Peer] =PublicKey 75VNV7HqFh + 3QIT5OHZkcjWfbjx8tc6Ck62gZJT / KRA =AllowedIPs =10.10.10.2/32[Peer]PublicKey =YYh4 / 1Z/3rtl0i7cJorcinB7T4UOIzScifPNEIESFD8=IP consentiti =10.10.10.3/32[Peer]PublicKey =EVstHZc6QamzPgefDGPLFEjGyedJk6SZbCJttpzcvC8=IP consentiti =10.10.10.4/32

Ogni client VPN avrà un indirizzo IP privato statico (10.10.10.2, 10.10.10.3, 10.10.10.4, ecc.). Riavvia il server WireGuard per rendere effettive le modifiche.

sudo systemctl restart [email protetta]

Quindi aggiungi la configurazione WireGuard su ciascun client VPN come al solito.

Routing delle policy, tunneling diviso e kill switch VPN

Ora ti mostrerò come utilizzare il instradamento delle norme , tunnel diviso e kill switch VPN con WireGuard VPN. Nota che non è consigliabile usarli insieme. Se utilizzi il routing dei criteri, non dovresti abilitare lo split tunneling o il kill switch VPN e viceversa.

Indirizzamento delle politiche

Per impostazione predefinita, tutto il traffico sul client VPN verrà instradato attraverso il server VPN. A volte potresti voler instradare solo un tipo specifico di traffico, in base al protocollo del livello di trasporto e alla porta di destinazione. Questo è noto come policy routing.

Il routing dei criteri è configurato sul computer client e prima è necessario interrompere la connessione VPN.

sudo systemctl stop [email protetta]

Quindi modifica il file di configurazione del client.

sudo nano /etc/wireguard/wg-client0.conf

Ad esempio, se aggiungi le seguenti 3 righe in [interface] sezione, quindi WireGuard creerà una tabella di routing denominata "1234" e aggiungerà la regola IP nella tabella di routing. In questo esempio, il traffico verrà instradato attraverso il server VPN solo quando TCP viene utilizzato come protocollo del livello di trasporto e la porta di destinazione è 25, ovvero quando il computer client invia e-mail.

Table =1234PostUp =regola ip aggiungi ipproto tcp dport 25 table 1234PreDown =regola ip elimina ipproto tcp dport 25 table 1234

Salva e chiudi il file. Quindi riavvia il client WireGuard.

sudo systemctl start [email protetta]

Traforo diviso

Per impostazione predefinita, tutto il traffico sul client VPN verrà instradato attraverso il server VPN. Ecco come abilitare lo split tunneling, quindi solo il traffico verso il 10.10.10.0/24 L'intervallo IP sarà incanalato tramite WireGuard VPN. Ciò è utile quando desideri creare una rete privata per diversi server cloud, perché i client VPN verranno eseguiti su server cloud e se utilizzi un tunnel VPN completo, probabilmente perderai la connessione ai server cloud.

Modifica il file di configurazione del client.

sudo nano /etc/wireguard/wg-client0.conf

Cambia

IP consentiti =0.0.0.0/0

A

IP consentiti =10.10.10.0/24

Quindi il traffico verrà instradato tramite VPN solo quando l'indirizzo di destinazione è nell'intervallo IP 10.10.10.0/24. Salva e chiudi il file. Quindi riavvia il client WireGuard.

sudo systemctl restart [email protetta]

VPN Kill Switch

Per impostazione predefinita, il tuo computer può accedere a Internet tramite il normale gateway quando la connessione VPN viene interrotta. Potresti voler abilitare la funzione kill switch, che impedisce il flusso di pacchetti non crittografati attraverso interfacce non WireGuard.

Interrompi il processo del client WireGuard.

sudo systemctl stop [email protetta]

Modifica il file di configurazione del client.

sudo nano /etc/wireguard/wg-client0.conf

Aggiungi le seguenti due righe in [interface] sezione.

PostUp =iptables -I OUTPUT ! -o %i -m segno ! --mark $(wg mostra %i fwmark) -m addrtype ! --dst-type LOCALE -j REJECTPreDown =iptables -D OUTPUT ! -o %i -m segno ! --mark $(wg mostra %i fwmark) -m addrtype ! --dst-type LOCALE -j RIFIUTA

In questo modo:

[Interface]Address =10.10.10.2/24DNS =10.10.10.1PrivateKey =cOFA+x5UvHF+a3xJ6enLatG+DoE3I5PhMgKrMKkUyXI=PostUp =iptables -I OUTPUT ! -o %i -m segno ! --mark $(wg mostra %i fwmark) -m addrtype ! --dst-type LOCALE -j REJECTPreDown =iptables -D OUTPUT ! -o %i -m segno ! --mark $(wg mostra %i fwmark) -m addrtype ! --dst-type LOCAL -j REJECT[Peer]PublicKey =RaoAdsIEIwgV9DHNSubxWVG+nZ1GP/c3OU6A/efBJ0I=AllowedIPs =0.0.0.0/0Endpoint =12.34.56.78:51820PersistentKeepalive =25

Salva e chiudi il file. Quindi avvia il client WireGuard.

sudo systemctl start [email protetta]

Cent OS
  1. Come configurare Wireguard VPN su CentOS 8

  2. Configura il server SysLog su CentOS 6 / RHEL 6

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

  4. Come configurare un server SFTP su Rocky Linux/CentOS 8 Server

  5. Come configurare WireGuard VPN su CentOS 8

Configura il tuo server VPN WireGuard su Ubuntu 20.04/18.04

Come installare e configurare Gitlab CE Server su Centos 8

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 SSH su CentOS e RHEL