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: