PPTP para túneles VPN de Windows a Linux

por admin

Para instalar en Debian un servidor VPN tipo PPTP necesitamos el paquete pptpd (en otras distribuciones puede variar).

apt-get install pptpd

Para el ejemplo imaginaremos un servidor Linux con dos interfaces: una pública donde recibe las peticiones y otra privada (p. ej. 192.168.1.1).
El demonio pptpd se queda escuchando al puerto 1723 para peticiones de clientes. Una vez recibida una petición pasará el control de autentifiación al demonio pppd. Para conexiones desde fuera necesitaremos abrir dicho puerto en el router.

El fichero de configuración /etc/pptpd.config:
speed 115200
#en verdad conectará a la velocidad máxima de la red
option /etc/ppp/pptpd-options
localip 192.168.1.1
remoteip 192.168.1.230-239

En el fichero /etc/ppp/pptp-options pondremos:
name servername
domain domainname
auth
ms-dns 62.37.228.20
netmask 255.255.255.0
nodefaultroute
proxyarp
lock

Y en el fichero /etc/ppp/pap-secrets algo como:
# client server secret IP addresses
diego * 123asd *

(Podemos seleccionar que ip recibirá cada usuario conectado, o que el servidor la asigne dentro del rango definido en el archivo /etc/ppp/pptpd-options)

Para poder acceder a los servicios de otros equipos de la red, tendriamos que tener una configuración de iptables al menos así:
iptables -F FORWARD
iptables -P FORWARD ACCEPT
echo 1 > /proc/sys/net/ipv4/ip_forward
#esto puede ser inseguro.

y con estas reglas de iptables acabamos.

Compartelo:
  • Meneame
  • BarraPunto
  • Digg
  • del.icio.us
  • Facebook
  • Mixx
  • Google
Relacionado:
Documento para recuperar Windows con Linux
VLC Video Lan
Samba como servidor de archivos en ubuntu 7.10
OpenOffice.org 3.2.0 disponible

