RESUELTO Servidor openvpn en PuppyLinux

Post Reply
Message
Author
User avatar
nilsonmorales
Posts: 972
Joined: Fri 15 Apr 2011, 14:39
Location: El Salvador

RESUELTO Servidor openvpn en PuppyLinux

#1 Post by nilsonmorales »

Buenas, he estado tratando de hacer andar un servidor openvpn en PuppyLinux retro-precise (creo que la version de puppy no es relevante al menos ahi he compilado el paquete de su codigo fuente) https://openvpn.net/.

El problema es que solo pude hacer levantar el servidor una vez, despues de eso ya no he podido he leido en otros foros pero aun no encuentro la solucion, voy a postear lo que tengo hasta el momento.

Otra cosa es que en mi afan de crear un paquete que sea usable en puppylinux y lo digo por que en el caso de paquetes debian y slackware se agregan cosas como los archivos ejemplos de configuracion en /usr/share/doc/openvpn los cuales sirven para configurar y personalizar en /etc/openvpn tambien agregan los scripts easy-rsa que crean las llaves para el uso del mismo, tambien scripts que son utiles como los de init.d que sirven para levantar-detener opnvpn como demonio.

asi que he agregado eso a un paquete-beta que he empezado a crear y que comparto en un link mas abajo.

----------------------------------------------------------------------------------
Esto es lo que he hecho hasta el momento
Instalar paquete-prueba
copiar el directorio /usr/share/doc/openvpn/easy-rsa a /etc/openvpn

Code: Select all

cp -R /usr/share/doc/openvpn/examples/easy-rsa /etc/openvpn
ir al directorio en este orden

Code: Select all

cd /etc/openvpn/easy-rsa/2.0/
. ./vars
./clean-all
crear los certificados

Code: Select all

./build-ca 
llaves del servidor, servidorpuppy para el ejemplo

Code: Select all

./build-key-server servidorpuppy
crear los parametros Diffie Hellman

Code: Select all

./build-dh
generar la autenticacion tls

Code: Select all

openvpn --genkey --secret ta.key
cp ta.key /etc/openvpn/easy-rsa/2.0/keys
copiar todo lo que se genero en el directorio keys a /etc/openvpn

Code: Select all

cp -a keys/* /etc/openvpn/
luego copiamos el archivo ejemplo de configuracion del servidor openvpn a /etc/openvpn

Code: Select all

cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf /etc/openvpn/
y lo editamos llenando con nuestras configuraciones pegare parte del ejemplo
port 1194
proto udp
dev tun
ca /etc/openvpn/ca.crt
cert /etc/openvpn/SERVERPUP.crt
key /etc/openvpn/SERVERPUP.key
dh /etc/openvpn/dh1024.pem
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist /etc/openvpn/ipp.txt
push "route 192.168.1.0 255.255.255.0"
push "dhcp-option DNS 10.8.0.1"
keepalive 10 120
tls-auth /etc/openvpn/ta.key 0
comp-lzo
persist-key
persist-tun
status /var/log/openvpn-status.log
log /var/log/openvpn.log
verb 3
Los demas espacios solo los he dejado comentados
posiblemente tengan que crear el directorio /var/log/openvpn para que se genere el archivo de registro del estado del vpn y el directorio /etc/openvpn/ccd
luego como por el momento el script en init.d es inutil levantamos el demonio desde linea de comandos y verficamos con ifconfig
/usr/sbin/openvpn --daemon /etc/openvpn/server.conf
Ese se cambió ahora para levantar el servidor hacemos

Code: Select all

/etc/init.d/openvpn start
y podemos probar si nos crea en tunel con

Code: Select all

ifconfig
los archivos de registro dicen esto. /var/log/openvpn.log
Esto era parte del problema ahora los archivos de registro deberian mostrar buenos resultados
Mon Jul 4 14:49:07 2016 OpenVPN 2.3.11 i686-pc-linux-gnu [SSL (OpenSSL)] [LZO] [EPOLL] [MH] [IPv6] built on Jul 1 2016
Mon Jul 4 14:49:07 2016 library versions: OpenSSL 1.0.2h 3 May 2016, LZO 2.06
Mon Jul 4 14:49:07 2016 Diffie-Hellman initialized with 1024 bit key
Mon Jul 4 14:49:07 2016 Socket Buffers: R=[163840->163840] S=[163840->163840]
Mon Jul 4 14:49:07 2016 ROUTE: default_gateway=UNDEF
Mon Jul 4 14:49:07 2016 TUN/TAP device tun0 opened
Mon Jul 4 14:49:07 2016 TUN/TAP TX queue length set to 100
Mon Jul 4 14:49:07 2016 do_ifconfig, tt->ipv6=0, tt->did_ifconfig_ipv6_setup=0
Mon Jul 4 14:49:07 2016 /sbin/ifconfig tun0 10.8.0.1 pointopoint 10.8.0.2 mtu 1500
Mon Jul 4 14:49:07 2016 /sbin/route add -net 192.168.1.0 netmask 255.255.255.248 gw 10.8.0.2
Mon Jul 4 14:49:07 2016 /sbin/route add -net 10.8.0.0 netmask 255.255.255.0 gw 10.8.0.2
Mon Jul 4 14:49:07 2016 UDPv4 link local (bound): [undef]
Mon Jul 4 14:49:07 2016 UDPv4 link remote: [undef]
Mon Jul 4 14:49:07 2016 MULTI: multi_init called, r=256 v=256
Mon Jul 4 14:49:07 2016 IFCONFIG POOL: base=10.8.0.4 size=62, ipv6=0
Mon Jul 4 14:49:07 2016 Initialization Sequence Completed
Mon Jul 4 14:55:20 2016 event_wait : Interrupted system call (code=4)
Mon Jul 4 14:55:20 2016 /sbin/route del -net 10.8.0.0 netmask 255.255.255.0
Mon Jul 4 14:55:20 2016 /sbin/route del -net 192.168.1.0 netmask 255.255.255.248
Mon Jul 4 14:55:20 2016 Closing TUN/TAP interface
Mon Jul 4 14:55:20 2016 /sbin/ifconfig tun0 0.0.0.0
Mon Jul 4 14:55:21 2016 SIGTERM[hard,] received, process exiting
/var/log/openvpn/openvpn-status-log
OpenVPN CLIENT LIST
Updated,Mon Jul 4 14:55:09 2016
Common Name,Real Address,Bytes Received,Bytes Sent,Connected Since
ROUTING TABLE
Virtual Address,Common Name,Real Address,Last Ref
GLOBAL STATS
Max bcast/mcast queue length,0
END
Paquete beta http://repo.gentoo-es.com/PuppyLinux-re ... 2.3.11.pet
Ahora todo lo explicado arriba debería servir para correr un servidor openvpn en PuppyLinux sin importar la version sin problemas, probado en xenialpup, tahrpup, retro-precise, pupjibaro.
Last edited by nilsonmorales on Tue 05 Jul 2016, 17:38, edited 4 times in total.
[b][url=http://nilsonmorales.blogspot.com/]My blog |[/url][/b][b][url=https://github.com/woofshahenzup]| Github[/url][/b]
[img]https://i.postimg.cc/5tz5vrrX/imag018la6.gif[/img]
[img]http://s5.postimg.org/7h2fid8pz/botones_logos3.png[/img]

User avatar
nilsonmorales
Posts: 972
Joined: Fri 15 Apr 2011, 14:39
Location: El Salvador

#2 Post by nilsonmorales »

Parece que esto va a llevar mas tiempo de lo que pensaba, he estado haciendo pruebas en otro puppy (x-tahr beta3) y me han salido estos errores en /var/log/messages pero primero les muestro el server.conf con algunos cambios y mismo resultado ifconfig no crea tun0
local 192.168.1.3
port 1194
proto udp
dev tun
ca /etc/openvpn/ca.crt
cert /etc/openvpn/servidor.crt
key /etc/openvpn/servidor.key
dh /etc/openvpn/dh1024.pem
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist /etc/openvpn/ipp.txt
push "route 192.168.20.0 255.255.255.0"
push "dhcp-option DNS 208.67.222.222"
keepalive 10 120
tls-auth /etc/openvpn/ta.key 0
comp-lzo
persist-key
persist-tun
status /var/log/openvpn/openvpn-status.log
verb 3
esto es parte de /var/log/messages
daemon.err /etc/openvpn/server.conf[3047]: Options error: You must define TUN/TAP device (--dev)
entonces con el comando

Code: Select all

/usr/sbin/openvpn --daemon /etc/openvpn/server.conf --dev tun0

Me tira estos errores /var/log/messages
TUN/TAP device tun0 opened
UDPv4 link local (bound): [undef]
UDPv4 link remote: [undef]
Asi que aun sigo sin poder levantar el servidor, espero alguien pueda darme una luz, creo que dejare de probar en tahr y me concentraré en retro-precise que es donde compile el paquete-prueba.
PD: por si sirve de algo mi conexion a internet es cableada eth0
[b][url=http://nilsonmorales.blogspot.com/]My blog |[/url][/b][b][url=https://github.com/woofshahenzup]| Github[/url][/b]
[img]https://i.postimg.cc/5tz5vrrX/imag018la6.gif[/img]
[img]http://s5.postimg.org/7h2fid8pz/botones_logos3.png[/img]

User avatar
nilsonmorales
Posts: 972
Joined: Fri 15 Apr 2011, 14:39
Location: El Salvador

#3 Post by nilsonmorales »

He tenido un avance llenando server.conf de esta manera, he continuado en retro-precise que no da error sobre --dev tun
port 1194
proto udp
dev tun
ca /etc/openvpn/ca.crt
cert /etc/openvpn/servidorpuppy.crt
key /etc/openvpn/servidorpuppy.key
dh /etc/openvpn/dh1024.pem
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist pp.txt
push "route 192.168.10.0 255.255.255.0"
keepalive 10 120
tls-auth /etc/openvpn/ta.key 0
cipher BF-CBC
copersist-key
persist-tun
mp-lzo
status /var/log/openvpn/openvpn-status.log
log openvpn.log
verb 6
he tenido que generar la ta.key asi

Code: Select all

openvpn --genkey --secret ta.key
y en lugar del ejecutar

Code: Select all

openvpn --daemon /etc/openvpn/server.conf
lo hice de esta manera

Code: Select all

/usr/sbin/openvpn --config /etc/openvpn/server.conf 
ahora el archivo de registro dice esto.
Mon Jul 4 01:40:16 2016 us=572358 OpenVPN 2.3.11 i686-pc-linux-gnu [SSL (OpenSSL)] [LZO] [EPOLL] [MH] [IPv6] built on Jul 1 2016
Mon Jul 4 01:40:16 2016 us=572416 library versions: OpenSSL 1.0.2h 3 May 2016, LZO 2.06
Mon Jul 4 01:40:16 2016 us=572690 NOTE: your local LAN uses the extremely common subnet address 192.168.0.x or 192.168.1.x. Be aware that this might create routing conflicts if you connect to the VPN server from public locations such as internet cafes that use the same subnet.
Mon Jul 4 01:40:16 2016 us=573315 Diffie-Hellman initialized with 1024 bit key
Mon Jul 4 01:40:16 2016 us=574378 Control Channel Authentication: using '/etc/openvpn/ta.key' as a OpenVPN static key file
Mon Jul 4 01:40:16 2016 us=574449 Outgoing Control Channel Authentication: Using 160 bit message hash 'SHA1' for HMAC authentication
Mon Jul 4 01:40:16 2016 us=574492 Incoming Control Channel Authentication: Using 160 bit message hash 'SHA1' for HMAC authentication
Mon Jul 4 01:40:16 2016 us=574543 TLS-Auth MTU parms [ L:1542 D:1184 EF:66 EB:0 ET:0 EL:3 ]
Mon Jul 4 01:40:16 2016 us=574600 Socket Buffers: R=[163840->163840] S=[163840->163840]
Mon Jul 4 01:40:16 2016 us=574786 ROUTE_GATEWAY 192.168.1.1/255.255.255.0 IFACE=eth0 HWADDR=44:37:e6:0f:e9:62
Mon Jul 4 01:40:16 2016 us=575092 TUN/TAP device tun0 opened
Mon Jul 4 01:40:16 2016 us=575540 TUN/TAP TX queue length set to 100
Mon Jul 4 01:40:16 2016 us=575616 do_ifconfig, tt->ipv6=0, tt->did_ifconfig_ipv6_setup=0
Mon Jul 4 01:40:16 2016 us=575695 /sbin/ifconfig tun0 10.8.0.1 pointopoint 10.8.0.2 mtu 1500
Mon Jul 4 01:40:16 2016 us=577837 /sbin/route add -net 10.8.0.0 netmask 255.255.255.0 gw 10.8.0.2
Mon Jul 4 01:40:16 2016 us=579842 Data Channel MTU parms [ L:1542 D:1450 EF:42 EB:143 ET:0 EL:3 AF:3/1 ]
Mon Jul 4 01:40:16 2016 us=579946 UDPv4 link local (bound): [undef]
Mon Jul 4 01:40:16 2016 us=579988 UDPv4 link remote: [undef]
Mon Jul 4 01:40:16 2016 us=580037 MULTI: multi_init called, r=256 v=256
Mon Jul 4 01:40:16 2016 us=580108 IFCONFIG POOL: base=10.8.0.4 size=62, ipv6=0
Mon Jul 4 01:40:16 2016 us=580161 IFCONFIG POOL LIST
Mon Jul 4 01:40:16 2016 us=580232 Initialization Sequence Completed
ifconfig
tun0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
inet addr:xx.x.x.x P-t-P:xx.x.x.x Mask:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
Creo que ahora si esta funcionando el servidor sin cortar la salida del navegador, pero aun no estoy del todo seguro si asi es como debe funcionar, tengo que seguir leyendo el manual aprender a configurar clientes y probar
Last edited by nilsonmorales on Mon 04 Jul 2016, 18:12, edited 1 time in total.
[b][url=http://nilsonmorales.blogspot.com/]My blog |[/url][/b][b][url=https://github.com/woofshahenzup]| Github[/url][/b]
[img]https://i.postimg.cc/5tz5vrrX/imag018la6.gif[/img]
[img]http://s5.postimg.org/7h2fid8pz/botones_logos3.png[/img]

User avatar
nilsonmorales
Posts: 972
Joined: Fri 15 Apr 2011, 14:39
Location: El Salvador

#4 Post by nilsonmorales »

Al final como dicen los hermanos argentinos era una "boludes", nuevamente haciendo pruebas con una conexion inalambrica wlan0 en puppy tahr el paquete funciona bien, ya solo me haria falta hacer pruebas con clientes y tambien creando algun script para init.d para activarlo como demonio.
Explico el procedimiento y agrego los parametros del server.conf
-----------------------------------------------------------------------------------
port 1194
proto udp
dev tun
ca /etc/openvpn/ca.crt
cert /etc/openvpn/SERVIDOR.crt
key /etc/openvpn/SERVIDOR.key
dh /etc/openvpn/dh1024.pem
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
push "route 192.168.10.0 255.255.255.0"
keepalive 10 120
comp-lzo
persist-key
persist-tun
status openvpn-status.log
verb 3
--------------------------------------------------------------------------------------------

Code: Select all

cp -R /usr/share/doc/openvpn/examples/easy-rsa /etc/openvpn
cd /etc/openvpn/easy-rsa/2.0/ 
. ./vars
./clean-all
./build-ca
./build-key-server SERVIDOR
./build-dh
cp -a keys/* /etc/openvpn/
cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf /etc/openvpn/
geany /etc/openvpn/server.conf 
/usr/sbin/openvpn --daemon --config /etc/openvpn/server.conf 
-----------------------------------------------------------------------------------------------------
Aqui simplificado con lo que explique en el primer hilo, el problema era en el ultimo comando que estaba incompleto, como recomendacion si hay errores revisar el archivo /var/log/messages.
PD. el paquete seguirá siendo paquete-prueba hasta que logre resolver otros pormenores y complete las pruebas.
Saludos.
[b][url=http://nilsonmorales.blogspot.com/]My blog |[/url][/b][b][url=https://github.com/woofshahenzup]| Github[/url][/b]
[img]https://i.postimg.cc/5tz5vrrX/imag018la6.gif[/img]
[img]http://s5.postimg.org/7h2fid8pz/botones_logos3.png[/img]

User avatar
nilsonmorales
Posts: 972
Joined: Fri 15 Apr 2011, 14:39
Location: El Salvador

#5 Post by nilsonmorales »

Encontre un script que con par de retoques funciona bien en puppy y que sirve para iniciar-detener-ver el estado-reiniciar openvpn, se los comparto para que lo revisen aparte de eso he cambiado mi configuracion en el servidor y ahora luce asi, con resultado positivo al menos el servidor corre.
port 1194
proto udp
dev tun
ca /etc/openvpn/ca.crt
cert /etc/openvpn/SERVERPUP.crt
key /etc/openvpn/SERVERPUP.key
dh /etc/openvpn/dh1024.pem
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist /etc/openvpn/ipp.txt
push "route 192.168.1.0 255.255.255.0"
push "dhcp-option DNS 10.8.0.1"
keepalive 10 120
tls-auth /etc/openvpn/ta.key 0
comp-lzo
persist-key
persist-tun
status /var/log/openvpn-status.log
log /var/log/openvpn.log
verb 3

Code: Select all

#!/bin/sh
# Start/stop/restart all the openvpn processes
#by Giancarlo Razzolini
#tweaked by nilsonmorales 

#openvpn binary
openvpn=/usr/sbin/openvpn
#piddir
piddir=/var/run/openvpn
#conf dir
confdir=/etc/openvpn

#Let us check if the binary exists
if [ ! -f $openvpn -o ! -x $openvpn ] ; then
    echo "Openvpn binary not found or is not executable."
    exit 1
fi

openvpn_start() {
    #for all the conf files in the openvpn dir, start a new process
    cd $confdir
    rm -rf $piddir/*
    echo "Starting Openvpn Tunnels:"
    for conf in `ls *.conf` ; do
	echo -e "\t$openvpn $confdir/$conf"
	$openvpn --writepid /var/run/openvpn/`echo $conf | cut -d. -f1`.pid --daemon --config $conf 
    done
    return 0
}

openvpn_status() {
    cd $piddir
    ls *.pid &>/dev/null
    if [ "$?" != "0" ] ; then
	echo "No openvpn process is running."
    else
	for process in `ls *.pid` ; do
	    echo Process `cat $process` is running...
	done
    fi
    return 0
}

openvpn_stop() {
    echo "Stoping Openvpn Tunnels"
    killall -TERM openvpn &>/dev/null
    rm -rf $piddir/*
    return 0
}

openvpn_restart() {
    openvpn_stop
    sleep 1
    openvpn_start
}
    
case "$1" in
'start')
	openvpn_start
	;;
'status')
	openvpn_status
	;;
'stop')
	openvpn_stop
  ;;
'restart')
	openvpn_restart
	;;
    *)
	echo "usage $0 start|stop|restart"
esac
Agregado al paquete, en lo siguiente tratare de establer conexion usando un cliente
[b][url=http://nilsonmorales.blogspot.com/]My blog |[/url][/b][b][url=https://github.com/woofshahenzup]| Github[/url][/b]
[img]https://i.postimg.cc/5tz5vrrX/imag018la6.gif[/img]
[img]http://s5.postimg.org/7h2fid8pz/botones_logos3.png[/img]

User avatar
nilsonmorales
Posts: 972
Joined: Fri 15 Apr 2011, 14:39
Location: El Salvador

#6 Post by nilsonmorales »

He hecho algunas modificaciones a /etc/init.d/openvpn
parche-openvpn.patch
1c1
< #!/bin/sh
---
> #!/bin/sh
4a5
> # 5 julio 2016 editado para eliminar el pid
11a13,16
> #pid
> pid=$piddir/*.pid
>
> modprobe tun
22d26
< rm -rf $piddir/*
25,26c29,30
< echo -e "\t$openvpn $confdir/$conf"
< $openvpn --writepid /var/run/openvpn/`echo $conf | cut -d. -f1`.pid --daemon --config $conf
---
> echo -e "\t$openvpn $confdir/$conf"
> $openvpn --writepid /var/run/openvpn/`echo $conf | cut -d. -f1`.pid --daemon --config $conf
33c37
< ls *.pid &>/dev/null
---
> ls *.pid &>/dev/null
35c39
< echo "No openvpn process is running."
---
> echo "No openvpn process is running."
37,39c41,43
< for process in `ls *.pid` ; do
< echo Process `cat $process` is running...
< done
---
> for process in `ls *.pid` ; do
> echo Process `cat $process` is running...
> done
44a49
> [ -f $pid ]
46,48c51,53
< killall -TERM openvpn &>/dev/null
< rm -rf $piddir/*
< return 0
---
> rm -rf $pid
> pkill -9 openvpn &>/dev/null
> return 0
56c61
<
---
>
59,60c64,65
< openvpn_start
< ;;
---
> openvpn_start
> ;;
62,63c67,68
< openvpn_status
< ;;
---
> openvpn_status
> ;;
65c70
< openvpn_stop
---
> openvpn_stop
68,69c73,74
< openvpn_restart
< ;;
---
> openvpn_restart
> ;;
71c76
< echo "usage $0 start|stop|restart"
---
> echo "usage $0 start|stop|restart|status"
EL parche ya esta aplicado en el paquete-beta
[b][url=http://nilsonmorales.blogspot.com/]My blog |[/url][/b][b][url=https://github.com/woofshahenzup]| Github[/url][/b]
[img]https://i.postimg.cc/5tz5vrrX/imag018la6.gif[/img]
[img]http://s5.postimg.org/7h2fid8pz/botones_logos3.png[/img]

Post Reply