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

Re: VPN PPTPD y error en conexión



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

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 querías saber, y lo que ni imaginabas,
está en Yahoo! Respuestas (Beta).
¡Probalo ya!
http://www.yahoo.com.ar/respuestas



Reply to: