[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: VPN PPTPD y error en conexión



El Miércoles, 2 de Agosto de 2006 21:14, Ricardo Marcelo Alvarez escribió:
> On Wed, 2 Aug 2006 17:18:17 +0200
>
> "Francisco J. Bejarano" <webmaster@qye.com> wrote:
> > El Miércoles, 2 de Agosto de 2006 13:50, Francisco J. Bejarano escribió:
> > > El Martes, 1 de Agosto de 2006 16:24, Francisco J. Bejarano escribió:
> > > > Hola a todos
> > > >
> > > > Estoy configurando un servidor vpn compatible con los clientes
> > > > windows y despues de configurarlo (en debian sid), no puedo conectar
> > > > con ningun cliente. Ni con el de windows xp sp2 ni con el pptp-linux
> > > > desde un xubuntu y un debian-sid, con lo que deduzco que debe ser un
> > > > error en la configuración del servidor vpn (version 1.3.0). Miro los
> > > > logs de /var/log/syslog me dice lo siguiente al conectar (con
> > > > cualquier cliente)
> > > > ---------------------------------------------------------------------
> > > >---- -- ----------------------------------------------- Aug  1
> > > > 15:51:52 PC191 pptpd[7057]: MGR: Launching /usr/sbin/pptpctrl to
> > > > handle client Aug  1 15:51:52 PC191 pptpd[7057]: CTRL: local address
> > > > = x.x.x.x Aug  1 15:51:52 PC191 pptpd[7057]: CTRL: remote address =
> > > > y.y.y.y Aug  1 15:51:52 PC191 pptpd[7057]: CTRL: pppd options file
> > > > = /etc/ppp/pptpd-options
> > > > Aug  1 15:51:52 PC191 pptpd[7057]: CTRL: Client a.a.a.a control
> > > > connection started
> > > > Aug  1 15:51:52 PC191 pptpd[7057]: CTRL: Received PPTP Control
> > > > Message (type: 1)
> > > > Aug  1 15:51:52 PC191 pptpd[7057]: CTRL: Made a START CTRL CONN RPLY
> > > > packet Aug  1 15:51:52 PC191 pptpd[7057]: CTRL: I wrote 156 bytes to
> > > > the client. Aug  1 15:51:52 PC191 pptpd[7057]: CTRL: Sent packet to
> > > > client Aug  1 15:51:53 PC191 pptpd[7057]: CTRL: Received PPTP Control
> > > > Message (type: 7)
> > > > Aug  1 15:51:53 PC191 pptpd[7057]: CTRL: Set parameters to 10000000
> > > > maxbps, 3 window size
> > > > Aug  1 15:51:53 PC191 pptpd[7057]: CTRL: Made a OUT CALL RPLY packet
> > > > Aug  1 15:51:53 PC191 pptpd[7057]: CTRL: Starting call (launching
> > > > pppd, opening GRE)
> > > > Aug  1 15:51:53 PC191 pptpd[7057]: CTRL: pty_fd = 6
> > > > Aug  1 15:51:53 PC191 pptpd[7057]: CTRL: tty_fd = 7
> > > > Aug  1 15:51:53 PC191 pptpd[7058]: CTRL (PPPD Launcher): program
> > > > binary = /usr/sbin/pppd
> > > > Aug  1 15:51:53 PC191 pptpd[7058]: CTRL (PPPD Launcher): local
> > > > address = x.x.x.x
> > > > Aug  1 15:51:53 PC191 pptpd[7058]: CTRL (PPPD Launcher): remote
> > > > address = y.y.y.y
> > > > Aug  1 15:51:53 PC191 pppd[7058]: Plugin
> > > > /usr/lib/pptpd/pptpd-logwtmp.so is for pppd version 2.4.3, this is
> > > > 2.4.4
> > > > Aug  1 15:51:53 PC191 pptpd[7057]: CTRL: I wrote 32 bytes to the
> > > > client. Aug  1 15:51:53 PC191 pptpd[7057]: CTRL: Sent packet to
> > > > client Aug  1 15:51:53 PC191 pptpd[7057]: GRE:
> > > > read(fd=6,buffer=80505a0,len=8196) from PTY failed: status = -1 error
> > > > = Input/output error, usually caused by unexpected termination of
> > > > pppd, check option syntax and pppd logs Aug  1 15:51:53 PC191
> > > > pptpd[7057]: CTRL: PTY read or GRE write failed (pty,gre)=(6,7)
> > > > Aug  1 15:51:53 PC191 pptpd[7057]: CTRL: Reaping child PPP[7058]
> > > > Aug  1 15:51:53 PC191 pptpd[7057]: CTRL: Client a.a.a.a control
> > > > connection finished
> > > > Aug  1 15:51:53 PC191 pptpd[7057]: CTRL: Exiting now
> > > > Aug  1 15:51:53 PC191 pptpd[6306]: MGR: Reaped child 7057
> > > > ---------------------------------------------------------------------
> > > >---- -- -----------------------------------------------
> > > >
> > > >
> > > > El error es este, arriba esta todo el debug para aclarar. He
> > > > sustituido las direcciones ip por letras.
> > > >
> > > > Aug  1 15:51:53 PC191 pptpd[7057]: GRE:
> > > > read(fd=6,buffer=80505a0,len=8196) from PTY failed: status = -1 error
> > > > = Input/output error, usually caused by unexpected termination of
> > > > pppd, check option syntax and pppd logs Aug  1 15:51:53 PC191
> > > > pptpd[7057]: CTRL: PTY read or GRE write failed (pty,gre)=(6,7)
> > > >
> > > > He configurado los archivos:
> > > >
> > > > /etc/pptpd.conf (tiene lo siguiente)
> > > >
> > > > option /etc/ppp/pptpd-options
> > > > debug
> > > > logwtmp
> > > > localip x.x.x.x (la dirección ip de mi red local del servidor vpn)
> > > > remoteip y.y.y.y (un rango de direcciones no usadas de mi red local
> > > > para asignar al cliente al conectar)
> > > >
> > > > /etc/ppp/pptpd-options (el archivo tiene)
> > > >
> > > > name pptpd
> > > > refuse-pap
> > > > require-chap
> > > > require-mschap
> > > > require-mschap-v2
> > > > require-mppe-128
> > > > ms-dns 80.58.61.250
> > > > ms-dns 80.58.61.254
> > > > netmask 255.255.255.0
> > > > proxyarp
> > > > nodefaultroute
> > > > debug
> > > > lock
> > > > nobsdcomp
> > > >
> > > > Y por ultimo el archivo /etc/ppp/chap-secret donde he creado un
> > > > usuario y contraseña
> > > >
> > > > # Secrets for authentication using CHAP
> > > > # client        server  secret                  IP addresses
> > > >
> > > >    usuario1  * 	       contraseña1	   *
> > > >
> > > >
> > > > Despues de esto, no se me ocurre que puede estar pasando, creo que
> > > > esta bien configurado. La direccion cliente (a.a.a.a es una direccion
> > > > publica) Tengo abiertos los puertos 1723 y 47 en el router y no uso
> > > > cortafuegos ni en cliente ni en servidor. He leido varios documentos
> > > > de configuración donde parece que lo que hago está bien y he buscado
> > > > en google el error y no encuentro una solución.
> > > >
> > > > ¿Alguien me puede decir por qué no conecto y como puedo arreglarlo?
> > > >
> > > > Un saludo
> > >
> > > He descubierto lo siguiente:
> > >
> > > He añadido un usuario nuevo al archivo chap-secrets al que se le debe
> > > asignar una direccion ip obligatoria quedando asi (con espacios entre
> > > cada campo)
> > >
> > > usuario2 * contraseña2 192.168.0.150
> > >
> > > Cuando reinicio el servido e intento conectar con ese usuario desde un
> > > cliente vpn, el debug me indica que la direccion ip asignada al
> > > usuario2 es la primera del rango de direcciones configurado en el
> > > fichero
> > > /etc/pptpd.conf y no la dirección 192.168.0.150 que le he asignado, lo
> > > que me lleva a pensar que no esta usando el archivo chap-secrets para
> > > validar el usuario. ¿es esto posible? o puede ser otra cosa.
> > >
> > > También he probado a configurar un servidor vpn en WXP SP2  y al
> > > conectar con un cliente desde otro wxp sp2 a traves de internet, puedo
> > > conectar sin problemas, con lo que el router o firewalls o puertos no
> > > son seguro (creo, porque el fallo del primer debug parece que indica
> > > PTY o GRE.
> > >
> > > ¿Alguien comenta algo?
> >
> > Tambien he descubierto, usando wireshark (ethereal) que cada vez que
> > intento una conexión, hay un paquete ICMP que responde Destino
> > inalcanzable (protocolo inalcanzable) es decir Tipo 3 y Codigo 2 desde la
> > direccion interna del servidor vpn al cliente vpn y en el contenido lleva
> > datos del protocolo GRE y PPP.
> >
> > ¿Alguien sabe por que pasa esto? ¿Por que no alcanza el protocolo?
>
> El kernel tiene que tener soporte para "ip gre tunnels over ip"
> Y si estas atras de un firewall tenes que cargar en el firewall unos
> modulos de iptables para poder hacer el nat de ip gre y agregar el
> forwardeo de este protocolo en el iptables

Gracias, no estoy usando firewalls. He visto que no tenia cargado el modulo de 
ip_gre y lo he cargado con insmod, también he puesto 

echo 1 > /proc/sys/net/ipv4/ip_forward

He vuelto a probar y nada...


>
> ejemplo de forwardeo de ipgre esto es en el firewall que tengas corriendo
> con iptables.
>
>     function forward_vpn
> 	{
> 	IP_EXTERNA=$1
> 	PLACA_EXTERNA=$2
> 	IP_INTERNA=$3
> 	PLACA_INTERNA=$4
> 	PUERTO_EXTERNO=1723
> 	PUERTO_INTERNO=1723
> 	PROTOCOLO=tcp
> 	PREFIJO_LOG_0=${PREFIJO_LOG}" forward vpn"
> 	echo "Forwardeando la IP ${IP_EXTERNA} en ${PLACA_EXTERNA} a la "
> 	echo "IP ${IP_INTERNA} en ${PLACA_INTERNA} para la VPN "
>
> 	${IPTABLES} -t nat -A POSTROUTING -o ${PLACA_INTERNA} -d ${IP_INTERNA} -j
> LOG -m limit --limit ${LIMITE} --log-prefix "${PREFIJO_LOG_0}" --log-level
> ${NIVEL_LOG} ${IPTABLES} -t filter -A FORWARD -p ${PROTOCOLO} -s
> ${IP_INTERNA} --sport ${PUERTO_INTERNO} -j LOG -m limit --limit ${LIMITE}
> --log-prefix "${PREFIJO_LOG_0}" --log-level ${NIVEL_LOG} ${IPTABLES} -t
> filter -A FORWARD -p ${PROTOCOLO} -d ${IP_INTERNA} --dport
> ${PUERTO_INTERNO} -j LOG -m limit --limit ${LIMITE} --log-prefix
> "${PREFIJO_LOG_0}" --log-level ${NIVEL_LOG}
>
> 	${IPTABLES} -t nat -A PREROUTING -i ${PLACA_EXTERNA} -p ${PROTOCOLO} -d
> ${IP_EXTERNA} --dport ${PUERTO_EXTERNO} -j DNAT --to
> ${IP_INTERNA}:${PUERTO_INTERNO} ${IPTABLES} -t nat -A POSTROUTING -o
> ${PLACA_INTERNA} -d ${IP_INTERNA} -j MASQUERADE ${IPTABLES} -t filter -A
> FORWARD -p ${PROTOCOLO} -s ${IP_INTERNA} --sport ${PUERTO_INTERNO} -j
> ACCEPT ${IPTABLES} -t filter -A FORWARD -p ${PROTOCOLO} -d ${IP_INTERNA}
> --dport ${PUERTO_INTERNO} -j ACCEPT
>
> 	PROTOCOLO=udp
>
> 	${IPTABLES} -t nat -A POSTROUTING -o ${PLACA_INTERNA} -d ${IP_INTERNA} -j
> LOG -m limit --limit ${LIMITE} --log-prefix "${PREFIJO_LOG_0}" --log-level
> ${NIVEL_LOG} ${IPTABLES} -t filter -A FORWARD -p ${PROTOCOLO} -s
> ${IP_INTERNA} --sport ${PUERTO_INTERNO} -j LOG -m limit --limit ${LIMITE}
> --log-prefix "${PREFIJO_LOG_0}" --log-level ${NIVEL_LOG} ${IPTABLES} -t
> filter -A FORWARD -p ${PROTOCOLO} -d ${IP_INTERNA} --dport
> ${PUERTO_INTERNO} -j LOG -m limit --limit ${LIMITE} --log-prefix
> "${PREFIJO_LOG_0}" --log-level ${NIVEL_LOG}
>
> 	${IPTABLES} -t nat -A PREROUTING -i ${PLACA_EXTERNA} -p ${PROTOCOLO} -d
> ${IP_EXTERNA} --dport ${PUERTO_EXTERNO} -j DNAT --to
> ${IP_INTERNA}:${PUERTO_INTERNO} ${IPTABLES} -t nat -A POSTROUTING -o
> ${PLACA_INTERNA} -d ${IP_INTERNA} -j MASQUERADE ${IPTABLES} -t filter -A
> FORWARD -p ${PROTOCOLO} -s ${IP_INTERNA} --sport ${PUERTO_INTERNO} -j
> ACCEPT ${IPTABLES} -t filter -A FORWARD -p ${PROTOCOLO} -d ${IP_INTERNA}
> --dport ${PUERTO_INTERNO} -j ACCEPT
>
> 	#PROTOCOLO 47 ipgre
>
> 	${IPTABLES} -t nat -A POSTROUTING -o ${PLACA_INTERNA} -d ${IP_INTERNA} -j
> LOG -m limit --limit ${LIMITE} --log-prefix "${PREFIJO_LOG_0}" --log-level
> ${NIVEL_LOG} ${IPTABLES} -t filter -A FORWARD -p 47 -s ${IP_INTERNA} -j LOG
> -m limit --limit ${LIMITE} --log-prefix "${PREFIJO_LOG_0}" --log-level
> ${NIVEL_LOG} ${IPTABLES} -t filter -A FORWARD -p 47 -d ${IP_INTERNA} -j LOG
> -m limit --limit ${LIMITE} --log-prefix "${PREFIJO_LOG_0}" --log-level
> ${NIVEL_LOG}
>
> 	${IPTABLES} -t nat -A PREROUTING -i ${PLACA_EXTERNA} -p 47 -d
> ${IP_EXTERNA} -j DNAT --to ${IP_INTERNA} ${IPTABLES} -t nat -A POSTROUTING
> -o ${PLACA_INTERNA} -d ${IP_INTERNA} -j MASQUERADE ${IPTABLES} -t filter -A
> FORWARD -p 47 -s ${IP_INTERNA} -j ACCEPT ${IPTABLES} -t filter -A FORWARD
> -p 47 -d ${IP_INTERNA} -j ACCEPT
>
> 	echo "VPN Forwareada "
> 	}
>
> Ejemplo de permitir el ingreso de vpn si tenes el iptables en la misma
> maquina que corres el pptp server
>
>     function aceptando_vpn
> 	{
> 	IP=$1
> 	IP_PERMITIDA=$2
> 	PLACA=$3
> 	PUERTO=1723
> 	PROTOCOLO=tcp
> 	PREFIJO_LOG_0=${PREFIJO_LOG}" acepta vpn"
> 	echo "Aceptando la IP ${IP_PERMITIDA} en ${PLACA} a la "
> 	echo "IP ${IP} para la VPN "
>
> 	${IPTABLES} -t filter -A INPUT -p ${PROTOCOLO} -s ${IP_PERMITIDA} -d ${IP}
> -i ${PLACA} --dport ${PUERTO} -j LOG -m limit --limit ${LIMITE}
> --log-prefix "${PREFIJO_LOG_0}" --log-level ${NIVEL_LOG} ${IPTABLES} -t
> filter -A OUTPUT -p ${PROTOCOLO} -d ${IP_PERMITIDA} -s ${IP} -o ${PLACA}
> --sport ${PUERTO} -j LOG -m limit --limit ${LIMITE} --log-prefix
> "${PREFIJO_LOG_0}" --log-level ${NIVEL_LOG}
>
> 	${IPTABLES} -t filter -A INPUT -p ${PROTOCOLO} -s ${IP_PERMITIDA} -d ${IP}
> -i ${PLACA} --dport ${PUERTO} -j ACCEPT ${IPTABLES} -t filter -A OUTPUT -p
> ${PROTOCOLO} -d ${IP_PERMITIDA} -s ${IP} -o ${PLACA} --sport ${PUERTO} -j
> ACCEPT
>
> 	PROTOCOLO=udp
>
> 	${IPTABLES} -t filter -A INPUT -p ${PROTOCOLO} -s ${IP_PERMITIDA} -d ${IP}
> -i ${PLACA} --dport ${PUERTO} -j LOG -m limit --limit ${LIMITE}
> --log-prefix "${PREFIJO_LOG_0}" --log-level ${NIVEL_LOG} ${IPTABLES} -t
> filter -A OUTPUT -p ${PROTOCOLO} -d ${IP_PERMITIDA} -s ${IP} -o ${PLACA}
> --sport ${PUERTO} -j LOG -m limit --limit ${LIMITE} --log-prefix
> "${PREFIJO_LOG_0}" --log-level ${NIVEL_LOG}
>
> 	${IPTABLES} -t filter -A INPUT -p ${PROTOCOLO} -s ${IP_PERMITIDA} -d ${IP}
> -i ${PLACA} --dport ${PUERTO} -j ACCEPT ${IPTABLES} -t filter -A OUTPUT -p
> ${PROTOCOLO} -d ${IP_PERMITIDA} -s ${IP} -o ${PLACA} --sport ${PUERTO} -j
> ACCEPT
>
> 	#PROTOCOLO 47 ipgre
>
> 	PROTOCOLO=47
>
> 	${IPTABLES} -t filter -A INPUT -p ${PROTOCOLO} -s ${IP_PERMITIDA} -d ${IP}
> -i ${PLACA} -j LOG -m limit --limit ${LIMITE} --log-prefix
> "${PREFIJO_LOG_0}" --log-level ${NIVEL_LOG} ${IPTABLES} -t filter -A OUTPUT
> -p ${PROTOCOLO} -d ${IP_PERMITIDA} -s ${IP} -o ${PLACA} -j LOG -m limit
> --limit ${LIMITE} --log-prefix "${PREFIJO_LOG_0}" --log-level ${NIVEL_LOG}
>
> 	${IPTABLES} -t filter -A INPUT -p ${PROTOCOLO} -s ${IP_PERMITIDA} -d ${IP}
> -i ${PLACA} -j ACCEPT ${IPTABLES} -t filter -A OUTPUT -p ${PROTOCOLO} -d
> ${IP_PERMITIDA} -s ${IP} -o ${PLACA} -j ACCEPT
>
> 	echo "VPN Aceptada "
>
> 	}
>
> Saludos.
>
> > Segun la wikipedia, este codigo (2) indica que el protocolo de transporte
> > designado no esta soportado. ¿A que protocolo se refiere?
> >
> > ¿Alguien que haya configurado pptpd puede decirme si le ha funcionado
> > alguna vez?
> >
> > Un saludo
> >
> > --
> > ---------------------------------------------------------
> > Francisco J. Bejarano
> > Administrador de Sistemas
> > Q&E Intelligent Integrated Solutions S.L.
> > www.qye.com
> > ---------------------------------------------------------
>
> __________________________________________________
> Pregunt. Respond. Descubr.
> Todo lo que queras saber, y lo que ni imaginabas,
> est en Yahoo! Respuestas (Beta).
> Probalo ya!
> http://www.yahoo.com.ar/respuestas

-- 
---------------------------------------------------------
Francisco J. Bejarano 
Administrador de Sistemas
Q&E Intelligent Integrated Solutions S.L.
www.qye.com
---------------------------------------------------------



Reply to: