¿Cómo configuro una VPN PPTP en mi propio servidor Ubuntu?

16

Suponiendo que tengo un servidor privado virtual de alguien como Linode , que ejecuta Ubuntu, ¿cómo configuro fácilmente una VPN PPTP para que los clientes de Ubuntu puedan conectarse a ella?

Por defecto, Ubuntu ofrece conectarse a estas redes PPTP. Quiero configurarlo de tal manera que sea muy fácil conectarse (es decir, sin instalar ningún paquete en el cliente).

Stefano Palazzo
fuente

Respuestas:

28

La configuración mínima absoluta del servidor

Lo que sigue son las instrucciones mínimas absolutas que necesita para obtener un servidor VPN PPTP básico que se ejecute en Ubuntu. Luego, los clientes podrán hacer una VPN en el servidor y enrutar su tráfico de Internet para que atraviese el servidor hacia Internet. Como siempre, consulte la documentación completa para comprender qué está haciendo todo.

Primero, instale el software requerido:

sudo apt-get install pptpd

Segundo, habilite ip_forwarden el kernel para IPv4 descomentando la línea asociada en /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

En tercer lugar, habilite NAT (si aún no está habilitado) para que los usuarios en la red VPN privada puedan enrutar sus paquetes a 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: Esta guía asume que no tiene un firewall configurado en el servidor. Si tiene un servidor de seguridad en el servidor, como UFW , consulte la documentación relevante .

Cuarto, para cada usuario de VPN, cree una cuenta en el archivo / etc / ppp / chap-secrets . Reemplace $USERcon el nombre de usuario real que desea usar para ese usuario de VPN.

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

Finalmente, estás listo para ...

Configurar el cliente

En el applet Network Manager , seleccione Conexiones VPNConfigurar VPN , luego haga clic en Agregar . En la siguiente pantalla, seleccione PPTP para el tipo de VPN, luego haga clic en Crear .

ingrese la descripción de la imagen aquí

En esta ventana, ingrese el nombre de host o IP de su servidor junto con el nombre de usuario y la clave que agregó al archivo / etc / ppp / chap-secrets en el servidor.

Ahora haga clic en Avanzado .

ingrese la descripción de la imagen aquí

En esta ventana, active "Usar cifrado punto a punto (MPPE)" y seleccione seguridad de 128 bits . Deshabilite el uso de la autenticación MSCHAP (deje habilitado MSCHAPv2 ).

Finalmente, haga clic en Aceptar y luego en Guardar para cerrar la ventana anterior.

Ahora puede probar la conexión VPN yendo al applet Network Manager → Conexiones VPN y seleccionando la conexión que acaba de crear. Asegúrese de recibir un mensaje que indique que la conexión VPN fue exitosa, luego navegue a un sitio web de verificación de IP para verificar que su IP ahora aparezca como la IP del servidor.

Si recibe un mensaje que dice que la conexión VPN al servidor falló: primero verifique que ingresó correctamente la configuración del cliente; segundo, verifique que el cliente tenga conectividad de red al puerto TCP 1723 en el servidor; finalmente, verifique el archivo de registro / var / log / messages en el servidor para obtener más pistas. Si su conexión VPN tiene éxito, pero posteriormente no puede navegar a ningún sitio web desde el cliente, consulte esta guía de diagnóstico increíblemente útil en el sitio web pptpd.

Notas

Si la red local a la que está conectado usa las subredes 192.168.0.0/24 y 192.168.1.0/24, tendrá problemas porque eso es lo que el servidor PPTP usa de manera predeterminada. Deberá configurar PPTP para utilizar diferentes subredes en pptpd.conf .

Hay muchos otros cambios de configuración que puede hacer. Por ejemplo, todas sus búsquedas de nombres de dominio seguirán siendo consultadas utilizando su servidor DNS local en lugar de pasar por el servidor PPTP. Tómese el tiempo de leer la documentación completa para descubrir cómo cambiar esta configuración y muchas otras.

Michael Kropat
fuente
4

Este tutorial que escribí te guiará. Debería ayudarlo a evitar errores comunes cometidos por personas que usan VPS.

Primero inicie sesión en su Panel VPS y habilite TUN / TAP y PPP . Si no tiene esa opción, póngase en contacto con su ISP para habilitar esto por usted.

ingrese la descripción de la imagen aquí

Primero instale este paquete:

sudo apt-get install pptpd

Debido a que no queremos que nuestra VPN sea pública, vamos a crear usuarios.
Estoy usando VI, puedes usar NANO o el editor de texto que quieras

vi /etc/ppp/chap-secrets

El formato es

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

Ejemplo

john pptpd johnspassword *

* significa que el acceso desde todas las direcciones IP está permitido, especifique IP solo si tiene una estática.

Edición de la configuración de PPTPD

vi /etc/pptpd.conf

Busque la configuración localip y remoteip. Elimine el #(carácter de comentario) para ambos para que esta configuración se reconozca realmente. Cambie localip a la IP de su servidor. Si no conoce la IP de su servidor, puede buscar en el panel de control de su VPS.

El control remoto es básicamente el rango de IP que los clientes (computadoras que están conectadas a su VPN) serán asignados. Por ejemplo, si desea el siguiente rango de IP: 192.168.120.231-235, su servidor VPN podrá asignar 192.168.120.232, 192.168.120.233, 192.168.120.234 y 192.168.120.235 a clientes. Depende de usted lo que quiere usar para este campo.

Personalmente elijo esta configuración:

localip 10.0.0.1
remoteip 10.0.0.100-200

Entonces puedo conectar unos 200 clientes.

Agregar servidores DNS a /etc/ppp/pptpd-options

ms-dns 8.8.8.8
ms-dns 8.8.4.4

Puede agregar esto al final del archivo o buscar esas líneas, descomentarlas y cambiar las IP a su DNS público deseado.

Configurar reenvío

Es importante habilitar el reenvío de IP en su servidor PPTP. Esto le permitirá reenviar paquetes entre IP públicas e IP privadas que configure con PPTP. Simplemente edite /etc/sysctl.conf y agregue la siguiente línea si ya no existe:

net.ipv4.ip_forward = 1

Para hacer cambios activos, ejecute sysctl -p

Crear una regla NAT para iptables

Esta es una parte importante, si está utilizando VPS probablemente no usará eth0 sino venet0, debe verificar qué interfaz tiene ejecutando ifconfig

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

Si también desea que sus clientes PPTP se comuniquen entre sí, agregue las siguientes reglas de 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

Una vez más, debe reemplazar eth0 con venet0 si está utilizando VPS.

Recomendaría correr

sudo iptables-save

Ahora su servidor PPTP también actúa como un enrutador.

Puede ejecutar este comando para que el servicio VPN se inicie en el arranque

systemctl enable pptpd

Recomiendo instalar iptables-persistent para que las reglas se mantengan incluso después de reiniciar

sudo apt-get install -y iptables-persistent
Luka
fuente
El enlace no irá a ninguna parte, principalmente nunca lanzaré este nombre de dominio, en segundo lugar es mi servidor de alojamiento, en tercer lugar créanme: DI realmente no puedo simplemente copiar y pegar el tutorial aquí, es demasiado largo.
Luka
Me temo que no aceptamos respuestas de solo enlace en este sitio. Por lo tanto, esta respuesta probablemente se eliminará pronto, como puede ver, ya está en la cola de revisión (enlace en mi comentario anterior).
Zanna muchas gracias! @Paranoid Panda, entonces deberías eliminar la respuesta sobre la mía, que tiene 2 votos porque contiene el enlace: P
Luka
1
El problema aquí era que la respuesta era solo de enlace. Esto significa que si el enlace se cayera por alguna razón (incluso si el enlace supuestamente nunca se caiga), la respuesta se volvería inválida. Ahora que la respuesta se ha vuelto independiente (y usa el enlace como referencia), la respuesta está bien tal cual. La respuesta en cuestión se está eliminando actualmente, a menos que se adapte como lo hizo su publicación.
Kaz Wolfe
1
De nada, gracias por hacer el tutorial. La próxima vez no tengas miedo de hacer una publicación de esta longitud; Es completamente aceptable.
Zanna
3

Siga este tutorial: Servidor VPN PPTP con Ubuntu

  1. En la selección de software, seleccione el servidor OpenSSH, para la administración remota de la máquina, y la selección manual de paquetes para el paquete pptpd real. Si desea más servicios, por ejemplo, si desea utilizar la computadora también como servidor web, puede seleccionar el software adicional. Por razones de seguridad, generalmente aconsejo a las personas que solo ejecuten uno desde el servicio externo accesible por máquina si está configurado en un entorno crítico, pero realmente depende de usted.

  2. En la selección manual, navegue a paquetes no instalados> net donde encontrará pptpd. Selecciónelo y presione 'g' dos veces para instalar el paquete.

  3. Deje que finalice la instalación y reinicie su sistema.

  4. SSH en su máquina recién configurada y ejecute sudo aptitude update && sudo aptitude safe-upgradeprimero para actualizar todos los paquetes. Reiniciar si es necesario.

  5. Abra el archivo pptpd.conf: sudo nano /etc/pptpd.confajuste la configuración de IP en la parte inferior a sus necesidades. En IP local, ingrese la IP en la red local de su servidor VPN (si no la conoce, escriba 'sudo ifconfig' y le mostrará sus interfaces de red y las IP asignadas). Para el caso, recomiendo configurar una IP estática en / etc / network / interfaces o en la configuración de su enrutador.

  6. Si lo desea, puede cambiar el nombre de host en /etc/ppp/pptpd-options

  7. Especificar los nombres de usuario y contraseñas que desea conceder acceso a la VPN: sudo nano /etc/ppp/chap-secrets. Si cambió el nombre de host en el paso anterior, asegúrese de escribir el mismo nombre de host ahora enserver

    Ejemplo:

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

    Como en pptp no hay seguridad de archivo de claves depende únicamente de la contraseña. Es por eso que debe elegir una contraseña larga (por ejemplo, 32 caracteres), aleatoria. Puede generar dicha contraseña aquí.

  8. Ahora necesitamos configurar ip-masquerading: sudo nano /etc/rc.local

    Agregue las siguientes líneas sobre la línea que dice 'salir 0'

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

    Opcionalmente, recomiendo asegurar su servidor SSH contra ataques de fuerza 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
    

    SOLTAR

    (también se debe insertar sobre 'salida 0')

    Puede que tenga que cambiar 'eth 0' a otra interfaz, dependiendo de qué interfaz esté configurada para conectarse a Internet en su máquina.

  9. Por último, descomente esta línea en /etc/sysctl.conf:

    net.ipv4.ip_forward=1
    
  10. Reiniciar

  11. Si su servidor vpn no se conecta directamente a Internet, es posible que deba reenviar el puerto 1723 TCP y GRE a la IP de LAN de su servidor vpn. Consulte el manual de su enrutador o portforward.com para obtener instrucciones específicas del proveedor. De nuevo, es posible que deba asignar una dirección IP estática /etc/network/interfaces.

Ilias
fuente