PPTP con Linux Debian (aggiornato a Squeeze)

Questi sono poco piu` che appunti su come mettere online un semplice server PPTP (un protocollo che a mio avviso dovrebbe essere abolito come l' FTP e il fax) usando Linux.

Il PPTP ha un sacco di problemi:

Nonostante questo, e` usatissimo in quanto e` la VPN standard di Windows. Come siamo messi? Male, molto male.

Installazione di poptop

In Debian, basta installare il pacchetto pptpd con le sue dipendenze, prima fra le quali ovviamente il ppp. Esiste anche il client, che e` "pptp-linux", ma che qui non trattero`. Per poter usare la crittografia e` necessario avere il supporto MPPE nel ppp, in Debian c'e`.

Configurazione di poptop

La configurazione si fa in due passi, una e` la configurazione del demone del pptp e l'altra contiene i parametri che il pptp passa al ppp.

Autenticazione

Per come e` configurato sopra, il server ppptp autentica gli utenti in chap, quindi dovremo lavorare sul file /etc/ppp/chap-secrets, del quale riporto un esempio qui (l'utente "DOMAIN\\user1" e` un utente che usa anche il dominio nell'autenticazione, si veda la voce "Configurazione dei client Windows" in seguito):

# Secrets for authentication using CHAP
# client        server  secret                  IP addresses

  kurgan        pptpd   lamiapassword           *
  pippo         pptpd   pluto                   192.168.35.160
  paperino      pptpd   quack                   *
  DOMAIN\\user1 pptpd   pippero                 *

Questo file contiene lo username dell'utente remoto, il nome del "server" (che occorre se si hanno piu` istanze di qualcosa che usa il ppp e deve autenticare degli utenti), e la password dell'utente. A seguire c'e` un asterisco che significa "prendi un ip a caso fra quelli disponibili" oppure un indirizzo IP preciso da assegnare sempre a quel client li`.

Firewall

Il server ppptp deve accettare connessioni tcp sulla porta di "controllo" del protocollo, e poi il protocollo GRE. Una configurazione valida per iptables e` questa (supponendo che eth1 sia la WAN del nostro server pptp/firewall):

iptables -A INPUT -i eth1 -m state --state NEW -p tcp --dport 1723 -j ACCEPT
iptables -A INPUT -i eth1  --protocol 47 -m state --state NEW      -j ACCEPT

Configurazione dei client Windows

Sul client Windows (o altro client) e` sufficiente impostare lo username, la password e l'indirizzo del gateway pptp remoto (il pptp server, lato WAN). Alcuni client prevedono un campo "domain". Se potete lo lasciate vuoto. Se il client si impunta a dover inserire un dominio, probabilmente cerchera` di autenticare sul server come "dominio\utente", e voi dovrete configurare di conseguenza il file degli utenti (chap-secrets) in modo da creare un utente che corrisponda alla stringa che il client vi manda.

Problemi di routing sui client

Di default il client Windows quando stabilisce una connessione PPTP definisce una regola che fa passare TUTTO il traffico non locale verso l'interfaccia della VPN. Il server non ha una maniera standard (windows usa un sistema tutto suo che fa uso di un parametro del DHCP sul server) per passare al client informazioni sul routing, quindi se non vi va bene il metodo di windows (default gateway sulla vpn) dovrete arrangiarvi a farvi il routing lato client come meglio credete. Io non ho mai approfondito la cosa perche` cerco di evitare il piu` possibile di usare il PPTP se posso usare alternative, come per esempio l'ottima openvpn.

LinuxDebian/PPTP (last edited 2011-08-16 15:28:43 by Kurgan)