Problema: quiero acceder desde casa a mi pc del curro que esta detrás de un firewall y por tanto no puedo conectar de ninguna manera. ¿comorl?
Primero intente crear en mi pc de casa un servidor openvpn y el pc del curro que fuera un cliente de la vpn, de manera que si dejo el pc de casa abierto, el del curro se conecta y ya tengo la vpn. Funcionó bien hasta que por algun motivo el openvpn no se reconectaba....
Solución más fácil: SSH
Primero intente crear en mi pc de casa un servidor openvpn y el pc del curro que fuera un cliente de la vpn, de manera que si dejo el pc de casa abierto, el del curro se conecta y ya tengo la vpn. Funcionó bien hasta que por algun motivo el openvpn no se reconectaba....
Solución más fácil: SSH
- en el sshd_config activar la directiva PermitTunnel yes (el las 2 maquinas)
- crear claves para poder acceder por ssh sin contraseña
- acceder desde el curro a casa: ssh -w 0:1 root@micasa -N &. Esto hace que en el curro tenga la interfaz tun0 y en casa la tun1 que permita crear un tunnel
- configurar las interfaces. En el curro: ifconfig tun0 10.0.0.1 netmask 255.255.255.252 y en casa (desde el curro): ssh root@micasa 'ifconfig tun1 10.0.0.2 netmask 255.255.255.252'
- en ssh_config activar la directiva ServerAliveInterval 15 y ServerAliveCountMax 4 para mantener la conexión viva
#!/bin/bash HOST=micasa.com PIDFILE=/var/run/vpn.pid TMP=/tmp/vpn.log # Funcion para mirar si hay connectividad al ssh de casa function homeReachable() { nc -w 2 $HOST 22 if [ $? -eq 0 ]; then echo "Conectividad.... OK" >> $TMP REACH=0 else echo "Conectividad.... FALLA" >> $TMP REACH=1 fi } # Funcio para mirar si existe tunnel o ha muerto function is_there_a_tunnel() { local exist=$(ps ax | grep $HOST | wc -l) if [ $exist -le 1 ]; then echo "Tunnel.... DOWN" >> $TMP rm -f $PIDFILE else echo "Tunnel.... UP" >> $TMP fi } echo "---- START ----------------" >> $TMP ## Primero miramos si tenemos algun tunel levantado ## y si es que no eliminamos el pidfile is_there_a_tunnel ## Ahora miramos si tenemos connectividad ## Si hay y tenemos tunel = nothing ## Si hay y no temeos tunel = crear tunnel y config ## Si no hay = matar proceso i eliminar pidfile homeReachable if [ $REACH -eq 0 ]; then if [ -e $PIDFILE ]; then echo "funcionando..." >> $TMP else # creamos el tunel nohup ssh -w 0:1 root@$HOST & echo $! > $PIDFILE sleep 5 # configuramos el tunnel a los 2 extremos ssh root@$HOST 'ifconfig tun1 10.0.0.2 netmask 255.255.255.252' /sbin/ifconfig tun0 10.0.0.1 netmask 255.255.255.252 echo " Tunel creado" >> $TMP fi else if [ -e $PIDFILE ]; then kill -9 `cat $PIDFILE` rm -f $PIDFILE fi fi echo "------ END ----------------" >> $TMP echo "" >> $TMP
.
Comentarios