Come posso configurare una VPN PPTP sul mio server Ubuntu?


16

Supponendo di avere un server privato virtuale da qualcuno come Linode , che esegue Ubuntu, come posso configurare facilmente una VPN PPTP in modo che i client Ubuntu possano connettersi ad essa?

Per impostazione predefinita, Ubuntu offre la connessione a queste reti PPTP. Voglio configurarlo in modo che sia molto facile connettersi (vale a dire senza installare alcun pacchetto sul client).

Risposte:


28

Installazione minima del server assoluto

Quelle che seguono sono le istruzioni minime assolute necessarie per ottenere un server VPN PPTP di base in esecuzione su Ubuntu. I clienti saranno quindi in grado di VPN nel server e instradare il loro traffico Internet in modo che passi attraverso il server a Internet. Come sempre, consulta la documentazione completa per capire cosa sta facendo tutto.

Innanzitutto, installa il software richiesto:

sudo apt-get install pptpd

In secondo luogo, abilitare ip_forwardnel kernel per IPv4 decommentando la riga associata in /etc/sysctl.conf :

sudo sed -i -r 's/^\s*#(net\.ipv4\.ip_forward=1.*)/\1/' /etc/sysctl.conf
# Reload the config file to have the change take effect immediately.
sudo -i sysctl -p

In terzo luogo, abilitare NAT (se non è già abilitato) in modo che gli utenti sulla rete VPN privata possano avere i loro pacchetti instradati su Internet:

OUTIF=`/sbin/ip route show to exact 0/0 | sed -r 's/.*dev\s+(\S+).*/\1/'`
sudo -i iptables --table nat --append POSTROUTING --out-interface $OUTIF --jump MASQUERADE
# Enable NAT on boot from the rc.local script.
CMD="iptables --table nat --append POSTROUTING --out-interface $OUTIF --jump MASQUERADE"
sudo sed -i "\$i$CMD\n" /etc/rc.local

Nota: questa guida presuppone che non sia configurato alcun firewall sul server. Se si dispone di un firewall sul server, come UFW , consultare invece la documentazione pertinente .

In quarto luogo, per ogni utente VPN, creare un account nel file / etc / ppp / chap-secrets . Sostituisci $USERcon il nome utente effettivo che desideri utilizzare per quell'utente VPN.

KEY=`head -c 20 /dev/urandom | sha1sum | nawk '{print $1}'`
echo "$USER pptpd $KEY *" | sudo tee -a /etc/ppp/chap-secrets

Finalmente sei pronto per ...

Configura il client

Nell'applet Network Manager , seleziona Connessioni VPNConfigura VPN , quindi fai clic su Aggiungi . Nella schermata successiva seleziona PPTP per il tipo di VPN, quindi fai clic su Crea .

inserisci qui la descrizione dell'immagine

In questa finestra, inserisci il nome host o l'IP del tuo server insieme al nome utente e alla chiave che hai aggiunto al file / etc / ppp / chap-secrets sul server.

Ora fai clic su Avanzate .

inserisci qui la descrizione dell'immagine

In questa finestra, abilita "Usa crittografia Point-to-Point (MPPE)" e seleziona la sicurezza a 128 bit . Disabilita l'uso dell'autenticazione MSCHAP (lascia MSCHAPv2 abilitato).

Infine, fai clic su OK, quindi su Salva per chiudere la finestra precedente.

È ora possibile testare la connessione VPN accedendo all'applet Network Manager → Connessioni VPN e selezionando la connessione appena creata. Assicurati di ricevere un messaggio che informi che la connessione VPN è andata a buon fine, quindi vai a un sito Web di controllo IP per verificare che il tuo IP sia ora visualizzato come IP del server.

Se viene visualizzato un messaggio che informa che la connessione VPN al server non è riuscita: verificare innanzitutto di aver inserito correttamente le impostazioni del client; in secondo luogo, verificare che il client disponga della connettività di rete alla porta TCP 1723 sul server; infine, controlla il file di registro / var / log / messaggi sul server per ulteriori indizi. Se la tua connessione VPN ha esito positivo, ma successivamente non riesci a navigare su alcun sito Web dal client, consulta questa guida diagnostica incredibilmente utile sul sito Web pptpd.

Appunti

Se la rete locale a cui si è connessi utilizza le sottoreti 192.168.0.0/24 e 192.168.1.0/24, si verificheranno problemi perché è quello che il server PPTP utilizza per impostazione predefinita. Dovrai configurare PPTP per usare diverse sottoreti in pptpd.conf .

Vi sono numerose altre modifiche alla configurazione che potresti voler apportare. Ad esempio, tutte le ricerche dei nomi di dominio verranno comunque interrogate utilizzando il server DNS locale anziché passare attraverso il server PPTP. Prenditi il ​​tempo di leggere tutta la documentazione per scoprire come modificare questa impostazione e molte altre.


4

Questo tutorial che ho scritto ti guiderà attraverso. Dovrebbe aiutarti a evitare errori comuni commessi da persone che usano VPS.

Prima accedi al tuo pannello VPS e abilita TUN / TAP e PPP . Se non si dispone di tale opzione, contattare il proprio ISP per abilitarlo.

inserisci qui la descrizione dell'immagine

Prima installa questo pacchetto:

sudo apt-get install pptpd

Poiché non vogliamo che la nostra VPN sia pubblica, creeremo utenti.
Sto usando VI puoi usare NANO o qualunque editor di testo ti piaccia

vi /etc/ppp/chap-secrets

Il formato è

[username] [service] [password] [ip]

Esempio

john pptpd johnspassword *

* significa che l'accesso da tutti gli indirizzi IP è consentito, specificare l'IP solo se ne hai uno statico.

Modifica delle impostazioni PPTPD

vi /etc/pptpd.conf

Cerca le impostazioni localip e remoteip. Rimuovere il #(carattere di commento) per entrambi in modo che queste impostazioni vengano effettivamente riconosciute. Cambia localip nell'IP del tuo server. Se non conosci l'IP del tuo server, puoi guardare nel tuo pannello di controllo VPS.

Il remoteip è fondamentalmente l'intervallo IP assegnato ai client (computer connessi alla tua VPN). Ad esempio, se si desidera il seguente intervallo IP: 192.168.120.231-235, il server VPN sarà in grado di assegnare 192.168.120.232, 192.168.120.233, 192.168.120.234 e 192.168.120.235 ai client. Sta a te cosa vuoi usare per questo campo.

Personalmente scelgo queste impostazioni:

localip 10.0.0.1
remoteip 10.0.0.100-200

Quindi posso connettere circa 200 client.

Aggiungi server DNS a /etc/ppp/pptpd-options

ms-dns 8.8.8.8
ms-dns 8.8.4.4

Puoi aggiungere questo alla fine del file o trovare quelle righe, decommentarle e modificare gli IP nel DNS pubblico desiderato.

Imposta l'inoltro

È importante abilitare l'inoltro IP sul server PPTP. Ciò ti consentirà di inoltrare i pacchetti tra IP pubblico e IP privato impostati con PPTP. Basta modificare /etc/sysctl.conf e aggiungere la seguente riga se non esiste già:

net.ipv4.ip_forward = 1

Per rendere attive le modifiche, esegui sysctl -p

Creare una regola NAT per iptables

Questa è una parte importante, se stai usando VPS probabilmente non userai eth0 ma venet0 invece, dovresti controllare quale interfaccia hai eseguendo ifconfig

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE && iptables-save

Se desideri che anche i tuoi client PPTP parlino tra loro, aggiungi le seguenti regole iptables:

iptables --table nat --append POSTROUTING --out-interface ppp0 -j MASQUERADE
iptables -I INPUT -s 10.0.0.0/8 -i ppp0 -j ACCEPT
iptables --append FORWARD --in-interface eth0 -j ACCEPT

Ancora una volta, è necessario sostituire eth0 con venet0 se si utilizza VPS.

Consiglierei di correre

sudo iptables-save

Ora il tuo server PPTP funge anche da router.

È possibile eseguire questo comando in modo che il servizio VPN venga avviato all'avvio

systemctl enable pptpd

Consiglio di installare iptables-persistent in modo che le regole rimangano anche dopo il riavvio

sudo apt-get install -y iptables-persistent

Il link non andrà da nessuna parte, principalmente non rilascerò mai questo nome di dominio, in secondo luogo è il mio server di hosting, in terzo luogo mi creda: DI davvero non posso semplicemente copiare e incollare tutorial qui è troppo lungo.
Luka,

Temo che non accettiamo risposte solo link su questo sito. Quindi questa risposta sarà probabilmente presto cancellata, come puoi vedere, è già nella coda di revisione (link nel mio commento precedente).

Grazie Zanna! @Paranoid Panda, allora dovresti rimuovere la risposta sopra la mia, che ha 2 voti perché contiene link: P
Luka,

1
Il problema qui era che la risposta era solo link. Ciò significa che se il collegamento dovesse interrompersi per qualsiasi motivo (anche se si presume che il collegamento non si interrompa mai), la risposta non sarebbe più valida. Ora che la risposta è diventata autosufficiente (e usando il link come riferimento), la risposta va bene così com'è. La risposta in questione è attualmente rimossa, a meno che non venga adattata come il tuo post.
Kaz Wolfe,

1
Prego, grazie per aver realizzato il tutorial. La prossima volta non abbiate paura di scrivere un post di questa lunghezza; è completamente accettabile.
Zanna,

3

Segui questo tutorial: Server VPN PPTP con Ubuntu

  1. In Selezione software selezionare il server OpenSSH - per la gestione remota della macchina - e la selezione manuale del pacchetto per il pacchetto pptpd effettivo. Se si desidera più servizi, ad esempio se si desidera utilizzare il computer anche come server Web, è possibile ovviamente selezionare il software aggiuntivo. Per motivi di sicurezza, in genere consiglio alle persone di eseguirne uno dal servizio accessibile esterno per macchina se installato in un ambiente critico, ma dipende da te.

  2. Nella selezione manuale, vai ai pacchetti non installati> net dove troverai pptpd. Selezionalo e premi due volte 'g' per installare il pacchetto.

  3. Lascia terminare l'installazione e riavvia il sistema.

  4. SSH nel tuo computer appena configurato ed esegui sudo aptitude update && sudo aptitude safe-upgradeprima di aggiornare tutti i pacchetti. Riavvia se necessario.

  5. Apri il file pptpd.conf: sudo nano /etc/pptpd.confregola le impostazioni IP in basso in base alle tue esigenze. In IP locale inserisci l'IP nella rete locale del tuo server VPN (se non lo conosci digita "sudo ifconfig" e ti mostrerà le tue interfacce di rete e gli IP assegnati). In tal caso, consiglio di impostare un IP statico in / etc / network / interfaces o nella configurazione del router.

  6. Se lo desideri, puoi modificare il nome host in /etc/ppp/pptpd-options

  7. Specificare i nomi utente e le password che si desidera dare accesso alla VPN: sudo nano /etc/ppp/chap-secrets. Se hai modificato il nome host nel passaggio precedente, assicurati di digitare lo stesso nome host ora inserver

    Esempio:

    # client        server  secret                  IP addresses
    eubolist   pptpd   myübersecretpassword   *
    

    Come in pptp, la sicurezza dei file chiave non dipende esclusivamente dalla password. Ecco perché dovresti scegliere una password casuale lunga (ad es. 32 caratteri). È possibile generare una tale password qui.

  8. Ora dobbiamo configurare ip-masquerading: sudo nano /etc/rc.local

    Aggiungi le seguenti righe sopra la riga che dice 'exit 0'

    # PPTP IP forwarding
    iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
    

    Opzionalmente, ti consiglio di proteggere il tuo server SSH dagli attacchi di forza bruta:

    #SSH Brute Force Protection
    iptables -A INPUT -i eth0 -p tcp --dport 22 -m state --state NEW -m recent --set --name SSH
    iptables -A INPUT -i eth0 -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 60 --hitcount 8 --rttl --name SSH -j
    

    FAR CADERE

    (anche da inserire sopra 'exit 0')

    Potrebbe essere necessario cambiare 'eth 0' in un'altra interfaccia, a seconda dell'interfaccia configurata per connettersi a Internet sul proprio computer.

  9. Infine, decommenta questa riga in /etc/sysctl.conf:

    net.ipv4.ip_forward=1
    
  10. Reboot

  11. Se il tuo server VPN non si connette direttamente a Internet, potrebbe essere necessario inoltrare la porta 1723 TCP e GRE all'IP LAN del tuo server VPN. Consultare il manuale del router o portforward.com per istruzioni specifiche del fornitore. Ancora una volta, potrebbe essere necessario assegnare un IP statico in /etc/network/interfaces.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.