martes, 17 de enero de 2017

No puedo acceder remotamente a mi aplicación | Algunas soluciones comunes

Antes de nada, esto no vale para todos y cada uno de los problemas que se puedan afrontar tras una instalación (supuestamente) exitosa, pero ayuda a en muchos casos.

Escenario:

He instalado x aplicación, la cual tiene un interfaz de administración web, en mi Raspberry Pi.
Puedo acceder por SSH a la Pi y al interfaz web desde ella, pero desde otro equipo en la misma red, no.

Comandos útiles para comprobaciones:

netstat -punta | grep LISTEN #localmente
netstat -punta | grep miaplicacion
nmap -p80 dirección.ip.raspberry #desde el exterior


Troubleshooting:

Puesto que podemos hacer SSH a la Pi, nuestro abanico de posibles problemas se cierra bastante y nos quedamos con problemas de firewall, iptables, selinux o errores de configuración.

Firewall

Por defecto viene deshabilitado en las Pi, así que, a no ser que hayamos configurado nosotros uno, nos olvidamos. En caso de haber instalado uno, comprueba que acepta conexiones desde el exterior o, al menos, la misma red.

Iptables

Solución rápida; borrar nuestra configuración:

iptables -F


Solución menos rápida, comprobar la configuración y hacer los ajustes necesarios, en caso de ver algún error:

iptables -L #Configuración actual

iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT #Abrir puerto TCP 80 (ejemplo)


Un poco de ayuda con el tema de Iptables -> https://help.ubuntu.com/community/IptablesHowTo

Selinux (desgraciado...)

En caso de que no esté ya, lo deshabilitamos:

vi /etc/selinux/config #la ruta puede variar un poco dependiendo de vuestro OS

Cambiamos
SELINUX=permissive
por
SELINUX=disabled
sestatus #comprobamos que, en efecto, lo hemos deshabilitado


Errores de configuración

Si has llegado a este punto, es porque todo lo anterior ha fallado y sigues sin poder acceder a tu aplicación. En ese caso, solo nos queda lidiar con los ficheros de configuración de dicha aplicación
(y su manual) para comprobar que no hay ninguna opción que impida aceptar tráfico desde el exterior. Una opción común de este tipo hace referencia a algo como LISTEN, NETWORK INTERFACES seguido de una dirección de red (en caso de ser 127.0.0.1, habría que cambiarla por la de nuestra red o 0.0.0.0 para aceptar tráfico desde cualquier parte).