5 Comentarios para“PPTP para túneles VPN de Windows a Linux”

  1. Hola gracias de antemano por tu aporte

    tengo una serie de dudas respecto a VPN con PPTPD, la primera es en el archivo que señalas para configuración “/etc/ppp/pptp-options” en la parte donde das “ms-dns 62.37.228.20″, quiero saber esa dirección a que se refiere?, de nuevo disculpa si es una pregunta boba, pero he estado dándole a esto y no he podido trabajar pptpd, ya me conecto al servidor pero no logro nada más, no se si es el firewall o que pasa. gracias de nuevo

  2. Gracias de antemano por tu guia, he hecho todo lo indicado aquí pero tengo una serie de problemas debido a mi desconocimiento, he leido bastante del tema pero en realidad no he encontrado en concreto una solución a mis inquietudes que me ilumine.

    Primero te ilustro sobre mi necesidad y mi red

    La direccion WAN ni los DNS son real reales

    Router Linksys
    WAN IP:200.190.30.10 # IP pública
    MASK: 255.255.255.252
    DNS 1: 200.190.30.100
    DNS 2: 200.190.10.50
    LAN: 192.168.0.220

    Puertos redireccionados a la 192.168.0.10
    22, 47, 1723, 3000, 8080, 10000, 20000, 110, 25, 80 … entre otros donde tengo varios servicios

    Servidor VPN / PROXY transparente/ FIREWALL / SAMBA (Entre otras cosas)
    eth1 192.168.0.10/24 > ROUTER
    GW:192.168.0.220
    eth0 192.168.0.1/24 > LAN
    GW: 192.168.0.10
    Squid Proxy 192.168.0.1:3128

    Por este Servidor, sale hacia Internet toda mi LAN 192.168.0.0/24, tengo los puertos que he redireccionado hacia la 192.168.0.10 escuhcando en mi firewall de IPTABLES

    Ok acá comienso a preguntar:

    - En el fichero “/etc/pptpd.config”, en “localip 192.168.1.1″ debo escribir la direccion de mi servidor? y si es así cual la de eth0 o eth1?.

    - En el fichero “/etc/ppp/pptp-options”, en las líneas “ms-dns 62.37.228.20″ y “netmask 255.255.255.0″ que servidor DNS debo escribir, el de mi ISP en el servidor y que mascara? o los de mi ISP en el cliente ?

    Tengo a Samba escuchando por eth0 y eth1, como hago para ver los recursos de samba? debo abrir y redireccionar otro puerto en mi router?.

    Informo que me puedo conectar al servidor VPN desde mi casa, no me responde a un ping en ningun sentido, y cuando estoy conectado, no puedo navegar en internet, pero si puedo accesar mi servidor via web, por ssh, o por los puertos de gestion del mismo.

    Se que estoy como extenso pero deseo solucionar esta necesidad. de nuevo muchas gracias por la respuesta, y ofresco excusas si mis inquetudes son inconsistentes o superfluas.

  3. Buenas, entiendo que la IP de tu servidor con respecto al router es tipo 192.168.0.10, esa es la direccion que tienes que poner como localip…

    Remoteip son las ips que recibiran los equipos que conecten a la vpn, si son varios pones un rango…

    Lo que no entiendo es pq si tienes 2 interfaces de red los tienes configurados con el mismo direccionamiento IP, para eso conecta la LAN directamente al router y pones como puerta de enlace de los equipos la ip del server, la 192.168.0.10 en lugar de la del router…

    La direccion de ms-dns es la de tu dns, si no tienes un bind propio pon cualquier otra, esto te servira para el caso en el que quieras usar la puerta de enlace predeterminada en la red remota, pero esta casilla en la configuracion de los xp suele desactivarse. (Lo que me dices de que cuando te conectas no puedes navegar a internet es por eso, ve a Funcines de RED- propiedades tcp/ip y luego en Opciones Avanzadas y desactiva esa opcion de puerta de enlace predeterminada en la red remota).

  4. Hola, gran aporte, tengo una consulta. He probado la vpn y funciona perfectamente, sin embargo, unicamente funciona dentro de una LAN. ¿Que pasos tengo que seguir para diseñar una vpn de intranet (principal-sucursal, en distintos lugares del país)?.

    He probado hacer la conexion con el ip público del servidor, y no pasa nada. Algunas especificaciones que deba saber. Gracias de antemano.

  5. Estimados.. muy completo vuestro manual.. y como dato anexo.. bueno aqui les dejo un script para que puedan navegar por internet desde sus conecciones VPN, esta basado en IPTABLES y permite las conecciones tanto de sus lan’s como los clientes conectados por PPP*

    Saludos desde chile

    Cristhofer Vargas
    cristhofer_v@hotmail.com

    *******************************SCRIPT***********************************************

    #!/bin/bash

    # ETH1 está conectado a Internet.
    # ETH0 está conectado a la subred privada.
    # Se agregaron 10 interfaces ppp para la navegacion desde las conecciones VPN
    WAN=eth1
    LAN=eth0
    PRIVATE=192.168.0.0/24

    # Direccion de loopback
    LOOP=127.0.0.1

    # Borrar reglas iptables antiguas
    # y temporalmente bloquear el tráco.
    iptables -P OUTPUT DROP
    iptables -P INPUT DROP
    iptables -P FORWARD DROP
    iptables -F

    # Establecer las polícas por defecto
    iptables -P OUTPUT ACCEPT
    iptables -P INPUT DROP
    iptables -P FORWARD DROP

    # Evitar que los paquetes externos usen la direccióe loopback
    iptables -A INPUT -i $WAN -s $LOOP -j DROP
    iptables -A FORWARD -i $WAN -s $LOOP -j DROP
    iptables -A INPUT -i $WAN -d $LOOP -j DROP
    iptables -A FORWARD -i $WAN -d $LOOP -j DROP

    # Cualquer cosa que venga de Internet deberítener una direccióe Internet real
    iptables -A FORWARD -i $WAN -s 192.168.0.0/16 -j DROP
    iptables -A FORWARD -i $WAN -s 172.16.0.0/12 -j DROP
    iptables -A FORWARD -i $WAN -s 10.0.0.0/8 -j DROP
    iptables -A INPUT -i $WAN -s 192.168.0.0/16 -j DROP
    iptables -A INPUT -i $WAN -s 172.16.0.0/12 -j DROP
    iptables -A INPUT -i $WAN -s 10.0.0.0/8 -j DROP

    # Bloquear paquetes NetBios salientes (si tiene máinas windows en
    # la subred privada). Éto no afecta al tráco NetBios
    # que circula por el túVPN, pero detendrá las maquinas
    # windows locales de mandar mensajes de broadcast
    # a Internet.
    iptables -A FORWARD -p tcp –sport 137:139 -o $WAN -j DROP
    iptables -A FORWARD -p udp –sport 137:139 -o $WAN -j DROP
    iptables -A OUTPUT -p tcp –sport 137:139 -o $WAN -j DROP
    iptables -A OUTPUT -p udp –sport 137:139 -o $WAN -j DROP

    # Comprobar la validez de la direcciórigen de los paquetes salientes a Internet
    iptables -A FORWARD -s ! $PRIVATE -i $LAN -j DROP
    iptables -A FORWARD -s ! $PRIVATE -i ppp0 -j DROP
    iptables -A FORWARD -s ! $PRIVATE -i ppp1 -j DROP
    iptables -A FORWARD -s ! $PRIVATE -i ppp2 -j DROP
    iptables -A FORWARD -s ! $PRIVATE -i ppp3 -j DROP
    iptables -A FORWARD -s ! $PRIVATE -i ppp4 -j DROP
    iptables -A FORWARD -s ! $PRIVATE -i ppp5 -j DROP
    iptables -A FORWARD -s ! $PRIVATE -i ppp6 -j DROP
    iptables -A FORWARD -s ! $PRIVATE -i ppp7 -j DROP
    iptables -A FORWARD -s ! $PRIVATE -i ppp8 -j DROP
    iptables -A FORWARD -s ! $PRIVATE -i ppp9 -j DROP
    iptables -A FORWARD -s ! $PRIVATE -i ppp10 -j DROP

    # Permitir loopback local
    iptables -A INPUT -s $LOOP -j ACCEPT
    iptables -A INPUT -d $LOOP -j ACCEPT

    # Permitir pings entrantes (pueden desabilitarse)
    iptables -A INPUT -p icmp –icmp-type echo-request -j ACCEPT

    # Permitir servicios tales como www y ssh (pueden desabilitarse)
    iptables -A INPUT -p tcp –dport http -j ACCEPT
    iptables -A INPUT -p tcp –dport ssh -j ACCEPT
    iptables -A INPUT -p tcp –dport 1723 -j ACCEPT
    iptables -A INPUT -p udp –dport 43 -j ACCEPT

    # Permitir paquete del dispositivo TUN/TAP.
    # Cuando OpenVPN estájecutando en modo seguro,
    # autenticaráos paquetes previos a
    # su llegada en el interfaz
    # tun o tap. Por lo tanto, no es
    # necesario añr ningun filtro aqui,
    # a menos que quiera restringir el
    # tipo de paquete que puedan circular por
    # el tú

    iptables -A INPUT -i tun+ -j ACCEPT
    iptables -A FORWARD -i tun+ -j ACCEPT
    iptables -A INPUT -i tap+ -j ACCEPT
    iptables -A FORWARD -i tap+ -j ACCEPT

    # Permitir paquetes de subredes privadas
    iptables -A INPUT -i $LAN -j ACCEPT
    iptables -A FORWARD -i $LAN -j ACCEPT
    iptables -A INPUT -i ppp0 -j ACCEPT
    iptables -A FORWARD -i ppp0 -j ACCEPT
    iptables -A INPUT -i ppp1 -j ACCEPT
    iptables -A FORWARD -i ppp1 -j ACCEPT
    iptables -A INPUT -i ppp2 -j ACCEPT
    iptables -A FORWARD -i ppp2 -j ACCEPT
    iptables -A INPUT -i ppp3 -j ACCEPT
    iptables -A FORWARD -i ppp3 -j ACCEPT
    iptables -A INPUT -i ppp4 -j ACCEPT
    iptables -A FORWARD -i ppp4 -j ACCEPT
    iptables -A INPUT -i ppp5 -j ACCEPT
    iptables -A FORWARD -i ppp5 -j ACCEPT
    iptables -A INPUT -i ppp6 -j ACCEPT
    iptables -A FORWARD -i ppp6 -j ACCEPT
    iptables -A INPUT -i ppp7 -j ACCEPT
    iptables -A FORWARD -i ppp7 -j ACCEPT
    iptables -A INPUT -i ppp8 -j ACCEPT
    iptables -A FORWARD -i ppp8 -j ACCEPT
    iptables -A INPUT -i ppp9 -j ACCEPT
    iptables -A FORWARD -i ppp9 -j ACCEPT
    iptables -A INPUT -i ppp10 -j ACCEPT
    iptables -A FORWARD -i ppp10 -j ACCEPT

    # Mantener el estado de las conexiones locales y las subredes privadas
    iptables -A OUTPUT -m state –state NEW -o $LAN -j ACCEPT
    iptables -A OUTPUT -m state –state NEW -o ppp0 -j ACCEPT
    iptables -A OUTPUT -m state –state NEW -o ppp1 -j ACCEPT
    iptables -A OUTPUT -m state –state NEW -o ppp2 -j ACCEPT
    iptables -A OUTPUT -m state –state NEW -o ppp3 -j ACCEPT
    iptables -A OUTPUT -m state –state NEW -o ppp4 -j ACCEPT
    iptables -A OUTPUT -m state –state NEW -o ppp5 -j ACCEPT
    iptables -A OUTPUT -m state –state NEW -o ppp6 -j ACCEPT
    iptables -A OUTPUT -m state –state NEW -o ppp7 -j ACCEPT
    iptables -A OUTPUT -m state –state NEW -o ppp8 -j ACCEPT
    iptables -A OUTPUT -m state –state NEW -o ppp9 -j ACCEPT
    iptables -A OUTPUT -m state –state NEW -o ppp10 -j ACCEPT
    iptables -A INPUT -m state –state ESTABLISHED,RELATED -j ACCEPT
    iptables -A FORWARD -m state –state NEW -o $LAN -j ACCEPT
    iptables -A FORWARD -m state –state NEW -o ppp0 -j ACCEPT
    iptables -A FORWARD -m state –state NEW -o ppp1 -j ACCEPT
    iptables -A FORWARD -m state –state NEW -o ppp2 -j ACCEPT
    iptables -A FORWARD -m state –state NEW -o ppp3 -j ACCEPT
    iptables -A FORWARD -m state –state NEW -o ppp4 -j ACCEPT
    iptables -A FORWARD -m state –state NEW -o ppp5 -j ACCEPT
    iptables -A FORWARD -m state –state NEW -o ppp6 -j ACCEPT
    iptables -A FORWARD -m state –state NEW -o ppp7 -j ACCEPT
    iptables -A FORWARD -m state –state NEW -o ppp8 -j ACCEPT
    iptables -A FORWARD -m state –state NEW -o ppp9 -j ACCEPT
    iptables -A FORWARD -m state –state NEW -o ppp10 -j ACCEPT
    iptables -A FORWARD -m state –state ESTABLISHED,RELATED -j ACCEPT

    # Enmascarar la subred local
    iptables -t nat -A POSTROUTING -s $PRIVATE -o $WAN -j MASQUERADE

    *************************SCRIPT*************************************

Responder