【发布时间】:2017-10-19 15:26:20
【问题描述】:
我目前在客户端有一个 Firebird 2.5 数据库,安装在 Windows 7 Pro 机器(32 位)上,其本地网络中有多个可以连接到数据库的站点,并且本地机器能够连接我们的应用程序和 IBExpert。
但是,对于我们的某些软件包,需要远程连接(本地网络之外)。这以前有效,但不再有效。
当我从我的办公室(我位于不同的城市/不同的网络)连接 FlameRobin 时,我收到以下错误消息:
IBPP::SQLException
Context: Database::Connect
Message: isc_attach_database failed
SQL Message: -923
Connection not established
Engine Code : 335544421
Engine Message :
connection rejected by remote interface.
从我的办公室和其他外部网络尝试与 IBExpert 的连接尝试失败并显示相同的消息。
但是,我可以看到 TCP/IP 通信。以下是我上周的故障排除步骤的详细信息:
-
最初,我在从网络外部连接时收到以下错误:
"连接未建立
远程接口拒绝连接"
从那时起,我们重新启动了路由器,现在“连接被远程接口拒绝”。错误信息。
我可以从办公室和其他外部网络通过端口 3050 远程登录到公共 IP。
我在 YouGetSignal.com 或 CanYouSeeMe.org 等网站上测试了端口 3050,它们显示为打开。
我们公开通信的其他端口是开放和通信的。
该站点安装了 Kaspersky 防病毒软件,但在 Kaspersky 处于睡眠模式时通过 IBExpert 进行连接的所有测试表现相同。
将 Firebird 2.5 安装到同一本地网络中的另一个工作站,指向端口 3051(在 Firebird.conf 和 Windows 防火墙和路由器中)显示为通过 Telnet 和 CanYouSeeMe.org 打开但再次,无法通过端口 3051 从外部进行通信。
IBExpert 从网络中的工作站工作到服务器
服务器当前在 Firebird.conf 中没有 RemoteBindAddress 条目
Wireshark 显示,当从外部连接时,有数据包通过。
-
IBexpert 中的通信诊断下的 TCP/IP 测试以公共 IP 作为主机和服务显示以下测试结果:
尝试连接到 XX.YY.ZZ.AAA。
已获得连接的套接字。
在端口“3050”找到服务“GDS_DB”
与主机“XX.YY.ZZ.AAA”建立连接,
在 3050 端口上。
TCP/IP 通信测试通过!
数据库路径、用户名和密码都检查了多次。
在服务器本地,我已将 database.FDB 和 security2.FDB 的安全性更改为所有人,完全控制
此时,我们计划重启 ISP 的调制解调器,尽管我们通过端口进行了完整的 TCP/IP 通信这一事实让我怀疑这是否是问题所在。
如果有人能引导我完成任何建议的后续调试步骤或任何可在这种情况下提供帮助的工具,我将不胜感激。
【问题讨论】:
-
也许以下喜欢我的帮助。 stackoverflow.com/questions/745494/… 该链接说明您的远程客户端中的客户端 dll 可能已损坏。 HTH
-
看起来在公共 IP 端口 3050 上侦听的任何东西都不是 Firebird。不管有什么。也许有一些 TCP 代理,它必须将您的传入连接路由到 LAN 中的某个固定服务器 - 并且该内部服务器已关闭,或者其他什么。我认为客户必须连接他的网络,看看当你尝试连接时他们到底会发生什么。此外,让FB不受控制地发布到公共网络可能不是最好的主意。尝试使用 Zebedee 或 OpenVPN 或类似的东西在您的站点和客户端的 LAN 之间建立一个加密隧道,然后从内部连接
-
@EdMendez 这个问题(及其解决方案)对我来说听起来像是一个非常罕见的边缘案例。这里的问题似乎更多的是网络配置、路由、防火墙等。
-
如果在网络中的随机工作站上打开一个端口(您的“端口 3051”示例)将使该计算机上的该端口可以从该网络外部公开访问,而无需任何明确的网关或防火墙上的配置。您甚至没有提供足够的信息来开始对此进行故障排除。
-
@MarkRotteveel,我的端口 3051 示例已缩短,但为了清楚起见,我在网络中的工作站上执行了标准 2.5 安装,我停止了 Firebird 并将 Firebird.conf RemoteServicePort 值更改为端口 3051,添加在 Windows 防火墙中排除端口 3051 的防火墙,通过 IBExpert 确认从有问题的服务器到本地 IP 和自定义 3051 端口的连接,然后将端口转发到工作站 IP 到 3051 端口。行为是相同的。
标签: database-connection firebird