Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   Mi B.D. No se conecta externamente (https://www.clubdelphi.com/foros/showthread.php?t=95791)

José Luis Garcí 17-08-2022 18:00:17

Mi B.D. No se conecta externamente
 
Buenas tardes, hace mucho que no me ponía a programar con mi querido Delphi, y ahora lo hago por que la asociación con la que llevo muchos años, tiene necesidades nuevas y la verdad es que me estoy volviendo loco con ello.
El problema es que necesitan que la B.D. este en un equipo fijo encendido y desde cualquier punto poder acceder a los datos, el tema es que he hecho lo siguiente con un equipo de casa, ya que aún no está el equipo donde se quiere montar este servidor.
  • En mi equipo he asignado una ip fija por ejemplo 192.168.25.58
  • He abierto el puerto 3050 del rúter
  • He configurado el firewall de este equipo para el mismo puerto
  • la conexión que hago es de la siguiente forma 192.168.25.58:C\AHINOR\AHINOR.FDB

Si lo hago desde mi casa de un equipo a otro, o a través de la wifi, conecta perfectamente, pero en cuanto lo hago desde otro rúter, no hay manera, me asigna un fallo de conexión y la verdad es que no se cual es el fallo

Uso un IBDatabase, un IBTrasanction y ibdataset como base de datos y el código para conectarme externamente es el siguiente

Código Delphi [-]
begin
   try
     IBD.DatabaseName:='192.168.25.58:C:\AHINOR\AHINOR.FDB';
     ShowMessage(IBD.DatabaseName); //Para ver la ruta de conexión
     IBD.Connected:=True; //Ibdtaabase
     IBT.Active:=True;//ibdtransaction
    //IBDataSet1.Active:=True;
     Label1.Visible:=True;
     Label1.Font.Color:=clLime;
     Label1.Caption:='B.D. conectada';
     ComboBox1.Items.Clear;      // Tablas de la base de datos
     ComboBox1.Items:=GetTableNames(IBD);
   except
     on E: Exception do
     begin
       Label1.Visible:=True;
       Label1.Font.Color:=clMaroon;
       Label1.Caption:='B.D. No conectada';
       ShowMessage('No se ha podido Conectar'+#13+#10+'Fallo: '+#13+#10+e.Message);
     end;
   end;
end;

Estoy probándolo en la versión Comunity edition de Delphi 10.4

Por cierto también he probado con la conexión de la siguiente forma 192.168.25.58/3050:C:\AHINOR\AHINOR.FDB, y dentro del mismo rutér bien, pero desde fura no hay manera, y es un coñazo tener que desplazarme cada dos por tres para hacer las pruebas

Como siempre os doy las gracias de antemano, espero me podáis ayudar a ver por donde está el fallo y si existe alguna manera de probarlo dentro de mi red como si fuese dos redes diferentes, para no tener que estar subiendo a la sede que esta bastante lejos de donde vivo ahora.

Un saludo y gracias

José Luis Garcí 17-08-2022 18:01:49

Por cierto el motor es el de Firebird 2.5(1) si no recuerdo mal

mamcx 17-08-2022 18:17:04

192.168.25.58 es una IP interna/privada:

https://www.ipaddresslocation.org/cidr/ip-ranges.php

Lo que significa que no es para acceder "remotamente" por internet, si no a los equipos "locales" de tu red.

Necesitas es una IP publica. Pero, el problema es que esa IP publica la requieres que sea "fija". Si tienes un plan de internet donde esta el servidor tienes que mirar si esta esa opción, contratarla o usar un VPN, que en otras palabras seria mejor, si tienes total control sobre la cantidad de equipos a conectar y este no es una app general para el publico.

La mejor VPN para usar hoy es https://www.wireguard.com o usar https://tailscale.com que es una version comercial con una capa gratuita y muy simple de usar y te sirve para chequear el asunto.

Otra opción es contratar una maquina virtual "en la nube" y asi tienes un servidor remoto con una IP publica que ademas le puedes poner un DNS.

José Luis Garcí 17-08-2022 18:23:03

Gracias lo estudiare, te lo aseguro, pero en gran parte voy perdido, ya que siempre he programado para local y hace años para redes privadas, pero mirare lo de la red pública.
Nuevamente muchas gracias.

Casimiro Notevi 17-08-2022 21:55:08

Básicamente, los clientes deben conectar a la IP pública del servidor. Y en el router donde está el servidor debes redireccionar el puerto 3050 a la IP local del mismo.

MAXIUM 18-08-2022 05:23:35

Comunity edition de Delphi 10.4 Dice que las conexiones a bases de datos por Firedac, solo puede ser en forma local.

No se si local se refiere al mismo equipo donde se ejecuta la aplicación o dentro de la red local..

Casimiro Notevi 18-08-2022 11:08:40

No me había fijado, pero sí, la Community tiene "capada" muchas características de uso de base de datos.

José Luis Garcí 13-09-2022 12:26:01

Buenos días, perdonar que no contestase antes, al final opte por usar DuckDNS ( https://www.duckdns.org/ ), y la verdad es que va fenomenal, no es para uso definitivo, pero si me permite hacer las pruebas que quiero y de momento bien.
Lo único es que me he dado cuenta que como también trabajamos en red privada a la vez, al conectar he tenido que poner un selector , para que elijan si es conexión por red interna o externa.

Muchas gracias como siempre.

En cuanto a las limitaciones de la versión cumunity, las solvente usando directamente los componentes IBX y no por Firedac. Y uso está versión, ya que mi Delphi 10 no me dejan instalarlo nuevamente y la gente de Danisoft dice que ya lo he instalado demasiadas veces. Por eso odio el software con licencias en red, que tendrá que ver si lo instalo 1 o 1000 veces si son todos equipos míos. Déjemelos que lo que quieren es sacarme unos miles de euros que ni puedo ni quiero pagar, ya que aún programo a la antigua usanza y siempre para mi, para la asociación de la que soy miembro, etc. Y no para ganar dinero.

Casimiro Notevi 13-09-2022 14:10:03

^\||/^\||/^\||/

duckdns es el que uso para conectar externamente con mi raspberry.


La franja horaria es GMT +2. Ahora son las 19:59:33.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi