Usando Firebird con WiFi

2 comentarios

En esta época es muy común que haya conexiones WiFi en todas partes, tanto en los hogares como  en las oficinas e inclusive en lugares públicos. Entonces la pregunta es: ¿qué tan eficiente es usar Firebird con WiFi?

Primero, hay que decir que es perfectamente posible pero … pueden ocurrir problemas. Veamos:

Pérdidas de señal

En una red WiFi casi siempre en un momento o en otro ocurren pérdidas de señales, si haces una búsqueda con Google verás que hay millones de personas quejándose de eso. La culpa de la pérdida de señal puede ser del hardware o del software. Pero vayamos a lo nuestro:

El Servidor del Firebird no sabe si te has conectado a la Base de Datos por medio de una red cableada o por medio de WiFi. Eso implica que lo importante es la calidad de tu red, no de si es cableada o WiFi.

Si la culpa de la pérdida de señal es del hardware, entonces hay que reemplazarlo. No pretendas conectar a ochopotocientas computadoras con un router WiFi barato, de esos que cuestan casi lo mismo que una docena de caramelos. Si la conexión será por WiFi entonces el router debe ser de una marca bien conocida, de muy buena calidad. Esto se lo debes aclarar muy bien a tu cliente, y por escrito, para que luego no te echen la culpa de la lentitud o del tiempo perdido. Desde luego que esto se aplica a todo tipo de redes, sean cableadas o WiFi: si tu cliente quiere buena velocidad entonces debe invertir en hardware de buena calidad, no puedes garantizar ni velocidad ni confiabilidad si no es así. Aunque en una red cableada con hardware de mala calidad podrías obtener un resultado aceptable con redes WiFi nunca es así: hardware malo implica rendimientos miserables con bases de datos.

Si la culpa de la pérdida de señal es del software entonces eso significa que no está bien configurado. Y aquí hay varios puntos que tener en cuenta:

  1. El Windows puede desconectarse del router para ahorrar energía. Puedes verificarlo entrando en Panel de Control | Administrador de dispositivos | Adaptadores de red | Nombre_de_tu_router | Propiedades | Administración de energía. Si está marcada la opción “Permitir que el equipo apague este dispositivo para ahorrar energía”, quítale la marca.
  2. En el archivo FIREBIRD.CONF que se encuentra en la carpeta donde instalaste el Firebird hay una entrada llamada DummyPacketInterval que sirve para indicarle al Servidor del Firebird cuantos segundos debe esperar antes de enviarle un paquete vacío de reconocimiento al Cliente. ¿Qué significa esto? Que si el Cliente no está enviando solicitudes al Servidor (un comando INSERT, UPDATE, DELETE, SELECT, etc., por ejemplo) el Servidor no puede saber si el Cliente continúa conectado o si se ha desconectado. La forma de verificar que continúa conectado es enviándole un paquete vacío que solamente sirve para reconocimiento. Si el Cliente le envía una respuesta al Servidor entonces el Servidor sabe que el Cliente continúa conectado. Si el Cliente no le envía una respuesta entonces evidentemente se murió la conexión. La entrada DummyPacketInterval sirve justamente para eso: para decirle al Servidor cada cuantos segundos debe verificar que el Cliente está conectado.
  3. En el punto 1. hemos visto como pedirle al Servidor que verifique la conexión pero … ¿y si queremos que sea el Cliente quien la verifique? Esto siempre es importante, antes de enviarle un comando (INSERT, UPDATE, DELETE, SELECT, EXECUTE PROCEDURE, etc.) al Servidor queremos verificar que hay una conexión activa. La forma más sencilla y rápida de conseguirlo es pidiéndole al Servidor que nos devuelva algún dato, por ejemplo la fecha de hoy. Para ello le podemos enviar un comando como: SELECT CURRENT_DATE FROM RDB$DATABASE y si como resultado obtenemos una fecha entonces estamos seguros de que la conexión está activa (se le dice “viva” en muchos documentos sobre redes). El Cliente solamente necesita saber si la conexión está activa cuando envía una solicitud, para que ésta no rebote; en los demás momentos no le importa.
  4. El Windows puede ayudarnos a mantener la conexión activa. Si se lo pedimos puede enviar paquetes de reconocimiento cada “x” segundos. Los datos en el protocolo TCP/IP viajan en grupos conocidos como paquetes, los cuales están compuestos por una cabecera, los datos del usuario, y la cola. Si en un paquete no se envían datos del usuario entonces puede usarse para saber si una conexión está activa o no. IMPORTANTE: Estas instrucciones son solamente para usuarios avanzados, si no es tu caso ni lo intentes o podrías dejar a tu Windows inservible. No lo olvides: no lo intentes si no sabes muy bien lo que estás haciendo. El Windows viene con un programa llamado REGEDIT el cual nos permite modificar el Registro, también podríamos modificarlo con un archivo que tenga la extensión .REG o con algunos otros programas utilitarios. En el Registro del Windows hay una clave llamada “Parameters” que encontrarás en HKEY_LOCAL_MACHINE | System | CurrentControlSet | Services | Tcpip. A esa clave le puedes agregar los siguientes valores DWORD: KeepAliveInterval, que determina la frecuencia con la cual el Windows repite transmisiones “keepalive” (mantener viva) cuando no recibe respuesta, puedes ponerle 1, lo cual significa que enviará paquetes cada 1 segundo; KeepAliveTime, que determina los segundos que esperará el Windows desde que se terminó la última conexión o intento de reconocimiento para enviar reconocimiento, si por ejemplo le pones 60 eso significa que esperará que hayan transcurrido 60 segundos después de la última conexión o intento de reconocimiento antes de verificar si está activa; TcpMaxDataRetransmissiones, que determina cuantas veces como máximo se enviará un paquete antes de decidir que la conexión está muerta, su valor por defecto es de 5.

Múltiples dispositivos usando la red WiFi

Además del problema que podemos tener con las pérdidas de señal hay otro problema que inclusive puede llegar a ser peor: los usuarios querrán usar la red WiFi para conectar no solamente las computadoras que accederán a las bases de datos sino también tabletas, teléfonos celulares smart, televisores smart, relojes smart, y cualquier otro dispositivo habido o por haber que pueda conectarse a una red WiFi.

Entonces, no podrás evitar que a algún “genio” se le ocurra ver una película on-line mientras otros usuarios necesitan una red rápida. Es muy difícil evitar esas conexiones piratas y siempre tendrán algún muy buen motivo para hacerlas … y lo que conseguirán será que los tiempos de respuesta de las solicitudes a las bases de datos sean paupérrimos.

Conclusión:

 Es posible conectarse a bases de datos de Firebird a través de redes WiFi, pero si se desea un buen tiempo de respuesta el hardware debe ser de buena calidad y el software debe estar bien configurado.

Sin embargo, una buena red cableada siempre será mejor que una buena red WiFi.

Para deslindar responsabilidades siempre es una muy buena idea hacerle firmar un documento a tu cliente que diga algo como: “Para trabajar con bases de datos son preferibles las redes cableadas, las redes WiFi solamente tienen un buen desempeño cuando el hardware es de muy buena calidad y el software está correctamente configurado, en otro caso es una mala opción usarlas. Pero aún con una buena red WiFi siempre la red cableada será más rápida y más confiable. Mi recomendación por lo tanto es usar una red cableada.”

Artículos relacionados:

El índice del blog Firebird21

El foro del blog Firebird21

 

Anuncios

Proteger a las Bases de Datos visibles en Internet

9 comentarios

En ocasiones necesitas que tu Base de Datos pueda ser accedida desde Internet, generalmente a los usuarios les gusta tener esa opción: poder conectarse usando su notebook, su tableta, su teléfono celular o estando en un cybercafé es muy atractivo a simple vista.

Sin embargo como profesional informático debes saber que cualquier Base de Datos que no esté lo suficientemente protegida está en grave riesgo y puede ser atacada por los hackers. Una IP pública sin protección es una invitación para que cualquier malhechor intente el acceso.

cyberattack

Dos computadoras que se encuentran en Internet generalmente no tienen un comunicación directa entre ellas sino que la comunicación va pasando de servidor a servidor hasta llegar a su destino. A esas computadoras intermedias se las llama “nodos” y en algunos casos podría haber decenas de nodos entre ambas. Como se ve en el gráfico superior, para ir desde “A” hasta “B” se requiere pasar por varios nodos. ¿Y cuál es el problema? que cualquiera de esos nodos puede interceptar los datos que pasan por él y enterarse de todo.

Los hackers utilizan programas que les permiten revisar en cuestión de minutos todas las IP que se encuentran en un rango. Por ejemplo, podrían buscar todas las IP públicas que se encuentren activas entre 200.120.60.0 y 200.120.90.255 y eso solamente les tomará unos cuantos minutos. Anotan los números de las que están activas e intentan realizar la conexión. Para eso también tienen programas que les facilitan la tarea.

Y si la IP donde se encuentra tu Base de Datos está dentro del rango en el cual algún hacker está buscando, estás corriendo un riesgo gravísimo. Y no te olvides que en el mundo hay cientos de miles de hackers y muchísimos de ellos están “trabajando” en este mismo momento.

Para que tu conexión sea segura y sin riesgos (o con un riesgo pequeñisimo) lo que necesitas es un túnel privado de conexión.

¿Qué es un túnel privado?

Es una comunicación que se realiza entre dos computadoras. La computadora que envía los datos los encripta y los comprime, la computadora que recibe los datos los descomprime y los desencripta.

VPN

Esto se realiza a través de una VPN (Virtual Private Network) o red privada virtual. Se le dice virtual porque usa la misma conexión de Internet, no una conexión propia con cables propios sino un programa que se encarga de realizar la tarea. Y se le dice privada porque solamente quienes conozcan las contraseñas podrán conectarse a esta red y la información siempre viajará encriptada, por lo cual aunque sea interceptada no hay riesgo de que sea fácilmente leída.

Dos programas que se usan mucho para crear y usar los túneles son ZebeDee y OpenVPN, cuyos enlaces son:

http://www.winton.org.uk/zebedee/

http://openvpn.net/

Como los datos viajan encriptados:

  • el riesgo de ser leídos por personas no autorizadas disminuye muchísimo
  • el viaje es más rápido porque la cantidad de datos que viajan es menor

Conclusión:

Si tu Base de Datos será accedida desde Internet debes protegerla con una VPN (red privada virtual) o de lo contrario estará muy expuesta a ser atacada por los hackers. Y aunque tú creas que no hay en ella nada importante los hackers podrían destruirla y corromperla o llenarla de basura con todos los perjuicios que dichas acciones causarían (podrían hacer eso sólo por maldad, porque quieren y pueden hacerlo). Usando una VPN obtendrás dos beneficios: que el riesgo de ser atacada disminuya muchísimo y que las velocidades de las operaciones aumenten mucho.

La gran mayoría de los hackers desiste de atacar las computadoras o bases de datos que están muy protegidas, salvo que crean que obtener éxito les resultará de mucho provecho. Por lo tanto, cuanto más protejas a tus bases de datos, mucho mejor.

Artículos relacionados:

Usando Zebedee con Firebird

Usando Zebedee con Firebird. Parte 2

El índice del blog Firebird21