Translate

miércoles, marzo 30, 2016

Raspberry Pi – Sencillo Servidor VPN con PPTP

En este documento veremos de una forma muy sencilla cómo montar un servidor VPN en nuestra Raspberry Pi, será un servidor PPTP que será algo básico para conectarnos desde internet a nuestras casas/pequeños negocios, bastante útil sobre todo si disponemos de servicios a los que queremos acceder y no queremos dar un acceso público. Si no tenemos una IP pública fija, sería ideal combinarlo con el cliente NO-IP en nuestra Raspberry!!!

raspberry-vpn-bujarra
Así que siguiendo estos pocos pasos podremos acceder a nuestra casa o pequeño negocio, recordar que PPTP no es que sea lo más seguro, ya os mostraré en otro documento cómo montarlo con OpenVPN! Por ahora será suficiente para conectarnos a los recursos necesarios y no tener que exponerlos a internet, obviamente podremos configurar el cliente VPN en nuestros smartphones con Android, iPhone o iPad, así como en equipos con Windows, Linux, Mac…
sudo modprobe ppp-compress-18
Asi comprobamos si nuestro kernel soporta ppp-compress, si despues de ejecutarlo no hace nada
lo soporta.

install the PPTP server
sudo apt-get install pptpd
Lo primero de todo, necesitaremos habilitar el soporte MPPE, posteriormente instalamos el servidor de VPN para Raspbian, basado en PPTP.

sudo vim /etc/pptpd.conf
localip 192.168.1.100
remoteip 192.168.1.120-130
Editaremos el fichero de configuración ‘/etc/pptpd.conf’ e indicaremos en ‘localip’ la dirección IP local de la Raspberry Pi, en ‘remoteip’ el rango IP que dará a los clientes que se conecten a la VPN.

sudo vim /etc/ppp/pptpd-options
ms-dns 192.168.1.1
nobsdcomp
noipx
mtu 1490
mru 1490
Editamos el fichero ‘/etc/ppp/pptpd-options’ y añadimos el texto anterior, deberemos configurar el servidor DNS correcto, podría ser mismamente la IP del router, qeu hace de srv. dns pero también las de google( 8.8.8.8, 8.8.4.4) dependerá del escenario.

sudo vim /etc/ppp/chap-secrets
usuario[TAB]*[TAB]contraseña[TAB]*
Ahora creamos el usuario para acceder a la VPN, deberemos generar el contenido del fichero con el formato correcto y las tabulaciones apropiadas.

sudo service pptpd restart
Reiniciamos el servicio para que surtan efecto los cambios!

sudo vim /etc/sysctl.conf
net.ipv4.ip_forward=1
Deberemos permitir si es que nos interesa el redireccionamiento desde la Raspberry a otros equipos de la red, ya que si no, al conectarnos desde el exterior sólo podremos acceder a la Raspberry y no a los demás dispositivos de casa, descomentamos la línea anterior en el fichero ‘/etc/sysctl.conf’.

sudo sysctl -p

Para lanzar el servicio vpn PPTPD en el reinicio de nuestra raspi hay que lanzarlo en locar:
 sudo vim /etc/rc.local

Añadir debajo de los comentarios:
sudo service pptpd start

Guardar y reiniciar y listo! ya sólo nos quedaría abrir el puerto 1723 tcp en nuestro router hacía la IP que tenga nuestra querída Raspberry Pi.


Apuntes:


Si queremos usarlo poniendo con una  IP privada fija en nuestra Rasp:

 sudo vim  /etc/network/interfaces


#Configuramos la ip privada para ponerla fija 192.168.1.102

auto eth0 
iface eth0 inet static
address 192.168.1.100
netmask 255.255.255.0
gateway 192.168.1.1
dns-nameservers 192.168.1.1 8.8.8.8 8.8.4.4
allow-hotplug eth0
iface eth0 inet manual


Salvamos y paramos el servicio de dhcp
sudo service dhcpcd stop
systemctl disable dhcpcd
sudo update-rc.d dhcpcd disable
sudo service NetworkManager start






Lanzamos el servicio PPTPD para que se lance en el arranque

sudo update-rc.d  pptpd defaults

Reiniciamos:
sudo reboot

Y comprobamos que tenemos pptpd lanzado:








Fácilmente podremos configurar por ejemplo el cliente de la VPN en iOS, desde “Ajustes” > “General” > “VPN” > “Añadir configuración VPN…” > Seleccionamos ‘PPTP’, en ‘Servidor’ pondremos la IP pública de nuestra casa o el nombre de NO-IP que tengamos, en ‘Cuenta’ el usuario creado para la VPN, en ‘Contraseña’ su password, y por defecto dejamos lo demás como está y debería conectarnos sin problemas!!!

domingo, marzo 06, 2016

Iniciarse en domotica casera, Raspberry Pi y Z-WAVE, Parte IV: ImperiHome, App para controlar DomoticZ en nuestros Smartphones

ImperiHome


Imperihome es una aplicación de teléfono inteligente que integra de forma nativa con varios sistemas domoticz. Una API genérica se ha hecho disponible para otros sistemas que se integran con él.
Los procedimientos siguientes se hacen para proporcionar una puerta de enlace que permita a un usuario utilizar la aplicación de teléfono inteligente con Domoticz.
La puerta de enlace actuará como una interfaz entre domoticz y Imperihome, de modo que Imperihome puede interactuar con la puerta de enlace, que a cambio interactuar con Domoticz.
Habrá un cliente (ImperiHome), una puerta de enlace protocolar (La puerta de enlace a continuación) y el servidor (Domoticz). La puerta de entrada será un servidor REST / Web con su propia IP: puerto para ser elegido y sea diferente de Domoticz si se ejecuta en el mismo servidor.

Imperihome screen 1

Imperihome screen 2

Caracteristicas

  • todos los interruptores (pero no el brazo, sin ACK como no disponibles en DZ)
  • todos los sensores de temperatura / humedad / tiempo / UV / presión
  • todos los servicios públicos
  • todas las escenas
  • las habitaciones han sido asignadas a las pestañas DZ para más claridad
  • punto de ajuste del termostato básica como en DZ

Qué hacer

  • curvas de uso completo de Imperihome
  • La gestión de varias cámaras
  • RGB

Solución de problemas generales

*Recordar que que las secuencias de comandos de Unix necesitan el derecho de ejecución y lectura.
*Recordar que un script se inicia en el primer lugar con el camino intérprete, línea sin ningún espacio que debería ser para Perl: #!/usr /bin/perl
Si ejecuta la puerta de enlace en un servidor diferente que domoticz, añadirlo en la configuraciónde modo que  no requerirá de usuario / contraseña.


Arquitectura

Imperihome.png

Descargando el código

cd ~/domoticz/
git clone https://github.com/empierre/MyDomoAtHome MyDomoAtHome
cd MyDomoAtHome
cp config.yml.def config.yml

Configurando la app

La url 
The La url debe ser configurada para su sistema domoticz dirección/puerto (sustituye 192.168.0.24 por su IP and 8080 por su puerto):
  • config.yml
También editar  MyDomoAtHome.sh y cambia la linea 20 del path de tu instalación, y despues ejecutar este script para instalar dependencias e instalar el servicio en el arranque del sistema operativo. Este paso no es necesario en una instalación de Raspberry 
sh ./run-once.sh
Si queremos cambiar el puerto predeterminado (3001) hacerlo en MyDomoAtHome.sh
.

Lanzando el servicio

Para lanzar el servicio:
   sudo service MyDomoAtHome.sh start
Parar el servicio :
   sudo service MyDomoAtHome.sh stop
Reiniciar el servicio :
   sudo service MyDomoAtHome.sh reload

Como comprobar que la instalación es correcta

Ir a la siguiente url:
http://gateway_ip:gateway_port/devices
Si el resultado no muestra los dispositivos, por favor recuerde que debe permitir el acceso sin contraseña a la puerta de enlace IP dentro de los ajustes Domoticz.:
http://domoticz_ip:domoticz_port/json.htm?type=devices&filter=all&used=true&order=Name  
http://domoticz_ip:domoticz_port/json.htm?type=scenes
http://domoticz_ip:domoticz_port/json.htm?type=cameras    (for this one, please change login/pass if any... don't post it as it on public forum...)

En la primera url obtendrá lo que verá, en el segundo los que proporciona Domoticz. 

 Ahora podemos configurar la App ImperiHome

Podemos añadir un dispositivo con la aplicación ImperiHome :
  • Ir a parameters / My Systems / Add a system
  • selecionar Imperihome Standard System
  • Escribir en "your gateway base url tu_ip:port  después next y ya está !

Actualizar la verson

Ejecutar desde el directorio de MyDomoAtHome :
 sh ./update-mdah.sh  

 Acceder desde fuera de nuestra red (nternet)

La mejor forma de hacerlo es configurar nginx entre domoticz y la puerta de enlace: http://www.domoticz.com/wiki/Secure_Remote_Access
En la configuración domoticz añadir una sección para redirigir a la puerta de enlace como este (cambiar su ip a continuación), y crear un Htpasswd para ambos (usando htpasswd del paquete apache2-utils = & gt; htpasswd -c .htaccess yourusername YourPassword)
      location /iss/ {
       proxy_pass http://192.168.0.28:3001/;
       auth_basic            "Access Restricted";
       auth_basic_user_file  "/etc/nginx/.htpasswd";
       access_log /var/log/nginx/domoticz.access.log;
       error_log /var/log/nginx/domoticz.error.log;
      }